mtcnn人脸检测算法介绍

article/2025/11/8 12:24:13

0. 概述

MTCNN(Multi-task Cascaded Convolutional Networks,多任务卷积神经网络),是2016年由Kaipeng Zhang、Zhanpeng Zhang等提出的一种多任务人脸检测模型,该模型使用3个CNN级联算法结构,将人脸检测和人脸特征点提取同时完成。

原论文中被引用了无数次的算法示意图如下:

由上图可知,MTCNN整个流程结构中,首先会按照不同的缩放因子(resize_factor),将图像缩放成不同大小的size,形成图像的特征金字塔。接下来,是三个级联的CNN网络结构组成的三个阶段。在第一阶段,通过浅CNN(Proposal Network, P-Net)快速生成候选窗口;然后,通过更复杂的CNN(Refinement Network, R-Net)来过滤大量非人脸窗口;最后,通过更强大的CNN(Output Network, O-Net)再次优化结果,并输出5个面部关键点位置。

下面就来分别介绍这三个网络。

1. P-Net

P-Net的网络结构如下图所示:

第一阶段,使用称为Proposal Network(P-Net)的全卷积网络来获取候选人脸窗及其边界框的回归向量,然后利用估计的边界框回归向量校准候选框,最后,采用非极大值抑制(non-maximum suppression, NMS)对高度重合的候选框进行合并。

P-Net的输入是12x12的图像。这些训练样本可以通过滑动窗口或随机采样方法获取,训练样本分为三种,分别是正样本、负样本和中间样本。这些样本的划分使用候选区域和ground truth的IoU (Intersection over Union) 进行衡量,其中,大于0.65的为正样本,小于0.3的为负样本,介于0.4和0.65之间的为中间样本。 (网络上其他资料有将小于0.4的作为负样本,本文引用原论文的数据0.3)     

输入数据被resize成12x12大小并转换成12x12x3的格式,然后通过10个3x3x3的卷积核,3x3的Max Pooliing (stride=2),生成10个5x5的特征图;这些特征图再经过16个3x3x10的卷积核,生成16个3x3的特征图;接下来再经过32个3x3x16的卷积核,生成32个1x1的特征图;最后,针对这32个1x1的特征图,分为三个分支:(1) 经过2个1x1x32的卷积核,生成2个1x1的特征图用于分类;(2) 经过4个1x1x32的卷积核,生成4个1x1的特征图用于回归框判断;(3) 经过10个1x1x32的卷积核,生成10个1x1的特征图用于人脸关键点判断。

2. R-Net

 R-Net的网络结构如下图所示:

从P-Net输出的所有候选对象都被输入到另一个CNN,称为Refinement Network (R-Net),该网络会进一步过滤大量虚假候选对象,以及利用边界框回归进行校准、使用NMS合并候选框。

该层输入图像大小为24x24,前面两层卷积过程与P-Net相似,不再重复。第三层卷积,对第二层卷积输出的48个4x4的特征图用64个2x2x48的卷积生成64个3x3的特征图之后,将这些特征图转换为128的全连接层,接下来,仍然是三个分支:(1) 用大小为2的全连接层进行分类;(2) 用大小为4的全连接层进行bounding box的位置回归;(3) 用大小为10的全连接层进行人脸轮廓关键点检测。

3. O-Net

 O-Net网络结构如下图所示:

该阶段与第二阶段R-Net相似,但网络结构更复杂了一些。但该阶段的目的是使用更多细节描述人脸,尤其是会输出5个人脸关键点(Facial Landmarks)。

4. 完整流程

综合以上介绍,整个mtcnn的完整流程如下:

因为暂时只关注网络结构及模型应用,暂时不关注训练过程,所以训练的内容基本没太介绍。

今天就分享这么多,回头再上代码。


http://chatgpt.dhexx.cn/article/6xu5vm0T.shtml

相关文章

Matlab人脸检测算法详解

这是一个Matlab人脸检测算法详解 前言人脸检测结果算法详解源代码解析所调用函数解析bwlabel(BW,n)regionpropsrectangle 总结 前言 目前主流的人脸检测与人脸识别算法主要基于人工神经网络进行训练与检测,本文基于数字图像处理解析一个非人工神经网络的有趣人脸检…

人脸检测算法落地详解

人脸检测 Face Detection 目标:人脸检测的目的是找出一张图片中的所有人脸的位置信息 人脸检测是人脸其他应用的基础,只有获取到了是否有人脸和人脸的精确的位置信息,其它的应用才能继续开展,所以说人脸检测是一个基础且重要的一…

MATLAB人脸检测算法

MATLAB人脸检测算法 人脸检测是将人脸从复杂的背景图像中检测出来,它是实现人脸识别的基础和前提。 肤色重建 使用人脸肤色模板对灰度图像进行肤色重建,使其变成彩色图像,效果如下: 在函数function Rgray2rgb1(img1,img2)中&a…

人脸检测算法

https://handong1587.github.io/deep_learning/2015/10/09/object-detection.html 人脸识别各论文参考 知乎一个栏目: https://zhuanlan.zhihu.com/p/25025596 首先介绍一下常用人脸检测的常用数据库: FDDB和WIDER FACE FDDB总共2845张图像&#xff0…

一文带你了解人脸检测算法的类型及其工作原理

在过去的几年里,人脸识别受到了广泛的关注,被认为是图像分析领域最有前途的应用之一。人脸检测可以考虑人脸识别操作的很大一部分。根据其强度将计算资源集中在持有人脸的图像部分。图片中的人脸检测方法很复杂,因为人脸存在可变性&#xff0…

人脸识别之人脸检测算法

人脸识别的一般步骤:人脸检测->人脸对齐->人脸特征提取->(计算人脸的差值)三元组损失/中心损失->差值小于某一阈值则为同一个人,差值大于某一阈值则不是同一人。 本文将对每一个步骤的技术现状,进行分析&a…

Python网络爬虫与信息提取(17)—— 题库爬取与整理+下载答案

前言 上一节实现了题目的整理,没整理答案是不完整的,所以这一节加上答案的爬取。 上一节地址:Python网络爬虫与信息提取(16)—— 题库爬取与整理 效果 思路 爬答案有点难搞,像这种题库的答案都是要么要会员,要么要登陆账号才能看答案,这种就比较费劲了,解决方案有…

Python 网络爬虫及数据可视化

网络爬虫及数据可视化 1 项目背景1.1Python的优势1.2网络爬虫1.3数据可视化1.4Python环境介绍1.4.1简介1.4.2特点 1.5扩展库介绍1.5.1安装模块1.5.2主要模块介绍 2 需求分析2.1 网络爬虫需求2.2 数据可视化需求 3 总体设计3.1 网页分析3.2 数据可视化设计 4 方案实施4.1 网络爬…

python网络爬虫权威指南 百度云-Python网络爬虫权威指南 PDF 第2版

给大家带来的一篇关于Python爬虫相关的电子书资源,介绍了关于Python、网络爬虫方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小5.54 MB,瑞安米切尔编写,目前豆瓣、亚马逊、当当、京东等电子书综…

【python】基础网络爬虫教程

1.爬虫目的 用通俗易懂的话来说,是对多种类型数据(如文字,图片,音频,视频等)进行批量式的采集与存储。 本文为个人一些学习心得,举例对网页进行信息爬取操作,使用python中基础的方法进行爬取,便于理解学习。2.爬虫准备 需要对python有一些基础,对字符串,列表,循环结构等有了解。…

python网络爬虫及数据可视化

广东某学校的期末python作业 一、设计内容及要求 设计内容:对中国大学专业排名网站中2021年,计算机科学与技术专业,进行数据爬取和数据可视化。 URL: https://www.shanghairanking.cn/rankings/bcmr/2021/080901 设计要求&am…

python网络爬虫的流程图_Python 网络爬虫程序架构及运行流程

1 前言 Python开发网络爬虫获取网页数据的基本流程为: 发起请求 通过URL向服务器发起request请求,请求可以包含额外的header信息。 获取响应内容 服务器正常响应,将会收到一个response,即为所请求的网页内容,或许包含HTML,Json字符串或者二进制的数据(视频、图片)…

python网络爬虫--网页登录

1、前言 主要用到python的selenium库,通过模仿浏览器行为定位登录所需的标签位置,实现网页登录功能.最后在码云(gitee)上测试自动登录功能. 2、selenium定位网页元素 关于selenium的使用前准备可以看到我之前的一篇…

python网络爬虫可以干什么,python网络爬虫有什么用

python爬虫能做什么 世界上80%的爬虫是基于Python开发的,学好爬虫技能,可为后续的大数据分析、挖掘、机器学习等提供重要的数据源。什么是爬虫? (推荐学习:Python视频教程)网络爬虫(又被称为网…

python网络爬虫技术课后答案_尔雅《Python网络爬虫技术(2020年秋季学期)》网课答案...

尔雅《Python网络爬虫技术(2020年秋季学期)》网课答案 法律的一般含义是() 答:法律是由国家创制并保证实施的行为规范 下列属于急症手术的是 答:肝破裂 脾气统摄血液的功能,实际上是()的固摄作用的体现 答:气 中国古代南北争战中&…

(一)python网络爬虫(理论+实战)——爬虫的初步认识

小白都能学会的python网络爬虫专栏: https://blog.csdn.net/c1007857613/category_12127982.html 序言 本人从事爬虫相关工作已8年以上,从一个小白到能够熟练使用爬虫,中间也走了些弯路,希望以自身的学习经历,让大家能…

Python网络爬虫经典书籍推荐

1. Python编程:从入门到实践 - 2016 本书是一本针对所有层次的Python 读者而作的Python 入门书。全书分两部分:第一部分介绍用Python 编程所必须了解的基本概念,包括matplotlib、NumPy 和Pygal 等强大的Python 库和工具介绍,以及…

(二)python网络爬虫(理论+实战)——爬虫分类和基本流程

小白都能学会的python网络爬虫专栏: https://blog.csdn.net/c1007857613/category_12127982.html 序言 本人从事爬虫相关工作已8年以上,从一个小白到能够熟练使用爬虫,中间也走了些弯路,希望以自身的学习经历,让大家能…

python网络爬虫实验报告_Python网络爬虫实例讲解

聊一聊Python与网络爬虫。 1、爬虫的定义 爬虫:自动抓取互联网数据的程序。 2、爬虫的主要框架 爬虫程序的主要框架如上图所示,爬虫调度端通过URL管理器获取待爬取的URL链接,若URL管理器中存在待爬取的URL链接,爬虫调度器调用网…

Python网络爬虫简介与环境配置

第一章 Python网络爬虫简介与环境配置 1.1 网络爬虫简介 随着互联网的快速发展越来越多的信息被发布到互联网上,这些信息被嵌入到各种各样的网页结构及样式中。虽然搜索引擎可以辅助用户搜索这些网页信息,但是通用的搜索引擎的目标是尽可能覆盖全网络&…