人脸检测算法MTCNN
本文将对人脸检测效果不错的MTCNN算法做一个梳理。
论文地址
MTCNN主要分为三步:
最初先对图像进行多尺度变换,获取图像金字塔,获取图像多尺度信息。
P-net(Proposal Network):
主要使用一个全卷机网络,获取候选框和这些候选框的bounding box regression向量组。然后评估这些候选向量,并进行校准。最后使用非极大化抑制来去除大量重复的候选区域。
P-Net结构如下:
R-net(Refine Network ):
所有候选区域送入R-Net,该层多出来一个全连接层(FC),可以进行更细化的处理,排除掉大量不符合要求的候选区域,通过bounding box regression执行校准,在利用非极大化抑制( NMS)进行合并。
R-net的网络结构:
O-net(Output Network):
这一步和第二步类似,这一步输出更多的人脸部特征,主要是脸部五点特征位置。
O-net的结构:
以上就是人脸检测MTCNN的基本结构。对人脸检测精度的影响主要有以下几点:
- 一些滤波器的权值缺少多样性,这样会导致产生歧义性的描述。
- 人脸检测只是一个二分类任务,所以人脸检测需要少量的滤波操作,需要更多对人脸的描述。
基于上述文中采用3*3的权值矩阵,减少网络深度,以获取更好的性能。
网络的训练:
markdown公式编辑语法
训练也是三个:
- 人脸与非人脸
- 人脸区域
- 人脸五点特征定位
1、先看第一个人脸与非人脸,对于每一个输入样本 xi\ x^i 采用交叉熵损失函数:
L_i^{det}=-(y_i^{det}log(p_i)+(1-y_i^{det})(1-log(p_i)))
上述公式中的 pip_i表示是人脸的概率,其中 ydeti∈{0,1}y_i^{det}\in\{0,1\}
2、对于每一个候选框,需要预测它和真实坐标的偏移。对于每一个样本 xix_i通过欧式距离进行回归:
L_i^{box}={|| \hat y_i^{box}-y_i^{box} ||}_2^2
候选框,主要由最左顶点坐标、长、宽组成,每一个box是一个4维向量。
3、脸部特征坐标,与候选框回归类似,还是计算候选特征坐标和真实坐标的位置的欧式距离,并最小化此距离。
L_i^{landmark}={|| \hat y_i^{landmark}-y_i^{landmark}||}_2^2
上述五点特征包括,左眼、右眼、鼻子、左边嘴角、右边嘴角。每个坐标均有两个坐标,所以每一个landmark是一个10维德向量。
4、多源训练,训练过程中,有人脸非人脸的照片,部分人脸区域。所以上述的三个损失函数可能有的没有必要使用。所以整体的损失函数如下:
min\sum_{j=1}^N \sum_{j\in\{det,box,landmark\}}{\alpha_j}{\beta_i^j}L_i^j
其中N是样本集大小,其中 αj\alpha_j表示任务的优先级, βji∈{0,1}\beta_i^j\in\{0,1\}表示样本标签, LjiL_i^j表示上面三步的损失函数。在P_Net和R_Net中设置 αdet=1\alpha_{det} = 1, αbox=0.5\alpha_{box} = 0.5, αlandmark=0.5\alpha_{landmark} = 0.5,在O_net中, αdet=1\alpha_{det} = 1, αbox=0.5\alpha_{box} = 0.5, αlandmark=1\alpha_{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
人脸检测算法MTCNN相关推荐
- 人脸检测算法理解之mtcnn
最近在一次交流活动中,再次听别人讲人脸检测算法mtcnn,虽然以前也断断续续听过两次,对于一些技术细节仍不清楚,为了解决自己的困惑,笔者又重拾起这一算法,在认真研读论文和思考后有了新的理解,于是记录下 ...
- pytorch实现mtcnn人脸检测算法
pytorch实现mtcnn人脸检测算法 原博地址: https://blog.csdn.net/Sierkinhane/article/details/83308658 mtcnn-pytorch代 ...
- 人脸检测之MTCNN算法:论文阅读及源码解析
文章目录 前言 一.MTCNN论文阅读 1.1 论文信息 1.2 论文摘要翻译 1.3 论文核心(三级级联网络) 1.4 论文核心(级联子网络结构) 1.5 损失函数 二.源码解析 2.1 三级级联网 ...
- mtcnn人脸检测python_pytorch实现mtcnn人脸检测算法
pytorch实现mtcnn人脸检测算法 原博地址: https://blog.csdn.net/Sierkinhane/article/details/83308658 mtcnn-pytorch代 ...
- RetinaFace,最强开源人脸检测算法
作者 | CV君 来源 | 我爱计算机视觉(ID:aicvmlaicvmlaicvml) 人脸检测为目标检测的特例,是商业化最早的目标检测算法,也是目前几乎各大 CV 方向 AI 公司的必争之地. W ...
- 【CV】10种轻量级人脸检测算法大PK | 代码集合开源
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 最近在微信公众号 AIZOO 里看到轻量级人脸检测算法大盘点的文章 ...
- 大盘点|轻量级人脸检测算法实现,快到没朋友的都在这里了~
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 整理:公众号@OpenCV中文网 本文仅做学术分享,如有侵权,请联系删除. 人脸检测是计算机视觉中的老 ...
- 一文综述人脸检测算法(附资源)
文章来源:SIGAI 本文共9400字,建议阅读10+分钟. 本文将和大家一起回顾人脸检测算法的整个发展历史. [导读] 人脸检测是目前所有目标检测子方向中被研究的最充分的问题之一,它在安防监控,人证 ...
- 人脸检测算法_目前最强!开源人脸检测算法:RetinaFace
加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动! 同时提供每月大咖直播分享.真实项目需求对接.干货资讯汇总 ...
最新文章
- 云盘存储 教学反思_对设计训练的设计:以建筑工房工作模型课题的教学实验为例对设计训练方法论的反思...
- 类与类之间的交互关系
- Unity导出APk出错解决方法二
- 【杂谈】为什么你学了AI,企业却不要你
- 坦克大战 Java版
- python 使用 asyncio 包处理并发
- poj 1723 中位数
- opencv-api draw
- WCF中使用自定义behavior提示错误的解决方法
- 巴菲特投资赚钱的赚钱宝典和赢家暗语
- 唯样商城:常见电阻种类
- 基于Android技术的物联网应用开发
- 计算机管理如何格式化u盘,详细教您如何格式化u盘
- 看 SICP 不如先看 The Little Schemer
- Kafka提交offset机制
- Jie Business Project
- 华为认证--云计算HCIA
- 使用 GPSD 快速读取 GPS 信息
- 计算机模拟飞行,模拟飞行 DCS F-14B Tomcat雄猫 中文指南 3.22计算机地址面板
- 2021四川高考成绩等位分查询,2021年四川高考位次排名查询,四川高考位次所对应的学校...