本文将对人脸检测效果不错的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的基本结构。对人脸检测精度的影响主要有以下几点:

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

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

网络的训练:

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

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

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通过欧式距离进行回归:

Lboxi=||ŷ boxi−yboxi||22

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

Llandmarki=||ŷ landmarki−ylandmarki||22

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

min∑j=1N∑j∈{det,box,landmark}αjβjiLji

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相关推荐

  1. 人脸检测算法理解之mtcnn

    最近在一次交流活动中,再次听别人讲人脸检测算法mtcnn,虽然以前也断断续续听过两次,对于一些技术细节仍不清楚,为了解决自己的困惑,笔者又重拾起这一算法,在认真研读论文和思考后有了新的理解,于是记录下 ...

  2. pytorch实现mtcnn人脸检测算法

    pytorch实现mtcnn人脸检测算法 原博地址: https://blog.csdn.net/Sierkinhane/article/details/83308658 mtcnn-pytorch代 ...

  3. 人脸检测之MTCNN算法:论文阅读及源码解析

    文章目录 前言 一.MTCNN论文阅读 1.1 论文信息 1.2 论文摘要翻译 1.3 论文核心(三级级联网络) 1.4 论文核心(级联子网络结构) 1.5 损失函数 二.源码解析 2.1 三级级联网 ...

  4. mtcnn人脸检测python_pytorch实现mtcnn人脸检测算法

    pytorch实现mtcnn人脸检测算法 原博地址: https://blog.csdn.net/Sierkinhane/article/details/83308658 mtcnn-pytorch代 ...

  5. RetinaFace,最强开源人脸检测算法

    作者 | CV君 来源 | 我爱计算机视觉(ID:aicvmlaicvmlaicvml) 人脸检测为目标检测的特例,是商业化最早的目标检测算法,也是目前几乎各大 CV 方向 AI 公司的必争之地. W ...

  6. 【CV】10种轻量级人脸检测算法大PK | 代码集合开源

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 最近在微信公众号 AIZOO 里看到轻量级人脸检测算法大盘点的文章 ...

  7. 大盘点|轻量级人脸检测算法实现,快到没朋友的都在这里了~

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 整理:公众号@OpenCV中文网 本文仅做学术分享,如有侵权,请联系删除. 人脸检测是计算机视觉中的老 ...

  8. 一文综述人脸检测算法(附资源)

    文章来源:SIGAI 本文共9400字,建议阅读10+分钟. 本文将和大家一起回顾人脸检测算法的整个发展历史. [导读] 人脸检测是目前所有目标检测子方向中被研究的最充分的问题之一,它在安防监控,人证 ...

  9. 人脸检测算法_目前最强!开源人脸检测算法:RetinaFace

    加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动! 同时提供每月大咖直播分享.真实项目需求对接.干货资讯汇总 ...

最新文章

  1. 云盘存储 教学反思_对设计训练的设计:以建筑工房工作模型课题的教学实验为例对设计训练方法论的反思...
  2. 类与类之间的交互关系
  3. Unity导出APk出错解决方法二
  4. 【杂谈】为什么你学了AI,企业却不要你
  5. 坦克大战 Java版
  6. python 使用 asyncio 包处理并发
  7. poj 1723 中位数
  8. opencv-api draw
  9. WCF中使用自定义behavior提示错误的解决方法
  10. 巴菲特投资赚钱的赚钱宝典和赢家暗语
  11. 唯样商城:常见电阻种类
  12. 基于Android技术的物联网应用开发
  13. 计算机管理如何格式化u盘,详细教您如何格式化u盘
  14. 看 SICP 不如先看 The Little Schemer
  15. Kafka提交offset机制
  16. Jie Business Project
  17. 华为认证--云计算HCIA
  18. 使用 GPSD 快速读取 GPS 信息
  19. 计算机模拟飞行,模拟飞行 DCS F-14B Tomcat雄猫 中文指南 3.22计算机地址面板
  20. 2021四川高考成绩等位分查询,2021年四川高考位次排名查询,四川高考位次所对应的学校...

热门文章

  1. 滑块验证码实现及原理
  2. HTML+CSS+JS大作业——汽车设备营销企业模板(13页) 静态HTML网页设计模板
  3. yolov5网络可视化
  4. mysql -u_在mysql中mysql -uroot -p 命令是做什么的,-u 和 -p有什么用。
  5. 算法设计与分析-回溯法
  6. 一篇文入门微信小程序开发环境搭建
  7. 找工作笔试面试题目集(硬件篇)----持续更新
  8. JS 构造函数存在的问题
  9. 关键词排名我们如何才能优化到首页
  10. 【深度学习】召回过程优化--BM25