0 任务
人脸识别流程包括人脸检测、人脸对齐、人脸识别等子任务。
人脸识别具有重要的学术价值,人脸是一类相当复杂的细节变化的自然结构目标,此类目标的识别的挑战性在于:
- 外界光线变化或者表情变化。
- 在真实的环境中,可能存在眼镜,胡须,化妆或者口罩或者其他物体的遮挡。
- 物体遮挡导致在复杂的环境中难以检测出人脸。
研究方向主要有:目标检测、扭曲变形、提升对比度、运动模糊、残缺破损等。
1 应用场景
人脸检测与属性分析:快速检测人脸并返回人脸框位置,准确识别多种属性信息。
人脸实名认证:支持【姓名+身份证号】两要素验证,以及【人脸图片+姓名+身份证号】三要素验证,对接权威数据源及验证服务,精确判断用户身份真实性。配合活体检测、人脸对比等服务,满足各种场景下身份核验的灵活需求。
人脸对比:两张人脸进行 1:1 比对,得到人脸相似度,支持生活照、证件照、身份证芯片照、带网纹照、红外黑白照5种图片类型的人脸对比。
人脸搜索:给定一张照片,对比人脸库中N张人脸,进行1:N检索,找出最相似的一张或多张人脸,并返回相似度分数。支持百万级人脸库管理,毫秒级识别响应,可满足身份核验、人脸考勤、刷脸通行等应用场景。
活体检测:识别业务场景中的用户是否为「真人」,有效抵御照片、视频、3D模具等作弊行为,保障业务安全性。
人脸融合:对两张人脸进行融合处理,生成的人脸同时具备两张人脸的外貌特征。此服务也支持对图片进行黄反及政治人物过滤,为业务提供安全的人脸服务,支持图片/视频换脸。
2 开源项目
这里优先总结功能相对齐全的开源项目,再总结完成单个子任务的开源项目。本文主要关注方法较流行且提供源码的开源项目,忽略了仅提供SDK的。
2.1 全任务
- SeetaFaceEngine与SeetaFaceEngine2,是中科院山世光组开源的项目,含Detection、Alignment、Identification,前者代码齐全,很适合学习,只是没有开源模型训练方法,后者只提供了SDK。
- OpenCV以及opencv_contrib,传统方法和深度学习方法都有,4.0版本已发布,见ChangeLog。
- dlib基于C++的机器学习库,其中也含有 frontal face detection 和 face recognition等。face_recognition基于dlib的人脸识别(python)。
- openface官网以及cmusatyalab/openface github是基于google FaceNet(CVPR 2015)用Python和Torch实现的人脸识别系统。
- facenet,基于Tensorflow实现的FaceNet,参考了上面的openface
- TadasBaltrusaitis/OpenFace(与上面的openface不是同一个),汇总了多篇论文的实现,含facial
landmark detection、head pose estimation、facial action unit recognition 以及 eye-gaze estimation,侧重于facial behavior analysis and understanding。
2.2 人脸检测
- MTCNN,Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Neural Networks。以及MTCNN-light,无框架实现版本。
- 百度冠军方法PyramidBox的两个非官方实现,EricZgw/PyramidBox以及Goingqs/PyramidBox,前者TensorFlow后者pytorch。
2.3 人脸识别
以下,copy自大学生写人脸识别算法现实吗? - 卡本特的回答 - 知乎
- caffeFace:https://github.com/ydwen/caffe-face
- normFace:https://github.com/happynear/NormFace
- mobile ID:liuziwei7/mobile-id
- sphereFace:wy1iu/sphereface
- insightface:deepinsight/insightface
2018年初Insightface曾拿Megaface第一,参见InsightFace - 使用篇, 如何一键刷分LFW 99.80%, MegaFace 98%。
以上,待更新。
参考
https://www.zhihu.com/question/64860792
计算机视觉人脸相关开源项目总结