facenet 人脸识别 python tensorflow

分为人脸检测,人脸矫正,特征提取,特征比对得出阈值!
人脸检测有基于opencv自带的haar级联分类器人脸检测,dlib人脸检测,seetaface漏斗式人脸检测,于士琪人脸检测,mtcnn人脸检测,本文中选择mtcnn人脸检测,该算法在FDDB上测试取得较好的效果,优于前者几个算法。mtcnn是基于深度学习,卷积神经网络的人脸检测算法!
人脸矫正就是把歪的人脸扭正。这样有利于特征提取,在一定程度上可以提高识别率,本文通过mtcnn定位人脸并回归得到人脸五个点的坐标,两个眼睛坐标,鼻子坐标喝嘴巴两角坐标,通过五个坐标的位置,利用仿射变换算法,把人脸矫正!
特征提取,决定识别率的关键步骤,本文使用的是inception-resnet网络,inception网络是谷歌发布的网络,resnet网络是微软提出的网络,两者结合,组合成更优的网络,本文在vggface2训练集上训练预训练模型,在预训练模型的基础上,训练中国人的数据集,使得在亚洲人脸上有更好的识别效果,单纯的使用国外的数据集,在实测中或者测试中国人的数据集,效果很差,lfw是人脸识别的验证集,训练vggface2数据集时可以在lfw上验证准确率!
特征比对,上一步提取特征了,可以提取128维特征向量,两个人脸分别提取128维特征向量,听过计算两个特征向量的余弦距离或者欧式距离,得出两个特征向量的相似度即两个人脸的相似度,就可以判断两个人脸是否是同一个人了,余弦距离是两个向量间的角度,可以归一化到0到1,越接近1,表示两个人脸越相似,欧式距离表示两个向量空间的距离,两个向量空间距离越近,表示两个人越相似,最小值为0!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_18522785/article/details/106559871