人脸检测——MTCNN

本次介绍一篇速度还不错的人脸检测文章:

《2016 Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks》.

源代码作者刚刚公布,效果相当不错(只有测试代码):
https://kpzhang93.github.io/MTCNN_face_detection_alignment/index.html?from=timeline&isappinstalled=1

另外一位同学实现的MTCNN基于MXNET的训练代码,工作比较完整,参考价值比较大: https://github.com/Seanlinx/mtcnn

—————— Pipeline——————

人脸检测——MTCNN_第1张图片

上面是该方法的流程图,可以看出也是三阶级联,和我之前的一篇博文CascadeCNN很像。

stage1: 在构建图像金字塔的基础上,利用fully convolutional network来进行检测,同时利用boundingbox regression 和 NMS来进行修正。(注意:这里的全卷积网络与R-CNN里面带反卷积的网络是不一样的,这里只是指只有卷积层,可以接受任意尺寸的输入,靠网络stride来自动完成滑窗)

stage2: 将通过stage1的所有窗口输入作进一步判断,同时也要做boundingbox regression 和 NMS。

stage3: 和stage2相似,只不过增加了更强的约束:5个人脸关键点。

————— Network —————

Stage1: Proposal Net

人脸检测——MTCNN_第2张图片

Stage2: Refine Net

人脸检测——MTCNN_第3张图片

Stage3: Output Net

人脸检测——MTCNN_第4张图片

由上可以看出,其网络结构较CascadeCNN略深但每层参数较少,所以该方法性能较好同时速度和CascadeCNN也相差无几。

补充:

(1) 文中训练使用了Online Hard sample mining策略,即在一个batch中只选择loss占前70%的样本进行BP;

(2) 不同阶段,classifier、boundingbox regression 和 landmarks detection在计算Loss时的权重是不一样的;

(3) 训练数据共4类,比例3:1:1:2,分别是negative,IOU<0.3; positive,IOU>0.65; part face,0.4

—————— Result ——————

在FDDB上的表现:

人脸检测——MTCNN_第5张图片

速度表现,CPU约15FPS

人脸检测——MTCNN_第6张图片

你可能感兴趣的:(人脸检测(目标检测))