MTCNN人脸检测是2016年的论文提出来的,MTCNN的“MT”是指多任务学习(Multi-Task),在同一个任务中同时学习”识别人脸“、”边框回归“、”人脸关键点识别“。
1“金字塔”变换
首先将原始图片缩放到不同的尺度,形成一个图像金字塔。这可以解决有的人脸大,有的人脸小,能把在同一尺度之下检测人脸。
2网络结构
P-Net是一个全卷积网络,可以适应任意尺寸的输入,输出是还是不是人脸face classification,2维是方便交叉熵损失。
1*1*4代表标定框信息,Facial landmark localization 1*1*10 表示检测的5个关键点。
上图为P-Net的结果,我们把图像金字塔不同尺度的图片,输出就会有很多会大小不同的标定框。这个过程中
R-Net
我们把P-Net 的结果通过插值的方式缩放到24*24 的尺寸。输入到R-Net。这个网络是优化P-Net检测的结果,也可以消除误判。
这是R-Net的输出结果,可以看到很多多余的标定框都过滤掉了。
之后我们接入O-Net进行最后的人脸识别和关键点检测。
3损失函数
我们根据网络的输出来定义损失函数,网络人脸判别部分使用交叉熵损失,边框回归和关键点检测部分使用L2损失。
我们把3个部分分配权重,加起来就是总损失。
对P-Net和R-Net更关注框的位置,所以这部分权重相对更大。
对于O-Net更关心关键点检测,同理。
有两种损失在人脸领域效果较好。
一个是三元组损失Triple Loss
一个是center loss