目标检测之MTCNN

tech2022-09-11  96

MTCNN

全称Multi-task Cascaded Convolutional Networks, 多任务级联卷积神经网络

 

概览

MTCNN在训练时可以分开训练,使用时串联起来训练。p网络(propose)检测输出后resize再给r网络(refine),r网络输出最后给o网络(output).每个网络的的训练任务都有关键点,人脸置信度,偏移量,多个任务共同促使提高检测精度。p网络再检测时有一点不一样就是他需要经过图像金字塔,所以也就导致了p网络效率很低

 

原理:

p网络训练时只需要用1张12*12的图片去训练,输出结果形状为n x 1 x 1 x v. p网络由三层构成,从感受野的角度看和一个12 x 12的卷积是一样的效果,当我们用训练好的p网络卷原图时输出的结果形状就是 a x b * v, 对应原图axb个小区域。这样就实现的从单目标到多目标的跨越。同时三层3x3的卷积网络比12x12的计算量小得多, 更容易训练, 层数还更深。使用图像金字塔实现了只不同尺寸检测的目的。

 

样本制作:

MTCNN并不是直接拿目标框作为标签而是用偏移量来作为标签来训练,所以在制作样本时分为三类样本,正样本,部分样本,负样本。

正样本:一定要有人脸 置信度:IOU: 0.75~1

部分样本:有部分人脸 置信度:IOU: 0.4~0.75

负样本:不能有人脸 置信度:0  IOU: 0~0.3

样本所占比例:1:2:3(因为真实情况中就是负样本最多的)

 

训练:

正样本和负样本用来训练置信度, 部分样本和正样本用来训练偏移量。偏移量是指左上角右下角四个坐标偏移量。

多任务指的就是同时训练置信度和偏移量,如果某一个损失过大就会导致总损失过大,起到了互相督促的作用。

 

图像金字塔:

为了实现不同尺度的人脸检测并保持不动卷积核的情况下,使用图像金字塔可以检测出大于12的所有人脸,每缩放一次就会就用p网络扫一次

 

侦测:

p网络的精度最低,但速度快所以先由p网络筛选出一些框,然后将这些框做完NMS再传入R网络,R网络的感受野要更大所以可以排除很多虚警做完NMS,最后传入O网络输出

 

反算:

p网络:   偏移量 = 网络输出的偏移量 * 12 / 缩放比例(金字塔)

                左上角坐标 = (特征图中的索引 * 2)  /  缩放比例 + 偏移量

                右下角坐标 = (特征图中的索引 * 2 + 12)  /  缩放比例 + 偏移量

R/O网络:先根据输入的框计算框高再乘以网络输出偏移量最后加上输入坐标点

注意点:特征图索引行索引代表x,列索引代表y, *2是步长p网络在12*12的感受野上步长是12

 

 

 

精彩之处:

最精彩的地方在于将原先最普通的三层3x3卷积输出形状n x v变成了 n x 1 x 1 x v

同时加入了级联学习的方法降任务分解,多任务学习提高精度

 

缺点:

p网络花费了大量时间,导致整体效率低

 

未完待续

最新回复(0)