发布时间:2018-01-10 16:23:20编辑:丝画阁阅读(1314)
人脸识别近来可以说是非常的热门,无论是iphonex的faceid人脸解锁、faceID支付等等,还是各种安防监控、人脸表情变换都用到了人脸识别的相关知识。这里介绍一个简单好用的人脸识别的python库--face_recognition,很多开源人脸相关好玩的项目都是以它为基础开发的。
代码网址为https://github.com/ageitgey/face_recognition,github已经有8300+的star和1600+的fork,发文时在所有仓库中排名854位。
face_recognition是基于dlib的深度学习人脸识别库,在LFW上的准确率达到了99.38%。
只需要编译好dlib(主要支持linux和macOS)后,通过pip install face_recognition来安装相关包,函数运行需要占用一定的GPU空间
face_recognition包括人脸检测、人脸关键点检测、人脸识别等接口,具体如下:
人脸检测:
看上图中函数名称就可以了解到读入图像,通过face_locations函数得到人脸的位置,测试如下,可以看出返回的结构是一个list,每个人脸是一个tuple存储,分别代表框住人脸的矩形中左上角和右下角的坐标(x1,y1,x2,y2)。这里例子只有一个人脸所以只有一个tuple。另外face_recognition读入函数load_image_file输出图像是rgb顺序的,和opencv中bgr不一样。
关键点检测以及跟踪:
上图中通过face_landmarks函数得到人脸特征点list,测试例子如下图,每个人脸是一个字典,包括nose_bridge、right_eyebrow、right_eye、chine、left_eyebrow、bottom_lip、nose_tip、top_lip、left_eye几个部分,每个部分包含若干个特征点(x,y),总共有68个特征点。
人脸识别:
人脸识别实际上是对人脸进行编码后再去计算两两人脸的相似度,known_image相当于已知人脸库的图像,unknown_image相当于待检测的图像,分别利用face_encodings函数来映射成一个向量,下图可以看出每个人脸是一个128维的向量。最后利用两个向量的内积来衡量相似度,compare_faces函数就是根据阈值确认是否是同一人脸。上述函数都是支持多个人脸计算的。 另外compare_faces有个tolerance参数是控制阈值的,tolerance值越低越严格,默认为0.6。
最后github上相应有一个real-time face recognition的demo,链接如下
https://github.com/ageitgey/face_recognition/blob/master/examples/facerec_from_webcam_faster.py,比较简单。
关键字:
上一篇:渗透一个网站需要做什么?
下一篇:linux之acl和su命令
本站部分内容来源网络及网友上传,本站未必能一一鉴别其是否为公共版权或其版权归属,如果您认为侵犯您的权利,本站将表示非常抱歉!
请您速联系本站,本站一经核实,立即删除。删文删帖联系【2789291421@qq.com】