MTCNN(Multi-task Cascaded convolutional neural netword,多任务级联卷积神经网络),是2016年中国科学院深圳研究院提出的用于人脸检测任务的神经网络模型,也是当前比较流行的进行快速人脸检测和人脸关键点定位的神经网络模型。MTCNN的模型有三个子网络构成,分别为P-Net、R-Net和O-Net,P-Net用于快速生成候选框,尽可能多的找到建议框,R-Net负责进一步精细化筛选建议框,O-Net对建议框做最后的筛选判定,并且进行人脸关键点的定位。
-
整体实现流程:
1.样本制作:
训练数据集选择CelebA数据集,包含10177个名人身份的202599张人脸图片,每张图片都做好了特征标记,包括人脸bounding box标注框、5个人脸特征点坐标以及40个属性标记并制作训练样本。在人脸标签框的中心点做随机偏移,通过计算偏移后的box与bounding box的IOU值,制作训练样本,正样本:IOU>0.65,标记为1;部分样本:0.4<IOU<0.65,标记为2;负样本:IOU<0.3,标记为0。由于CelebA数据集本身的标签框有偏差,故在样本制作时可调整IOU阈值,保持正样本:部分样本:负样本=1:1:3即可。
2.网络模型及改进:
图1-1
MTCNN的网络模型如图1-1所示,P-Net输入图片为12*12,最后层为全连接,R-Net输入图片24*24,负责更进一步筛选P-Net初步过滤后的建议框,过滤掉大部分的非人脸矩形框,O-Net输入图片为48*48,负责对R-Net输出的建议框做最后的筛选判定,并且输出人脸定位的5个关键点。
在实现过程中对MTCNN原有网络做了改进,加入了一个深度卷积模块,如图1-2所示:
图1-2
利用1X1的卷积核与深度卷积减少参数和计算量,同时加入PReLU做激活函数,增加模型的非线性变化和模型泛化能力。
改进后的网络模型如图1-3所示:
图1-3
3.损失函数的选择:
不管是P-Net、R-Net还是O-Net,在模型训练过程中,均有人脸的分类和bounding box的回归,face classification即选择二分类交叉熵损失BCELoss,bounding box的回归损失选择MSELoss:
最终将两个损失函数进行加权累加,便得到总损失函数。
4.人脸侦测实现:
MTCNN侦测流程如图1-4所示: