自学内容网 自学内容网

人脸检测之MTCNN算法网络结构

MTCNN(Multi-task Cascaded Convolutional Networks)是一种用于人脸检测和关键点检测的深度学习模型,特别适合在复杂背景下识别出多尺度的人脸。它通过多任务学习来实现人脸检测和人脸关键点定位(如眼睛、鼻子、嘴巴的位置),实现高精度的人脸区域定位和关键点提取。MTCNN 主要由三个级联网络组成:P-Net、R-Net 和 O-Net。

论文名称:《Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks》https://arxiv.org/pdf/1604.02878icon-default.png?t=O83Ahttps://arxiv.org/pdf/1604.02878

一、MTCNN 的网络结构

1.P-Net(Proposal Network)
  • 作用:快速生成候选窗口。
  • 结构:P-Net 是一个全卷积神经网络,负责从图片中生成初步的人脸候选框,并进行非最大值抑制(NMS),保留主要候选窗口。
  • 输出:人脸置信度和候选框回归参数。

P-Net(Proposal Network)——生成候选框

  • 网络结构:P-Net 是一个轻量级的卷积网络,由三层卷积层构成,每一层后面都有 ReLU 激活函数。

    • Conv1:3x3 卷积核,步长为 1,输出 10 个通道的特征图。
    • Max Pooling1:2x2 池化,步长为 2。
    • Conv2:3x3 卷积核,步长为 1,输出 16 个通道的特征图。
    • Conv3:3x3 卷积核,步长为 1,输出 32 个通道的特征图。
  • 输出层

    • 分类层(Cls):1x1 卷积核,输出通道数为 2,表示人脸和非人脸的置信度。
    • 回归层(Reg):1x1 卷积核,输出通道数为 4,用于预测人脸框的偏移量。
  • 功能

    • P-Net 接收输入图像,生成初步的人脸候选框,并输出每个候选框的置信度(人脸概率)和位置偏移。
    • 应用非最大值抑制(NMS)去除重叠度高的候选框,减少冗余检测框。

2.R-Net(Refine Network)

  • 作用:精确化候选框。
  • 结构:接收 P-Net 生成的候选窗口,并过滤掉部分错误窗口,进一步提高人脸检测精度。
  • 输出:细化的人脸置信度和候选框位置。

R-Net(Refine Network)——筛选候选框

  • 网络结构:R-Net 是一个中等复杂度的卷积网络,包含三层卷积层和一个全连接层。

    • Conv1:3x3 卷积核,步长为 1,输出 28 个通道的特征图。
    • Max Pooling1:3x3 池化,步长为 2。
    • Conv2:3x3 卷积核,步长为 1,输出 48 个通道的特征图。
    • Max Pooling2:3x3 池化,步长为 2。
    • Conv3:2x2 卷积核,步长为 1,输出 64 个通道的特征图。
    • 全连接层:输出 128 维特征向量,并与 ReLU 激活函数连接。
  • 输出层

    • 分类层(Cls):二分类输出,检测候选区域是否包含人脸。
    • 回归层(Reg):输出人脸框位置的四个偏移值。
  • 功能

    • R-Net 接收 P-Net 的候选框,并进一步筛选和校正候选框的边界。
    • 再次进行非最大值抑制,去除相邻且重叠较高的框。
3.O-Net(Output Network)
  • 作用:最终的人脸框确定与关键点检测。
  • 结构:输入来自 R-Net 的候选窗口,进一步细化人脸检测框,最终输出人脸的精确位置和五个关键点(眼睛、鼻子、嘴巴位置)。
  • 输出:最终的人脸框、五个关键点的坐标。

O-Net(Output Network)——精确定位并检测关键点

  • 网络结构:O-Net 是一个相对复杂的网络,用于最终的精确化。

    • Conv1:3x3 卷积核,步长为 1,输出 32 个通道的特征图。
    • Max Pooling1:3x3 池化,步长为 2。
    • Conv2:3x3 卷积核,步长为 1,输出 64 个通道的特征图。
    • Max Pooling2:3x3 池化,步长为 2。
    • Conv3:3x3 卷积核,步长为 1,输出 64 个通道的特征图。
    • Max Pooling3:2x2 池化,步长为 2。
    • Conv4:2x2 卷积核,步长为 1,输出 128 个通道的特征图。
    • 全连接层:输出 256 维特征向量,连接 ReLU 激活函数。
  • 输出层

    • 分类层(Cls):二分类输出,用于最终人脸的判断。
    • 回归层(Reg):输出人脸框位置的四个偏移值。
    • 关键点检测层(Landmarks):输出 5 个关键点的坐标位置,包括左右眼、鼻尖、嘴角。
  • 功能

    • O-Net 负责进一步细化人脸边框并预测五个关键点。
    • 通过关键点预测,进一步提高检测框的精度。

二、级联架构的优点

MTCNN 级联网络架构具有显著的计算效率优势:

  • 逐步筛选:P-Net 的计算最为轻量,用于快速筛选大量非人脸区域。后续网络只需处理少量高置信度候选框,减少计算量。
  • 逐级优化:每个网络的输出作为下一网络的输入,通过级联的方式,候选框的位置和精度得到逐步优化。
  • 多任务学习:由于 O-Net 同时进行人脸检测和关键点检测,利用共享特征实现多任务,提升了模型的整体性能和检测精度。

三、MTCNN 的训练目标

MTCNN 通过多任务损失函数来训练,即结合了分类损失、边框回归损失和关键点回归损失,目标是:

  • 人脸分类损失:最小化人脸与非人脸的分类误差。
  • 边框回归损失:减小候选框的回归偏差,保证框的位置更准确。
  • 关键点回归损失:保证五个关键点的回归误差最小化,以获得更精确的关键点位置。

四、代码实现

该源码是基于pytorch框架实现,源码的GitHub开源地址为:https://github.com/TropComplique/mtcnn-pytorchicon-default.png?t=O83Ahttps://github.com/TropComplique/mtcnn-pytorch


原文地址:https://blog.csdn.net/qq_45998729/article/details/143499181

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!