MTCNN 是什么?
MTCNN全称:Multi-task convolutional neural network(多任务卷积神经网络)
可以简单理解为MTCNN中包含不止一个卷积网络,每个卷积神经网络负责它相应的图像任务。
本文将从模型构成,训练过程,和推理过程讲述MTCNN的实现流程,如下为人脸检测总体实现流程,在这个基础上对流程实现上的细节做一点补充。
MTCNN能够完成多目标检测的核心:图像金字塔
————图源网络侵删!!
由于卷积神经网络在学习过程中被限定了图片输入和输出,那么假设P网络(限定输入12*12的图片)要检测上图两张人脸大小不相同的人脸,那么第一步就需要能够框选到图片中所有的完整人脸,其次再对所有框选到的图片做分类(即检测是否为人脸)。这也是整个网络在检测出图像人脸的逻辑。
但对于卷积网络而言,能够进行调整的只有核,通过用固定大小的核当做建议框在原图上以步长为1做扫描来进行对原图上的区域做框选,如果设定一个较小的核扫描,能够框出图中较小人脸,但相对更大的人脸会因为人脸缺失而无法检测。而设置较大的核,框出的小脸噪声过多,影响速度的同时精度也成问题。因此通过控制核的大小无法实现多目标检测。
![](https://i-blog.csdnimg.cn/blog_migrate/a3c046c356925a16e5135265560ab057.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4b613f1ea66ab547fbc290cb23c2ccf7.png)
这时利用图像金字塔就能完美解决这个问题。
图像金字塔的原理其实就是缩放,每对原图按比例缩小一次,就传入网络中通过核进行扫描一次,直到缩小到P网络里第一层网络中核的大小。这样无论原图中的人脸大小为多少尺寸,卷积神经网络通过核扫描图像都能框出原图中所有的完整的人脸。
MTCNN构成
MTCNN是一个级联网络,由三个网络构成:Proposal Network(P-net),Refine Network(R-net),Output Network(O-net)。级联逻辑并不复杂,如下:
在检测人脸的任务中,正如上图的级联逻辑一样P网络,R网络,O网络处于线性关系,它们的关系是层层递进的,P网络处理完图像后,输出给R网络处理,R网络处理完再交给O网络处理输出。
在人脸检测任务中,P网络,R网络,O网络的任务一样为检测人脸,P网络首先对图片进行检测将疑似人脸区域框选送入R网络,R网络同P网络一样,检测框选后送入O网络做最后的检测输出,在这个过程中,P,R,O网络所处理的图片数量层层递减,处理的速度也更快。因此能适当加大R和O网络的深度提高精度。这种级联结构就像生活中净水过滤芯一样,相比于只利用单个过滤层的过滤芯,多层简单的滤芯效果更好,同样的MTCNN也比只用单层深网络的模型更好。这种级联结构虽然简单,但是更有效也更快速。
标签的设置
一个模型的标签意味着一个模型最终期望的训练结果,毕竟所有的深度学习本质上都是在减小损失函数。而损失函数里的y(标签)就决定了模型的输出需要靠近的方向。因此一个模型的设置必须要结合实际需求谨慎设计。在MTCNN中设置了两个标签,置信度和偏移量。
置信度不必细说,但是偏移量的设置就很有考量,因为MTCNN运用了图像金字塔,在级联过程中也有图像的缩放,因此单纯的设置框的两个坐标点为标签,显然在最后输出框时会受到很大的影响,输出的框只针对与当时网络检测时的图像大小。如果利用偏移量就可以无视图像的缩放,因为偏移量只是一个相对值,相对于正确标签的差距,那么这就很容易通过偏移量来反算画框和反算抠图。
PS:偏移量=缩放倍数*(x1(预测)-x2(标签))/w(图像宽)
NMS(非极大值抑制)
由于MTCNN运用了图像金字塔的原因,最后在推理过程中,扫描并检测图像会出现多个建议框,如图:
为了减少运算量并提升检测精度,我们需要在人脸附近的多个框里,选出将人脸框的最完整,最符合人脸特征的框。这里就需要用到非极大值抑制了。
所谓非极大值抑制,顾名思义就是抑制不是极大值的元素,它的过程可以理解为局部最大搜索。
运用NMS首先需要设定标准去区分何种框才是我们需要的,既然我们想要的是检测人脸,标准1就为人脸的置信度(模型判断是否为人脸的概率),标准2则是框与人脸的拟合度。
为了判断框的是否准确,我们这里引入IOU(交并比)
IOU(交并比)
交并比:从本文的建议框来解释的话就是两个建议框之间重叠的部分即为交并比代表的部分。在MTCNN人脸检测中,由于图像金字塔,如果交并比越大就越可能代表两个建议框,框住的是同一张人脸。
NMS具体的操作流程:
1、将所有的框位置坐标和置信度对应取出放入列表A(候选建议框)
2、取出置信度列表里置信度最高的框P1放入列表B(最终建议框)
3、将A中所有的框与P1计算交并比,与交并比阈值比较,大于阈值的从A列表中删除(说明这些框和P1框住相同人脸,但置信度低于P1)
4、取出现目前A列表中最高置信度的框P2放入列表B,即重复上述2,3步骤,直至A列表中无法取出建议框。
NMS优化:Soft-NMS:
NMS的过程中会删掉大于IOU阈值的框,但在实际情况中,会有两个目标本身距离很近的情况,如果这时候阈值设置不正确,就会丢失掉其中一个目标。本质上NMS是以置信度为最根本的依据来做筛选,因此Soft-NMS就采用的,算出IOU后不根据阈值一刀切的删除,而是根据IOU的大小对其余的框的置信度做出降低的调整,IOU越大被调整的力度就越强,IOU越小甚至没有IOU会对其置信度保持不变。所以只要在最后输出的置信度上根据Soft-NMS的程度,对置信度阈值做一个调整就能将两个目标本身距离很近的情况都能检测出来。