face_recognition:简单好用的人脸识别开源python库

发布时间:2018-01-10 16:23:20编辑:丝画阁阅读(1298)

人脸识别近来可以说是非常的热门,无论是iphonex的faceid人脸解锁、faceID支付等等,还是各种安防监控、人脸表情变换都用到了人脸识别的相关知识。这里介绍一个简单好用的人脸识别的python库--face_recognition,很多开源人脸相关好玩的项目都是以它为基础开发的。

face_recognition:简单好用的人脸识别开源python库

代码网址为https://github.com/ageitgey/face_recognition,github已经有8300+的star和1600+的fork,发文时在所有仓库中排名854位。

face_recognition:简单好用的人脸识别开源python库

face_recognition是基于dlib的深度学习人脸识别库,在LFW上的准确率达到了99.38%。

安装

只需要编译好dlib(主要支持linux和macOS)后,通过pip install face_recognition来安装相关包,函数运行需要占用一定的GPU空间

使用

face_recognition包括人脸检测、人脸关键点检测、人脸识别等接口,具体如下:

人脸检测:

face_recognition:简单好用的人脸识别开源python库

github示例

看上图中函数名称就可以了解到读入图像,通过face_locations函数得到人脸的位置,测试如下,可以看出返回的结构是一个list,每个人脸是一个tuple存储,分别代表框住人脸的矩形中左上角和右下角的坐标(x1,y1,x2,y2)。这里例子只有一个人脸所以只有一个tuple。另外face_recognition读入函数load_image_file输出图像是rgb顺序的,和opencv中bgr不一样。

face_recognition:简单好用的人脸识别开源python库

关键点检测以及跟踪:

face_recognition:简单好用的人脸识别开源python库

上图中通过face_landmarks函数得到人脸特征点list,测试例子如下图,每个人脸是一个字典,包括nose_bridge、right_eyebrow、right_eye、chine、left_eyebrow、bottom_lip、nose_tip、top_lip、left_eye几个部分,每个部分包含若干个特征点(x,y),总共有68个特征点

face_recognition:简单好用的人脸识别开源python库

人脸识别:

face_recognition:简单好用的人脸识别开源python库

人脸识别实际上是对人脸进行编码后再去计算两两人脸的相似度,known_image相当于已知人脸库的图像,unknown_image相当于待检测的图像,分别利用face_encodings函数来映射成一个向量,下图可以看出每个人脸是一个128维的向量。最后利用两个向量的内积来衡量相似度,compare_faces函数就是根据阈值确认是否是同一人脸。上述函数都是支持多个人脸计算的。 另外compare_faces有个tolerance参数是控制阈值的,tolerance值越低越严格,默认为0.6。

face_recognition:简单好用的人脸识别开源python库

最后github上相应有一个real-time face recognition的demo,链接如下

https://github.com/ageitgey/face_recognition/blob/master/examples/facerec_from_webcam_faster.py,比较简单。

关键字