OpenCV3与深度学习实例:Dlib+VGG Face实现两张脸部图像相似度比较

Stella981
• 阅读 586

实现思路:

1、使用Dlib识别并提取脸部图像

2、使用VGG Face模型提取脸部特征

3、使用余弦相似度算法比较两张脸部图像的特征

代码如下:

import time
import numpy as np
import sklearn
import sklearn.metrics.pairwise as pw
import cv2
import dlib

prototxt = 'datas/models/caffe/vgg-face/vgg_face_caffe/vgg_face_caffe/VGG_FACE_deploy.prototxt'
caffemodel = 'datas/models/caffe/vgg-face/vgg_face_caffe/vgg_face_caffe/VGG_FACE.caffemodel'
dlib_model = 'datas/models/dlib/shape_predictor_68_face_landmarks.dat'
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor(dlib_model)
net = cv2.dnn.readNetFromCaffe(prototxt, caffemodel)

faces1 = get_faces('datas/images/face-tests/fanbb/f16.jpg')
faces2 = get_faces('datas/images/faces/fanbb.jpg')
for i,face in enumerate(faces1):
    cv2.imshow('face1_%d' % i,face)

for i,face in enumerate(faces2):
    cv2.imshow('face2_%d' % i,face)

face_1 = faces1[0]
face_2 = faces2[0]

result = compare_faces(face_1,face_2)
print('prob of similarity:',result)
cv2.waitKey()
cv2.destroyAllWindows()

OpenCV3与深度学习实例:Dlib+VGG Face实现两张脸部图像相似度比较 OpenCV3与深度学习实例:Dlib+VGG Face实现两张脸部图像相似度比较 OpenCV3与深度学习实例:Dlib+VGG Face实现两张脸部图像相似度比较 OpenCV3与深度学习实例:Dlib+VGG Face实现两张脸部图像相似度比较

第一张图像与第二张图像人脸的相似度为:0.8697828

第一张图像与第三张图像人脸的相似度为:0.998867

第一张图像与第四张图像人脸的相似度为:0.00211427

以上测试图像来源网络,仅作程序演示使用,如有侵权,请告知删除。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
2年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Pytorch构建栈式自编码器实现以图搜图任务(以cifar10做数据集)
(Pytorch构建栈式自编码器实现以图搜图任务)本文旨在使用CIFAR10数据集,构建与训练栈式自编码器,提取数据集中图像的特征;基于所提取的特征完成CIFAR10中任意图像的检索任务并展示效果。搞清楚pytorch与tensorflow区别pytorchpytorch是一种python科学计算框架作用:无缝替换numpy,通过G
Java修道之路,问鼎巅峰,我辈代码修仙法力齐天
<center<fontcolor00FF7Fsize5face"黑体"代码尽头谁为峰,一见秃头道成空。</font<center<fontcolor00FF00size5face"黑体"编程修真路破折,一步一劫渡飞升。</font众所周知,编程修真有八大境界:1.Javase练气筑基2.数据库结丹3.web前端元婴4.Jav
Stella981 Stella981
2年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
四儿 四儿
11个月前
人脸识别技术的精度提高及其应用
人脸识别技术是一种重要的生物识别技术,广泛应用于安全防护、金融支付、门禁系统等领域。为了提高人脸识别技术的精度,研究人员采用了多种方法,如深度学习、特征提取、图像处理等。其中,深度学习的方法在人脸识别领域取得了很好的效果。通过训练大量的图像数据,深度学习模
四儿 四儿
10个月前
面部表情识别的技术实现
面部表情识别是一项复杂的技术,需要综合运用计算机视觉、机器学习、深度学习等多种技术。本文将介绍面部表情识别的技术实现过程,包括图像采集、预处理、特征提取、分类识别等方面。首先,在进行面部表情识别之前,需要采集面部图像作为输入数据。为了获得高质量的图像,需要
稚然 稚然
4个月前
千锋修海_人工智能OpenCV人脸识别开发
//下仔のke:https://yeziit.cn/14502/人脸识别是基于人的脸部特征信息进行身份识别的一种生物识别技术。通过摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别的一系列相关技术,通常也
灵吉菩萨 灵吉菩萨
2个月前
经典机器学习 :神经网络、反向传播算法以及正则化
深度学习是一种机器学习的分支,它使用具有多个中间层(隐藏层)的神经网络模型,通过大量的数据来训练模型,从而实现模式识别和特征提取的能力。深度学习的核心是神经网络的设计和优化。计算机视觉是通过计算机对图像和视频进行分析和理解的一门技术。它涉及到图像处理、模式