#Multi-task convolutional neural networks 人脸对齐
\quad MTCNN是2016年ECCV上的一篇文章,做的事情就是人脸检测,以及人脸部分关键点标定.MTCNN的过程和思想都集中在下面这个图.
这个图片大概就是说,MTCNN是由3个网络结构组成(P-Net,R-Net,O-Net)的.下面分别介绍一下MTCNN的这个3个网络结构.
\quad Proposal Network (P-Net):该网络结构主要获得了人脸区域的候选窗口和边界框的回归向量。并用该边界框做回归,对候选窗口进行校准,然后通过非极大值抑制(NMS)来合并高度重叠的候选框。
\quad Refine Network (R-Net):该网络结构还是通过边界框回归和NMS来去掉那些false-positive区域。只是由于该网络结构和P-Net网络结构有差异,多了一个全连接层,所以会取得更好的抑制false-positive的作用。
\quad Output Network (O-Net):该层比R-Net层又多了一层卷基层,所以处理的结果会更加精细。作用和R-Net层作用一样。但是该层对人脸区域进行了更多的监督,同时还会输出5个地标(landmark)。
\quad 论文中也给出了详细的网络结构如下图:
MTCNN还有更加详细的prototxt的网络结构,可以看这篇博客,或者是自己将https://github.com/kpzhang93/MTCNN_face_detection_alignment/tree/master/code/codes/MTCNNv1/model这里面的prototxt文件可视化之后观察.
##训练过程的损失函数
\quad MTCNN特征描述子主要包含3个部分,人脸/非人脸分类器,边界框回归,地标定位。
###人脸分类:
这是人脸分类的交叉熵损失函数,其中, p i p_i pi为是人脸的概率, y i d e t y_i^{det} yidet为背景的真实标签。
###边界框回归:
这个式子是通过欧氏距离计算的回归损失。其中,带尖的y为通过网络预测得到,不带尖的y为实际的真实的背景坐标。其中,y为一个(左上角x,左上角y,长,宽)组成的四元组。
###地标定位:
和边界回归一样,这个式子还是计算网络预测的地标位置和实际真实地标的欧式距离,并最小化该距离。其中,带尖的y为通过网络预测得到,不带尖的y为实际的真实的地标坐标。由于一共5个点,每个点2个坐标,所以,y属于十元组。
###多个人的情况:
\quad 整个的训练学习过程就是最小化上面的这个函数,其中,N为训练样本数量, α j \alpha_j αj表示任务的重要性, β i j \beta_i^j βij为样本标签, L i j L_i^j Lij为上面的损失函数。在训练过程中,为了取得更好的效果,作者每次只后向传播前70%样本的梯度,这样来保证传递的都是有效的数字。