参考网址:http://www.sfinst.com/?p=1683
人脸检测,解决两个问题:1)识别图片中有没有人脸?2)如果有,人脸在哪?因此,许多人脸应用(人脸识别、面向分析)的基础是人脸检测。
大多数人脸检测采用的流程为两阶段:
1) 找出所有可能是人脸的候选区域
2) 从候选区域中选择出最可能是人脸的区域
本文的主角MTCNN,大致是这种套路,也集成了其优缺点为:准和慢。
MTCNN人脸检测是2016年的论文提出来的,MTCNN的“MT”是指多任务学习(Multi-Task),在同一个任务中同时学习”识别人脸“、”边框回归“、”人脸关键点识别“。相比2015年的CVPR(边框调整和识别人脸分开做)的结构,MTCNN是有创新的。
参考的代码是David Sandberg的复现,
https://github.com/davidsandberg/facenet/blob/master/src/align/detect_face.py
该复现是github上MTCNN的复现中星星最多,实现得最像原作的版本。代码中包含着大量的Magic Number,初读,令人不知所云
预测过程:
step1: 第一阶段的目标是生成人脸候选框。MTCNN推断流程的第一阶段,蕴含了许多CNN的技巧,个人认为是比较精华也具有启发性的部分。并且MTCNN的推断过程中,第一阶段时间消耗占80%左右,所以如果需要优化和理解MTCNN的读者,在第一阶段投入再多精力都不为过。
1