论文地址: https://kpzhang93.github.io/MTCNN_face_detection_alignment/paper/spl.pdf
github地址: https://github.com/kpzhang93/MTCNN_face_detection_alignment

一、背景介绍

  • 人脸检测和特征点标定广泛用于人脸识别和表情分析等应用
  • 人脸检测和特征点标点存在挑战
    • 人脸遮挡
    • 光照
    • 等等
  • Mtcnn是级联网络结构,可以实现人脸检测和5个特征点的标定,由三个深度卷积网络构成(P、R、O),是一个轻量级网络,可以实现实时人脸检测和标定。

二、网络结构介绍

  • 级联网络工作流程
    • 数据预处理: 图像金字塔resize产生多个尺寸的图片。
    • 首先通过一个比较简单的卷积神经网络P产生多个脸部的预选框。
    • 其次通过一个比较复杂的卷积神经网络R优化P产生的人脸框,去除大部分非人脸区域的框。
    • 最后通过有个最强壮的网络优化R输出的人脸框和输出五个特征点的位置。

Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks(MTCNN)论文和代码解读

  • 训练阶段

    • P-Net

      • 数据层大小为:num×3×12×12
      • 3个卷积核为 3×3的CNN层
      • 最后输出1个future维度为1×1×32。
        • 1×1×2: 表示这个预测框的区域是人脸和非人脸的概率值
        • 1×1×4: 表示这个回归的值
        • 1×1×10:表示脸部五个特征点的位置
          Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks(MTCNN)论文和代码解读
    • R-Net

      • 数据层大小为:num×24×24×3
      • 2个卷积核为3×3的CNN + 1个卷积核为2×2的CNN。
        Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks(MTCNN)论文和代码解读
    • O-Net
      • 数据层大小为:num×3×48×48
      • 3个卷积核为3×3的CNN + 2个卷积核为2×2的CNN + 1个全连接层。
        Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks(MTCNN)论文和代码解读
    • Loss层
      • 三个网络的classification的loss计算公式:
        Lidet=(yidetlog(pi)+(1yidet)(1log(pi)))1

        yidet: ground truth 的label {0,1}
        pi: 预测是人脸概率。
      • box的loss计算公式:
        Libox=||y^iboxyibox||22

        y^ibox:网络输出的回归坐标
        yibox:ground truth的坐标位置
        • facial landmark localization的loss:
          Lidet=||y^ilandmarkyilandmark||22
      • 总目标loss,由于是多任务训练,比如背景取样自计算landmark loss,其他两个loss就可以置为0。如下面公式
        mini=1Nj{det,box,landmark}αjβijLij

        N代表训练样本数量
      • αj 代表对应任务的重要性
        P-Net: αdet=1,αbox=0.5,αlandmark=0.5
        R-Net: αdet=1,αbox=0.5,αlandmark=0.5
        O-Net: αdet=1,αbox=0.5,αlandmark=1
      • βj{0,1}代表样本类型
    • Online Hard sample mining ,边训练边选择出hard sample,只有hard samples才进反向传播,其他样本不进行反向传播。具体做法:对每个小批量里所有样本计算loss,对loss进行降序,前70%samples 做为hard samples进行反向传播。
  • 训练数据预处理

    • 数据类型有下面四种,通过从WIDER FACE数据集随机crop生成 Negtives、Positives、Part faces,从CelebA 获得landmark数据。
数据类型 Negatives Positives Part faces Landmark faces
条件 IoU<0.3 IoU>0.65 0.4<=Iou<=0.65 5个特征点位置
用途 用于人脸分类任务 用于人脸分类任务 回归任务 landmark任务

P-Net
通过从WIDER FACE数据集随机crop生成 Negtives、Positives、Part faces。从CelebA 获得landmark数据。
R-Net
通过P-Net从WIDER FACE检测人脸生成 Negtives、Positives、Part faces。从CelebA 获得landmark数据。
O-Net
通过O-Net、P-Net从WIDER FACE检测人脸生成 Negtives、Positives、Part faces。从CelebA 获得landmark数据。

三、实验结果

  • the effectiveness of online hard sample mining
    本文章通过训练两个O-Net,两个网络的学习速率固定且一样,一个是有进行hard sample处理,一个是没处理。对比两个网络loss曲线, 可以看出hard samples的loss效果比较好。
    Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks(MTCNN)论文和代码解读

  • The effectiveness of joint detection and alignment
    本文章实验结论:O-Net加入人脸特征点标定任务,有利于人脸的检测和对齐。如下图,JA,代表加入人脸特征点标定任务,效果做好,No JA in BBR表示没有在回归任务上加入人脸标定任务,No JA表示全部都没加入人脸特征点标定任务。
    Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks(MTCNN)论文和代码解读

  • 运行时间分析
    2.60GHz CPU:16fp
    Nvidia Titan Black(GPU): 99fp

  • 运行demo人脸检测和对齐效果图

    Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks(MTCNN)论文和代码解读

相关文章:

  • 2021-11-06
  • 2021-06-01
  • 2021-08-21
  • 2021-10-06
  • 2021-07-14
  • 2021-12-08
  • 2021-06-06
  • 2021-10-19
猜你喜欢
  • 2021-07-15
  • 2021-09-14
  • 2021-12-21
  • 2021-06-08
  • 2021-09-14
  • 2021-08-10
  • 2021-11-03
相关资源
相似解决方案