首页 > 编程语言 >人脸检测之MTCNN算法网络结构

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

时间:2024-11-05 11:17:03浏览次数:3  
标签:输出 候选框 卷积 MTCNN 步长 人脸 网络结构 Net

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

标签:输出,候选框,卷积,MTCNN,步长,人脸,网络结构,Net
From: https://blog.csdn.net/qq_45998729/article/details/143499181

相关文章

  • 基于matlab的人脸识别系统设计与仿真
    第一章绪论本章提出了本文的研究背景及应用前景。首先阐述了人脸图像识别意义;然后介绍了人脸图像识别研究中存在的问题;接着介绍了自动人脸识别系统的一般框架构成;最后简要地介绍了本文的主要工作和章节结构。1.1研究背景自70年代以来.随着人工智能技术的兴起.以及人类视觉......
  • 【人脸伪造检测后门攻击】Imperceptible Face Forgery Attack via Adversarial Semant
    原文Github地址:https://github.com/clawerO-O/ASMA一、研究动机​ 目前的后门攻击模型是基于数字像素上的操作,例如增加噪声,从而使得深度模型在推理阶段表现为不正常,但这种attack隐蔽性很差,可以被人眼所观察到。因为这些模型是在整个面部区域增加对抗性扰动,增加了许多冗余扰动......
  • 基于MATLAB的人脸修图设计
    1.设计目的(1)掌握现代信号处理的设计、分析与调试方法。(2)能够使用MATLAB对程序进行设计、仿真和调试。(3)加深对现代信号处理相关知识的理解及应用。2.设计要求(1)设计GUI,便于用户在该界面完成对图像的处理,布局要清晰,功能按模块分组,方便用户查找。(2)实现基本图像处理的功能:图像......
  • 【AIGC人脸生成的后门攻击】 Is It Possible to Backdoor Face Forgery Detection wit
    [!CAUTION]本篇论文主要是关于AIGC生成人脸的后门攻击,与换脸技术的后门攻击有差异,因此本篇文章主要研究trigger的生成部分,后面的实验部分不加以研究。一、研究动机​ 目前的后门攻击模型还比较简单,是基于数字像素上的操作,例如增加噪声或者像素补丁,这些攻击已经有很多backd......
  • 人脸识别算法 - 专利1分析
      专利CN117576758A中说明了一种人脸识别算法的整体识别流程,本文将对这篇文章进行详细讲解,并说明有创造性的算法部分。  前置知识:人脸识别   人脸识别技术是一种通过计算机技术和模式识别算法来识别和验证人脸的技术。它能够用于识别人脸的身份、检测人脸的表情......
  • 明星人脸识别基于VGG、MTCNN、RESNET深度学习卷积神经网络应用|附数据代码
    全文链接:https://tecdat.cn/?p=38046原文出处:拓端数据部落公众号分析师:XinzuDu 人脸识别技术作为生物特征识别技术的重要组成部分,在近三十年里得到了广泛的关注和研究,已经成为计算机视觉、模式识别领域的研究热点。然而由于存在光线、背景、人脸遮挡等问题,如何准确识别出人......
  • 基于YOLOv8深度学习的人脸面部口罩检测系统【python源码+Pyqt5界面+数据集+训练代码】
    背景及意义人脸口罩面部检测能够准确地检测人脸是否佩戴口罩,对于控制疫情传播、保障公共卫生安全起到关键作用。本文基于YOLOv8深度学习框架,通过853张图片,训练了一个进行人脸面部口罩的目标检测模型,能够准确的检测人脸“戴口罩”、“未戴口罩”及“未正确佩戴口罩”。并基......
  • retinaface模型实现人脸识别(pytorch)
    项目源码获取方式见文章末尾!回复暗号:13,免费获取600多个深度学习项目资料,快来加入社群一起学习吧。《------往期经典推荐------》项目名称1.【YOLO模型实现农作物病虫害虫识别带GUI界面】2.【卫星图像道路检测DeepLabV3Plus模型】3.【GAN模型实现二次元头像生成】4.......
  • 人脸识别的Matlab代码实现
     1概述人脸检测(FaceDetection)是在输入图像中确定所有人脸(如果存在)的位置,大小,位姿的过程。人脸检测作为人脸信息处理中的一项关键技术,近年来成为模式识别与计算机视觉领域一项受到普遍重视,研究十分活跃的课题﹐人脸检测问题最初来源于人脸识别(FaceRecognition)八......
  • 基于数字图像处理人脸识别matlab程序代码
                             数字图像处理人脸识别程序代码                                            程序代码:clear;I=imread('E:\02089008.jpg');  %%插入图像地址O=rgb2ntsc(I);G=O(:,:,2......