人脸检测之PCN渐进式人脸检测

论文为山世光老师组2018 cvpr的作品。

 

人脸3D变换基础:

平面内旋转(左右歪头问题)roll,本人重点讨论的问题

平面外左右旋转(正脸,侧脸问题)yaw

平面外俯仰(仰头,低头问题)pitch 

方向相关人脸检测的思路:

(a) 使用数据增强的方法,增加各种角度的人脸进行训练,该思路大大的依赖于样本的多样性,同时为了让网络能同时学到这么多的信息,也需要一个较大的网络结构。

(b) 使用分治的策略,训练不同角度的人脸分类器,然后做集成,缺点就是人脸的角度存在360,要训练这么多分类器,时间复杂度和模型复杂度都太大。

(c) 边检测人脸,边计算出人脸的角度,再根据角度对人脸进行旋转,然后只训练一个正脸的分类器既可,缺点就是,角度要么是个360度的分类或者回归问题,容错空间太大,正如下图所示,直接预测会存在误差较大的可能。

本文基于第(c)点进行改进。使用由粗到精的思路(coarse to fine)

文章使用了3个渐进校准网络(PCN)来由粗到细的预测人脸角度值。

PCN-1进行人脸0度和-180度的2分类任务,将人脸从-180度——180度矫正为-90度——90度。

PCN-2进行人脸0度,90度,-90度的3分类任务,将人脸从-90度——90度矫正为-45度——45度。

PCN-3直接进行人脸角度回归,得出旋转角度。

最终人脸的角度就是PCN-1角度+ PCN-2角度+ PCN-3角度


其中3PCN校准网络的详细结构如下图,主要还是借鉴的MTCNN的结构,不同点就是

(1) MTCNN中的5个关键点的回归换为人脸方向角度的分类和回归

(2) MTCNN中第一个网络P-Net的输入为12*12*3,这里的第一个网络PCN-1输入为24*24*3

整体总结:

文章使用由粗到细的思想进行人脸角度的预测,并且利用该角度值进行人脸角度的矫正,这样相比于直接训练各个角度人脸的网络,使用先进行人脸矫正再进行只有正脸的人脸网络训练就可以大大的提高召回率。

但是从工程上来看,总感觉同时出人脸角度值和人脸框不如同时出人脸关键点和人脸框更实用,因为有了关键点就可以算出角度了。

从创新性来看,也感觉略有不足。因为,假设如果第一个网络可以分出正脸和倒脸,那么经过旋转矫正后,人脸分类的置信度分数会更高,但是本质没有改变,因为第一个网络已经可以分类倒脸了。假如第一个网络不能分出正脸和倒脸,那么预测的角度值也没用。

 

References

https://github.com/Jack-CV/PCN


猜你喜欢

转载自blog.csdn.net/wfei101/article/details/80932155