当前位置: 首页 > news >正文

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

相关文章:

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

MTCNN(Multi-task Cascaded Convolutional Networks)是一种用于人脸检测和关键点检测的深度学习模型,特别适合在复杂背景下识别出多尺度的人脸。它通过多任务学习来实现人脸检测和人脸关键点定位(如眼睛、鼻子、嘴巴的位置&#x…...

蓝桥杯顺子日期(填空题)

题目:小明特别喜欢顺子。顺子指的就是连续的三个数字:123、456 等。顺子日期指的就是在日期的 yyyymmdd 表示法中,存在任意连续的三位数是一个顺子的日期。例如 20220123 就是一个顺子日期,因为它出现了一个顺子:123&a…...

Java云HIS医院管理系统源码 病案管理、医保业务、门诊、住院、电子病历编辑

云HIS系统优势 (1)客户/用户角度 无需安装,登录即用 多终端同步,轻松应对工作环境转换 系统使用简单、易上手,信息展示主次分明、重点突出 极致降低用户操作负担:关联功能集中、减少跳转,键盘快…...

【C++的vector、list、stack、queue用法简单介绍】

【知识预告】 vector的介绍及使用list的介绍及使用list与vector的对比stack的介绍和使用queue的介绍和使用priority_queue的介绍和使用 1 vector的介绍及使用 1.1 vector的介绍 vector是表示可变大小数组的序列容器和数组类似,vector也采用连续存储空间来存储元…...

git中使用tag(标签)的方法及重要性

在Git中打标签&#xff08;tag&#xff09;通常用于标记发布版本或其他重要提交。 Git中打标签的步骤&#xff1a; 列出当前所有的标签 git tag创建一个指向特定提交的标签 git tag <tagname> <commit-hash>创建一个带注释的标签&#xff0c;通常用于发布版本 git…...

【专题】2024年文旅微短剧专题研究报告汇总PDF洞察(附原数据表)

原文链接&#xff1a; https://tecdat.cn/?p38187 当今时代&#xff0c;各类文化与消费领域呈现出蓬勃发展且不断变革的态势。 微短剧作为新兴内容形式&#xff0c;凭借网络发展与用户需求&#xff0c;从低成本都市题材为主逐步走向多元化&#xff0c;其内容供给类型正历经深…...

celery加速爬虫 使用flower 可视化地查看celery的实时监控情况

重点: celery ==5.4.0 python 3.11 flower ==2.0.1 请对齐celery与flower的版本信息,如果过低会导致报错 报错1: (venv) PS D:\apploadpath\pythonPath\Lib\site-packages> celery -A tasks flower Traceback (most recent call last):File …...

Angular进阶之十:toPromise废弃原因及解决方案

背景 Rxjs从V7开始废弃了toPromise, V8中会删除它。 原因 1&#xff1a;toPromise()只返回一个值 toPromise()将 Observable 序列转换为符合 ES2015 标准的 Promise 。它使用 Observable 序列的最后一个值。 例&#xff1a; import { Observable } from "rxjs"; ………...

python实现RSA算法

目录 一、算法简介二、算法描述2.1 密钥产生2.2 加密过程2.3 解密过程2.4 证明解密正确性 三、相关算法3.1 欧几里得算法3.2 扩展欧几里得算法3.3 模重复平方算法3.4 Miller-Rabin 素性检测算法 四、算法实现五、演示效果 一、算法简介 RSA算法是一种非对称加密算法&#xff0c…...

可灵开源视频生成数据集 学习笔记

目录 介绍 可灵团队提出了四个模块的改进&#xff1a; video caption 新指标 vtss 动态质量 静态质量 视频自然性 介绍 在视频数据处理中&#xff0c;建立准确且细致的条件是关键&#xff0c;可灵团队认为&#xff0c;解决这一问题需要关注三个主要方面&#xff1a; 文本…...

告别软文营销瓶颈!5招助你突破限制,实现宣传效果最大化

在当今信息爆炸的时代&#xff0c;软文营销作为品牌推广的重要手段之一&#xff0c;面临着日益激烈的竞争和受众日益提高的辨别力。传统的软文营销方式往往难以穿透消费者的心理防线&#xff0c;实现有效的信息传递和品牌塑造。为了突破这一瓶颈&#xff0c;实现宣传效果的最大…...

秋冬进补防肥胖:辨证施补,健康过冬不增脂

中医理论中的秋冬“封藏” 在中医理论中&#xff0c;认为秋冬季节是人体“封藏”的时期&#xff0c;而“封藏”指的是秋冬季节人体应当减少消耗&#xff0c;蓄积能源&#xff0c;此时进补可以使营养物质易于吸收并蓄积于体内&#xff0c;从而增强体质和抵抗力&#xff0c;为来…...

uniapp radio单选

<uni-data-checkbox v-model"selectedValue" :localdata"quTypeList" change"radioChange"/> //产品类型列表 const quTypeList [{ text: 漆面膜, value: 100, }, { text: 改色…...

通熟易懂地讲解GCC和Makefile

1. 嵌入式开发工具链&#xff1a;GCC GCC&#xff08;GNU Compiler Collection&#xff09;是一个强大且常用的编译器套件&#xff0c;支持多种编程语言&#xff0c;比如 C 和 C。在嵌入式开发中&#xff0c;GCC 可以帮助我们把人类可读的 C/C 代码编译成机器可以理解的二进制…...

Java Agent使用

文章目录 基本使用premain使用场景 agentmain 关于tools.jar https://docs.oracle.com/en/java/javase/20/docs/specs/jvmti.html com.sun的API&#xff0c;如果使用其他厂商的JVM&#xff0c;可能没有这个API了&#xff0c;比如Eclipse的J9 https://www.ibm.com/docs/en/sdk…...

selenium 点击元素报错element not interactable

描述说明&#xff1a; 我这里是获取一个span标签后并点击&#xff0c;用的元素自带的element.click()&#xff0c;报错示例代码如下&#xff1a; driver.find_element(By.XPATH,//span[id"my_span"]).click() # 或者 elementdriver.find_element(By.XPATH,//span[i…...

【大数据技术基础 | 实验七】HBase实验:部署HBase

文章目录 一、实验目的二、实验要求三、实验原理四、实验环境五、实验内容和步骤&#xff08;一&#xff09;验证Hadoop和ZooKeeper已启动&#xff08;二&#xff09;修改HBase配置文件&#xff08;三&#xff09;启动并验证HBase 六、实验结果七、实验心得 一、实验目的 掌握…...

Android进程保活,lmkd杀进程相关

lmk原理 Android进程回收之LowMemoryKiller原理 lmkd 更新进程oomAdj; 设备端进程被杀可能原因...

SDL 播放PCM

SDL2播放PCM使用SDL2播放PCM音频采样数据。SDL实际上是对底层绘图API&#xff08;Direct3D&#xff0c;OpenGL&#xff09;的封装&#xff0c;使用起来明显简单于直接调用底层API。 测试的PCM数据采用采样率44.1k, 采用精度S16SYS, 通道数2 函数调用步骤如下: [初始化]SDL_In…...

基于MPPT最大功率跟踪的光伏发电蓄电池控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于MPPT最大功率跟踪的光伏发电蓄电池控制系统simulink建模与仿真。本系统包括PV模块&#xff0c;电池模块&#xff0c;电池控制器模块&#xff0c;MPPT模块&#xff0c;PWM模…...

深入解析Vue3:从入门到实战(详细版)

文章目录 前言一、Vue3简介官网地址主要特点 二、安装与创建Vue3项目使用Vue CLI创建项目使用Vite创建项目 三、Composition API详解Setup函数ref与Reactive生命周期钩子计算属性和监听器 四、新特性与优化响应式系统更好的TypeScript支持类型定义类型推断新组件全局API重构更好…...

Pr 视频效果:ASC CDL

视频效果/颜色校正/ASC CDL Color Correction/ASC CDL ASC CDL ASC CDL效果通过对红、绿、蓝三个原色通道的独立调整&#xff0c;实现对图像色彩的精确控制。在此基础上&#xff0c;还可用于调整处理后图像的整体饱和度。 ◆ ◆ ◆ 效果选项说明 斜率 Slope、偏移 Offset和功…...

C++ --- Socket套接字的使用

目录 一.什么是Socket套接字&#xff1f; 二.Socket的使用&#xff1a; 前置步骤&#xff1a; 为什么要加入 WSAStartup 和 WSACleanup &#xff1f; 1.创建Socket&#xff1a; 2.绑定Socket&#xff1a; 3.服务端监听连接请求&#xff1a; 4.服务端接受客户端连接&…...

MG协议转换器:制氢行业的数字桥梁

在新能源产业蓬勃发展的今天&#xff0c;制氢行业正迎来前所未有的发展机遇。作为清洁能源的重要组成部分&#xff0c;氢气的生产与利用不仅关乎环境保护&#xff0c;更是推动能源结构转型的关键一环。然而&#xff0c;在制氢行业的数字化转型进程中&#xff0c;数据的传输与处…...

人工智能技术的未来:变革生活与工作的潜力

随着人工智能&#xff08;AI&#xff09;技术的不断发展&#xff0c;我们已经见证了其在各行各业的巨大变革。无论是在医疗、商业还是日常生活中&#xff0c;AI都正在悄然改变着我们的工作方式和生活方式。未来&#xff0c;人工智能的应用前景广阔&#xff0c;它将继续深入我们…...

D60【python 接口自动化学习】- python基础之数据库

day60 数据库定义 学习日期&#xff1a;20241106 学习目标&#xff1a;MySQL数据库-- 128&#xff1a;数据库定义 学习笔记&#xff1a; 无处不在的数据库 数据库如何存储数据 数据库管理系统&#xff08;数据库软件&#xff09; 数据库和SQL的关系 总结 数据库就是指数据…...

零基础大龄程序员如何转型AI大模型,系统学习路径与资源推荐!!

前言 随着科技的飞速发展&#xff0c;AI大模型浪潮席卷全球&#xff0c;相关岗位炙手可热。在这个背景下&#xff0c;许多大龄程序员开始思考如何转型&#xff0c;以适应时代的变化。结合自身编程基础&#xff0c;大龄程序员可以学习机器学习、深度学习算法&#xff0c;投身于…...

vue3+vant实现使用van-picker实现三级级联菜单展示(含递归遍历)

1、递归遍历三级展示&#xff0c;禁用自动弹起软键盘、设置文档自动换行避免过长文本省略号展示 <div class"text_div"><van-fieldclass"span_text":center"true"v-model"jobLevelCodeText"is-linklabel"任职岗位"…...

oracle-函数-grouping sets(x1,x2,x3...)的妙用

GROUPING SETS 允许你为多个列组合生成分组汇总。它类似于多个 GROUP BY 子句的 UNION ALL 操作&#xff0c;但更加简洁和高效 首先&#xff1a;创建表及接入测试数据 create table students (id number(15,0), area varchar2(10), stu_type varchar2(2), score number(20,2))…...

人工智能在医疗病例诊断中的应用与展望

人工智能在医疗病例诊断中的应用与展望 摘要&#xff1a; 本文探讨了人工智能在医疗病例诊断中的卓越应用、显著优势、面临的挑战及应对策略&#xff0c;以及未来展望。人工智能在医学影像诊断、病理诊断和辅助临床诊断方面展现出巨大潜力&#xff0c;为医学研究和临床治疗带来…...