人脸检测算法MTCNN

article/2025/11/8 10:19:43

本文将对人脸检测效果不错的MTCNN算法做一个梳理。
论文地址
MTCNN主要分为三步:
最初先对图像进行多尺度变换,获取图像金字塔,获取图像多尺度信息。

P-net(Proposal Network):

主要使用一个全卷机网络,获取候选框和这些候选框的bounding box regression向量组。然后评估这些候选向量,并进行校准。最后使用非极大化抑制来去除大量重复的候选区域。
P-Net

P-Net结构如下:
结构

R-net(Refine Network ):

所有候选区域送入R-Net,该层多出来一个全连接层(FC),可以进行更细化的处理,排除掉大量不符合要求的候选区域,通过bounding box regression执行校准,在利用非极大化抑制( NMS)进行合并。
R-net
R-net的网络结构:
R-net

O-net(Output Network):

这一步和第二步类似,这一步输出更多的人脸部特征,主要是脸部五点特征位置。
O-net
O-net的结构:
o-net
以上就是人脸检测MTCNN的基本结构。对人脸检测精度的影响主要有以下几点:

  1. 一些滤波器的权值缺少多样性,这样会导致产生歧义性的描述。
  2. 人脸检测只是一个二分类任务,所以人脸检测需要少量的滤波操作,需要更多对人脸的描述。

基于上述文中采用3*3的权值矩阵,减少网络深度,以获取更好的性能。

网络的训练:

markdown公式编辑语法
训练也是三个:
- 人脸与非人脸
- 人脸区域
- 人脸五点特征定位
1、先看第一个人脸与非人脸,对于每一个输入样本  xi 采用交叉熵损失函数:

Ldeti=(ydetilog(pi)+(1ydeti)(1log(pi)))

上述公式中的 pi 表示是人脸的概率,其中 ydeti{0,1}
2、对于每一个候选框,需要预测它和真实坐标的偏移。对于每一个样本 xi 通过欧式距离进行回归:
Lboxi=||ŷ boxiyboxi||22

候选框,主要由最左顶点坐标、长、宽组成,每一个box是一个4维向量。
3、脸部特征坐标,与候选框回归类似,还是计算候选特征坐标和真实坐标的位置的欧式距离,并最小化此距离。
Llandmarki=||ŷ landmarkiylandmarki||22

上述五点特征包括,左眼、右眼、鼻子、左边嘴角、右边嘴角。每个坐标均有两个坐标,所以每一个landmark是一个10维德向量。
4、多源训练,训练过程中,有人脸非人脸的照片,部分人脸区域。所以上述的三个损失函数可能有的没有必要使用。所以整体的损失函数如下:
minj=1Nj{det,box,landmark}αjβjiLji

其中N是样本集大小,其中 αj 表示任务的优先级, βji{0,1} 表示样本标签, Lji 表示上面三步的损失函数。在P_Net和R_Net中设置 αdet=1 αbox=0.5 αlandmark=0.5 ,在O_net中, αdet=1 αbox=0.5 αlandmark=1
在训练过程中,为了取得更好的效果,作者每次只后向传播前70%样本的梯度,这样来保证传递的都是有效的数字。有点类似latent SVM,只是作者在实现上更加体现了深度学习的端到端。

training data的处理:

训练采用四种类型的数据:
1、备选区域和目标区域的重叠率(IOU)小于0.3的,全部是非人脸。
2、IOU大于0.65的是人脸。
3、IOU在0.4到0.65之间的是部人脸区域。
4、人脸特征坐标,人脸标注五个位置。
其中1、2数据集主要用来识别人脸与非人脸。
2、3数据集用来做box bounding regression。
4数据集主要用来确定人脸五点特征位置。
作者对算法过程实现的一些代码如下:
https://github.com/kpzhang93/MTCNN_face_detection_alignment


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

相关文章

YbFace:完全开源的人脸检测算法

YbFase(yolo base face detector),是一个借鉴了yolov3的网络结构,在多特征尺度下预测人脸框的人脸检测算法.并结合了yolov4使用的mish激活函数.该模型大小仅为7,8M,无论模型大小,还是准确率,还是执行速率都很有竞争力. 源码地址(github): face_detect 如果对你有…

适合ARM 的轻量级人脸检测算法汇总

目录 1、场景需求2、libfacedetection2.1 相关链接2.2 算法简介2.3 算法效果展示2.4 算法性能展示 3、Ultra-Light-Fast-Generic-Face-Detector-1MB3.1 相关链接3.2 算法简介3.3 算法效果展示3.4 算法性能展示 4、BlazeFace4.1 相关链接4.2 算法简介4.3 算法效果展示4.4 算法性…

opencv算法+人脸检测

文章目录 ORB算法视频读写图像人脸识别摄像头实时人脸检测 ORB算法 orb算法结合了Fast和Brief算法,提出了构造金字塔,为Fast特征点添加了方向,从而使得关键点具有了尺度不变性和旋转不变性。 # orb算法结合了Fast和Brief算法,提…

人脸检测算法对比分析

 https://blog.csdn.net/twinkle_star1314/article/details/53318689 人脸识别包括以下5个步骤:人脸检测、图像预处理、特征提取、匹配、结果输出。 人脸检测是人脸识别中的第一个环节,是一项关键技术。人脸检测是指假设在输入…

人脸检测算法:mtcnn简介

人脸检测算法:MTCNN简介 算法流程网络介绍训练方法 MTCNN是一个针对于人脸检测的模型, 由PNet, RNet, 和ONet三个网络组成,三个网络都比较轻量, 易于训练.基于pytorch的实现可以看我这篇: 链接: l利用celebA数据集训练MTCNN网络. 算法流程 1. 对传入P网络的图片re…

10种轻量级人脸检测算法的比拼

关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 转自:https://blog.csdn.net/nihate/article/details/108798831 计算机视觉研究院专栏 作者:Edison_G 最近在微信公众号里看到…

mtcnn人脸检测算法介绍

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

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的使用前准备可以看到我之前的一篇…