人脸检测之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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/6197.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

CocosCreator 构建透明背景应用(最新版!!!)

文章目录 透明原理补充设置截图以及代码step1: electron-js mian.jsstep2:ENABLE_TRANSPARENT_CANVASstep3:SOLID_COLOR Transparentstep:4 Build Web phonestep5:package electron-js & change body background-color 效果图补充 透明原理 使用Cocos creator 做桌面应用开…

【设计模式】结构型模式(三):桥接模式、外观模式

结构型模式(三):桥接模式 4.桥接模式(Bridge)4.1 结构4.2 示例4.2.1 抽象类4.2.2 细化抽象类4.2.3 实现类接口4.2.4 具体实现类4.2.5 客户端 5.外观模式(Facade) 4.桥接模式(Bridge&…

初识Linux

Linux指令 输入指令,实际上是在Linux环境下,做Windows的操作。 ls指令 语法: ls [选项][目录或文件] 功能: 对于目录,该命令列出该目录下的所有子目录与文件。 对于文件,将列出文件名以及其他信息。 常…

【Uniapp】Uniapp Android原生插件开发指北

前言 在uniapp开发中当HBuilderX中提供的能力无法满足App功能需求,需要通过使用Andorid/iOS原生开发实现时,或者是第三方公司提供的是Android的库,这时候可使用App离线SDK开发原生插件来扩展原生能力。 插件类型有两种,Module模…

软考教材重点内容 信息安全工程师 第1章 网络信息安全概述

第 1 章 网络信息安全概述 1.1.1 网络信息安全相关概念 狭义上的网络信息安全特指网络信息系统的各组成要素符合安全属性的要求,即机密性、完整性、可用性、抗抵赖性、可控性。 广义上的网络信息安全是涉及国家安全、城市安全、经济安全、社会安全、生产安全、人身安…

Redis ——发布订阅

问题引入: 服务器A、B、C、D,客户端:C1,C2,C3,C4; 客户端基于集群聊天服务器的负载均衡分配; C1 被分配到A,C2 被分配到B,C3 被分配到C,C4 被分…

【网络】传输层协议TCP(下)

目录 四次挥手状态变化 流量控制 PSH标记位 URG标记位 滑动窗口 快重传 拥塞控制 延迟应答 mtu TCP异常情况 四次挥手状态变化 之前我们讲了四次挥手的具体过程以及为什么要进行四次挥手,下面是四次挥手的状态变化 那么我们下面可以来验证一下CLOSE_WAIT这…

单链表专题

单链表 1. 链表的概念2. 链表的分类3. 实现无头单向非循环链表(单链表)3.1 单链表的声明3.2 单链表的打印3.3 尾插3.4 头插3.5 尾删3.6 头删3.7 查找3.8 在指定位置之前插入数据3.9 在指定位置之后插入数据3.10 删除指定节点3.11 销毁链表 4. 一些细节4.…

K8S篇(基本介绍)

目录 一、什么是Kubernetes? 二、Kubernetes管理员认证(CKA) 1. 简介 2. 考试难易程度 3. 考试时长 4. 多少分及格 5. 考试费用 三、Kubernetes整体架构 Master Nodes 四、Kubernetes架构及和核心组件 五、Kubernetes各个组件及功…

中国500米分辨率逐月平均EVI数据集(2000-2022)

EVI是在归一化植被指数(NDVI)的基础上进行改进的,通过卫星不同波段探测数据组合而成。EVI考虑了大气校正,包括大气分子、气溶胶、水汽和臭氧等因素,以解决NDVI容易饱和的问题。EVI的计算公式考虑了蓝光和红光波段&…

二级列表联动

介绍 本示例主要介绍了List组件实现二级联动(Cascading List)的场景。 该场景多用于商品种类的选择、照片不同类型选择等场景。 效果图 使用说明: 滑动二级列表侧控件(点击没用),一级列表随之滚动。&…

基于matlab的人民币面额识别

本文通过分析第五版人民币的特征,利用纸币中央数字的特征提取和识别的方法,通过matlab软件实现对第五版人民币的100元、50元和20元的识别。 Matlab函数介绍 Imread 函数imread用于读取图片文件中的数据。 调用格式: A imread(filename,…

Docker篇(实际应用)

目录 一、MySQL 部署 1. 拉取 MySQL 镜像 2. 查看镜像 3. 创建 MySQL 容器 4. 进入 MySQL 容器,登陆 MySQL 5. 远程登陆 MySQL 6. 查看容器 IP 地址 二、tomcat 部署 1. 拉取 tomcat 镜像 2. 创建 tomcat 容器 3. 搭建 Tomcat 服务并部署 web 应用 三、Nginx 部署 …

别名路径联想设置

如何使用/进行路径提示? 找到jsconfig.json文件,如何项目中没有的话,自行创建 {"compilerOptions": {"paths": {"/*": ["./src/*"]}},"exclude": ["node_modules", "dis…

osi七层模型

文章目录 1、网络层1、数据链路层2、以太网和mac地址3、地址解析协议(arp)1、免费arp 4、物理层1、双绞线(网线) 5、总结 1、网络层 路由器就是网络层设备,因为是根据目标ip报文来实现转发的,三层的 1、数据链路层 作用 解决了,ip报文在链路…

spark (算子 ) groupBykey+Map 和 reduceBykey 的区别

1)面试题:groupByKeymap和reduceByKey都能实现分布式分组聚合,有什么区别? - groupByKey没有Map端聚合的操作,只做分组,必须等分区结束才能实现,最终map需要做整体聚合 - reduceByKey是有Map端聚…

mysql--多表查询

目录 一、联合查询 案例1,UNION 案例2,UNION ALL 二、表连接查询 (一)内连接 (二)外连接 1.左外连接 2.右外连接 3.全外连接 去重关键字 distinct 三、自连接 案例1: 案例2&…

【MyBatis源码】CacheKey缓存键的原理分析

文章目录 Mybatis缓存设计缓存KEY的设计CacheKey类主体CacheKey组成CacheKey如何保证缓存key的唯一性 Mybatis缓存设计 MyBatis 每秒过滤众多数据库查询操作,这对 MyBatis 缓存键的设计提出了很高的要求。MyBatis缓存键要满足以下几点。 无碰撞:必须保证…

打好“组合拳”,实现国有企业降本增效

打好“组合拳”,实现国有企业降本增效 在当前经济不确定性加剧、市场寒意明显的背景下,众多国有企业因历史积累的管理问题而陷入困境。随着经济形势的严峻,各行业普遍出现发展乏力的现象,促使企业开始重视“修炼内功”、“向内挖…

金媒婚恋相亲系统10.4择爱开源旗舰版支持微信小程和抖音小程序上架

最近大家应该注意到了,金媒婚恋相亲系统已经更新至最新的10.4版本了!本人作为商业用户也已经更新至最新的旗舰版了,更新的内容是啥!这个官方都有列出,一个方面就是更新了多端的登录逻辑和UI 和后台CRM及很多细节的优化…