美文网首页程序员半栈工程师python热爱者
face_recognition:简单好用的人脸识别开源pyth

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

作者: daiw | 来源:发表于2018-02-04 12:56 被阅读3915次

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

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

    image

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

    安装

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

    使用

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

    人脸检测:

    image

    github示例

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

    image

    关键点检测以及跟踪:

    image

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

    image

    人脸识别:

    image

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

    image

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

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

    相关文章

      网友评论

        本文标题:face_recognition:简单好用的人脸识别开源pyth

        本文链接:https://www.haomeiwen.com/subject/dpuuzxtx.html