美文网首页
3 计算机视觉-阅读笔记(10)

3 计算机视觉-阅读笔记(10)

作者: 深度学习模型优化 | 来源:发表于2019-05-03 07:57 被阅读0次

3.8 MTCNN

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

人脸检测。MTCNN采用PRO三个CNN来做检测。(其实做灰度投影怎么样?只能起到辅助作用吧。)

1 模型思想

该模型利用多级联的结构,从粗到细预测人脸以及相应特征坐标位置,能够适用于各种自然条件下复杂的人脸场景检测,可以实现人脸检测和5个特征点的标定(这个landmark需要增加到很多,才能在人脸检测的基础上做很多事情,否则就只是完成人脸检测的任务)。

主要包括三个网络子结构:

  • P-Net(proposal networks)
  • R-Net(refine networks)
  • O-Net(output networks)。

2 模型架构

模型架构包括4部分:

  • 图像金字塔
    为了检测到不同size的人脸,在进入P-Net之前,我们应该对图像进行金字塔操作。
    • 根据设定的min_face_size尺寸,将img按照一定的尺寸缩小
    • 每次将img缩小到前级img面积的一半,形成scales列表
    • 直至边长小于min_face_size,得到不同尺寸的输入图像。
  • P-Net


    图1 P-Net网络结构示意图
图2 P-Net网络详细结构
  • R-Net


    图3 R-Net网络结构示意图
图4 R-Net网络详细结构
  • O-Net
图5 O-Net网络结构示意图 图6 O-Net网络详细结构

3 算法流程

3.1 P-Net

S1: 将不同尺寸的金字塔图像输入到p-net中,最终得到prob1与conv4-2。prob1中包含box位置信息及其置信度,conv4-2中包含box的回归系数信息。

S2: 利用S1中的prob1与conv4-2生成box,设置阈值为0.6(初筛,阈值小),得到一系列点,映射回原img,以此点为左上角,向右向下各扩展12个像素,得到12 \times 12的矩形框。

S3: 对一帧图像上检测到的所有12 \times 12矩形框进行NMS运算。

S4: 得到的所有box会放置在一个number\times 9的数组里,其中number表示box的数量,9代表box的坐标信息、score、坐标回归信息[x1、y1、x2、y2、score、reg_x1、reg_y1、reg_x2、reg_y2],利用reg*系列(对应坐标的线性回归参数)可对box进行坐标修正,修正过程可表示为:
new\_x1 = x1 + reg\_x1 * width\_of\_box \\ new\_y1 = y1 + reg\_y1 * height\_of\_box \\ new\_x2 = x2 + reg\_x2 * width\_of\_box \\ new\_y2 = y2 + reg\_y2 * height\_of\_box

S5: 目标框修正之后,先做rec2square、然后再pad。其中rec2square是将修正后不规则的框调整为正方形,pad的目标是将超出原img范围的部分填充为0,大小比例不变。

上述步骤可以简写为:

  • 12*12的anchor在不同尺寸的图像上按照stride=1滑动
  • 根据face classification结果判定是否为人脸,小于-->Drop,大于留下
  • 利用回归系数信息进行精修
  • nms
  • rec2square
  • pad
  • 生成一系列候选框

3.2 R-Net

  • 将P-Net最后输出的所有box,resize到24\times 24后输入R-Net。
  • 经过R-Net后,输出与P-Net类似,prob1:box坐标信息与置信度与conv5-2的回归系数信息。
  • 根据所得的置信度信息与该层阈值对比,小于阈值的直接drop掉,大于阈值的留下,
  • nms
  • 利用回归系数信息进行精修
  • rec2square
  • pad

3.3 O-Net

将R-Net最后输出的所有box,resize到48*48后输入O-Net。经过O-Net后,输出prob1:box坐标信息与置信度、conv6-2的回归系数信息、以及conv6-3的关键点坐标信息。

conv6-3是number\times 10的二维数组,number代表box的数量,10则包含了5个关键点信息的x、y坐标信息:[Rx1,Rx2, Rx3, Rx4, Rx5, Ry1, Ry2, Ry3, Ry4, Ry5],此时的坐标为目标框内部的比例,最后映射回原img得到真实的坐标。

根据prob1置信度信息与该层阈值对比,小于阈值的直接drop掉,大于阈值的留下,再利用回归系数信息进行精修,最后再进行一次NMS。

最后,输出一副包含人脸框与人脸关键点的检测图像。

3.4 损失函数

损失函数包括三个方面:

  • 人脸分类损失
  • bbox回归损失
  • 人脸landmark定位损失

Loss = \min \sum_{i=1}^N \sum_{j \in (det, box, landmark)} \alpha_j \beta_i^j L_i^j

\alpha_j代表对应任务的重要性
P-Net: \alpha_{det} = 1, \alpha_{box}=0.5, \alpha_{landmark} = 0.5
R-Net: \alpha_{det} = 1, \alpha_{box}=0.5, \alpha_{landmark} = 0.5
O-Net: \alpha_{det} = 1, \alpha_{box}=0.5, \alpha_{landmark} = 1

\beta \in (0, 1)代表样本类型

边训练边选择出hard sample,只有hard samples才进反向传播,其他样本不进行反向传播。具体做法:对每个小批量里所有样本计算loss,对loss进行降序,前70%的samples 做为hard samples进行反向传播。

相关文章

网友评论

      本文标题:3 计算机视觉-阅读笔记(10)

      本文链接:https://www.haomeiwen.com/subject/gchdnqtx.html