MTCNN工作原理

MTCNN是什么
MTCNN,Multi-task convolutional neural network(多任务卷积神经网络),将人脸区域检测与人脸关键点检测放在了一起,它的主题框架类似于cascade。总体可分为P-Net、R-Net、和O-Net三层网络结构。

它是2016年中国科学院深圳研究院提出的用于人脸检测任务的多任务神经网络模型,该模型主要采用了三个级联的网络,采用候选框加分类器的思想,进行快速高效的人脸检测。这三个级联的网络分别是快速生成候选窗口的P-Net、进行高精度候选窗口过滤选择的R-Net和生成最终边界框与人脸关键点的O-Net。和很多处理图像问题的卷积神经网络模型,该模型也用到了图像金字塔、边框回归、非最大值抑制等技术。

MTCNN实现流程
构建图像金字塔
首先将图像进行不同尺度的变换,构建图像金字塔,以适应不同大小的人脸的进行检测。

P-Net
全称为Proposal Network,其基本的构造是一个全连接网络。对上一步构建完成的图像金字塔,通过一个FCN进行初步特征提取与标定边框,并进行Bounding-Box Regression调整窗口与NMS进行大部分窗口的过滤。

P-Net是一个人脸区域的区域建议网络,该网络的将特征输入结果三个卷积层之后,通过一个人脸分类器判断该区域是否是人脸,同时使用边框回归和一个面部关键点的定位器来进行人脸区域的初步提议,该部分最终将输出很多张可能存在人脸的人脸区域,并将这些区域输入R-Net进行进一步处理。

这一部分的基本思想是使用较为浅层、较为简单的CNN快速生成人脸候选窗口。

R-Net
全称为Refine Network,其基本的构造是一个卷积神经网络,相对于第一层的P-Net来说,增加了一个全连接层,因此对于输入数据的筛选会更加严格。在图片经过P-Net后,会留下许多预测窗口,我们将所有的预测窗口送入R-Net,这个网络会滤除大量效果比较差的候选框,最后对选定的候选框进行Bounding-Box Regression和NMS进一步优化预测结果。

因为P-Net的输出只是具有一定可信度的可能的人脸区域,在这个网络中,将对输入进行细化选择,并且舍去大部分的错误输入,并再次使用边框回归和面部关键点定位器进行人脸区域的边框回归和关键点定位,最后将输出较为可信的人脸区域,供O-Net使用。对比与P-Net使用全卷积输出的1x1x32的特征,R-Net使用在最后一个卷积层之后使用了一个128的全连接层,保留了更多的图像特征,准确度性能也优于P-Net。

R-Net的思想是使用一个相对于P-Net更复杂的网络结构来对P-Net生成的可能是人脸区域区域窗口进行进一步选择和调整,从而达到高精度过滤和人脸区域优化的效果。

O-Net
全称为Output Network,基本结构是一个较为复杂的卷积神经网络,相对于R-Net来说多了一个卷积层。O-Net的效果与R-Net的区别在于这一层结构会通过更多的监督来识别面部的区域,而且会对人的面部特征点进行回归,最终输出五个人脸面部特征点。

是一个更复杂的卷积网络,该网络的输入特征更多,在网络结构的最后同样是一个更大的256的全连接层,保留了更多的图像特征,同时再进行人脸判别、人脸区域边框回归和人脸特征定位,最终输出人脸区域的左上角坐标和右下角坐标与人脸区域的五个特征点。O-Net拥有特征更多的输入和更复杂的网络结构,也具有更好的性能,这一层的输出作为最终的网络模型输出。

O-Net的思想和R-Net类似,使用更复杂的网络对模型性能进行优化

集成架构及系统思想
MTCNN为了兼顾性能和准确率,避免滑动窗口加分类器等传统思路带来的巨大的性能消耗,先使用小模型生成有一定可能性的目标区域候选框,然后在使用更复杂的模型进行细分类和更高精度的区域框回归,并且让这一步递归执行,以此思想构成三层网络,分别为P-Net、R-Net、O-Net,实现快速高效的人脸检测。在输入层使用图像金字塔进行初始图像的尺度变换,并使用P-Net生成大量的候选目标区域框,之后使用R-Net对这些目标区域框进行第一次精选和边框回归,排除大部分的负例,然后再用更复杂的、精度更高的网络O-Net对剩余的目标区域框进行判别和区域边框回归。

下面是整个系统的工作流图

技术细节
FCN(全卷机网络)
全卷积网络就是去除了传统卷积网络的全连接层,然后对其进行反卷积对最后一个卷积层(或者其他合适的卷积层)的feature map进行上采样,使其恢复到原有图像的尺寸(或者其他),并对反卷积图像的每个像素点都可以进行一个类别的预测,同时保留了原有图像的空间信息。
同时,在反卷积对图像进行操作的过程中,也可以通过提取其他卷积层的反卷积结果对最终图像进行预测,合适的选择会使得结果更好、更精细。

IoU
对于某个图像的子目标图像和对这个子目标图像进行标定的预测框,把最终标定的预测框与真实子图像的自然框(通常需要人工标定)的某种相关性叫做IOU(Intersection over Union),经常使用的标准为两个框的交叉面积与合并面积之和。

Bounding-Box regression:
解决的问题:
当IOU小于某个值时,一种做法是直接将其对应的预测结果丢弃,而Bounding-Box regression的目的是对此预测窗口进行微调,使其接近真实值。
具体逻辑
在图像检测里面,子窗口一般使用四维向量(x,y,w,h)表示,代表着子窗口中心所对应的母图像坐标与自身宽高,目标是在前一步预测窗口对于真实窗口偏差过大的情况下,使得预测窗口经过某种变换得到更接近与真实值的窗口。
在实际使用之中,变换的输入输出按照具体算法给出的已经经过变换的结果和最终适合的结果的变换,可以理解为一个损失函数的线性回归。
NMS(非极大值抑制)
顾名思义,非极大值抑制就是抑制不是极大值的元素。在目标检测领域里面,可以使用该方法快速去掉重合度很高且标定相对不准确的预测框,但是这种方法对于重合的目标检测不友好。

Soft-NMS
对于优化重合目标检测的一种改进方法。核心在于在进行NMS的时候不直接删除被抑制的对象,而是降低其置信度。处理之后在最后统一一个置信度进行统一删除。

PRelu
在MTCNN中,卷积网络采用的激活函数是PRelu,带有参数的带有参数的Relu,相对于Relu滤除负值的做法,PRule对负值进行了添加参数而不是直接滤除,这种做法会给算法带来更多的计算量和更多的过拟合的可能性,但是由于保留了更多的信息,也可能是训练结果拟合性能更好。

我的思考
对于Soft-NMS来说,在进行非极大值抑制的时候,可以结合实际应用场景将部分重合的窗口的置信度与其重合度进行线性或者非线性变换来进行更富有逻辑意义的滤除,而不是简单的降低置信度之后进行统一滤除。
在进行卷积的时候,是否能够使用不同大小的卷积核使得卷积网络更加敏捷,同时保留、突出的特征更多,从而进一步提高算法的精度与效率。

原文链接:https://blog.csdn.net/qq_36782182/article/details/83624357

深度学习-MTCNN网络结构详解相关推荐

  1. 深度学习开发环境调查结果公布,你的配置是这样吗?(附新环境配置) By 李泽南2017年6月26日 15:57 本周一(6 月 19 日)机器之心发表文章《我的深度学习开发环境详解:Te

    深度学习开发环境调查结果公布,你的配置是这样吗?(附新环境配置) 机器之心 2017-06-25 12:27 阅读:108 摘要:参与:李泽南.李亚洲本周一(6月19日)机器之心发表文章<我的深 ...

  2. 深度学习 --- 玻尔兹曼分布详解

    上一节我们从Hopfield神经网络存在伪吸引子的问题出发,为了解决伪吸引子带来的问题,详细介绍了模拟退火算法,本节也是基础性的讲解,为了解决伪吸引子还需要引入另外一个重要概念即:玻尔兹曼分布.本篇将 ...

  3. 深度学习 --- BP算法详解(流程图、BP主要功能、BP算法的局限性)

    上一节我们详细推倒了BP算法的来龙去脉,请把原理一定要搞懂,不懂的请好好理解BP算法详解,我们下面就直接把上一节推导出的权值调整公式拿过来,然后给出程序流程图,该流程图是严格按照上一节的权值更新过程写 ...

  4. 深度学习生态圈【详解深度学习工具Keras】

    文章目录: 1 CNTK 2 Tensorflow2.1 介绍2.2 安装2.3 简单例子 3 Keras3.1 介绍3.2 安装Keras3.3 使用Keras构建深度学习模型3.4 一个例子 4 ...

  5. 深度学习 --- BP算法详解(BP算法的优化)

    上一节我们详细分析了BP网络的权值调整空间的特点,深入分析了权值空间存在的两个问题即平坦区和局部最优值,也详细探讨了出现的原因,本节将根据上一节分析的原因进行改进BP算法,本节先对BP存在的缺点进行全 ...

  6. 深度学习归一化算法详解(BN,LN,IN,GN)

    目录 一.Batch Normalization(BN) 1.1为什么提出BN? 1.2BN的基本原理和公式 1.3BN在神经网络中的实现 1.4BN的优点和缺点 二.LN,IN,GN的原理和适用范围 ...

  7. 从未看过如此详细的深度学习推荐系统应用详解,读它!

    作者丨gongyouliu 编辑丨zandy 来源 | 大数据与人工智能(ID:ai-big-data) [导读]2016年DeepMind开发的AlphaGo在围棋对决中战胜了韩国九段选手李世石,一 ...

  8. 【MobileNet】移动端深度学习网络MobileNet详解

    阅读论文MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Application,对移动端深度学习网络Mobi ...

  9. 深度学习 --- Hopfield神经网络详解

    前面几节我们详细探讨了BP神经网络,基本上很全面深入的探讨了BP,BP属于前馈式类型,但是和BP同一时期的另外一个神经网络也很重要,那就是Hopfield神经网络,他是反馈式类型.这个网络比BP出现的 ...

最新文章

  1. 英特尔中国换帅,迎来史上首位女董事长,原总裁杨旭年底退休
  2. github搜索不能用
  3. 唐岩自述奋斗史:从娄底青年到陌陌上市
  4. ifelse语句是否必须以else结尾?
  5. Android BroadcastReceiver,广播与进程通讯,APK安装广播,获取已安装列表
  6. python程序纠错_纠错帮【python文稿AI纠错工具】
  7. 小米随身wifi的linux驱动,小米随身wifi驱动
  8. 创业计划书学习笔记二——创业计划书的目录结构与执行概览部分的写作方法
  9. 2019 版idea设置字体大小
  10. python过滤违禁词_网站全站敏感词检测、广告违禁词查询很简单,一个python脚本轻松搞定...
  11. 塞林格《麦田里的守望者》读后感
  12. 怎么查快递单号,查询物流状态未签收单号
  13. Python环境搭建系列
  14. OpenMMLab 实战营打卡 - 第 四 课 目标检测算法基础
  15. ibatis入门教程
  16. MIPS汇编语言学习笔记23:if 语句分支指令
  17. 项目文件模板-项目实施变更申请表
  18. 和喜欢的女生聊天找不到话题了怎么办?
  19. Python: 房天下小区数据爬取
  20. EPC模式和施工总承包的区别

热门文章

  1. 如何使用 snap 包在 Linux 上安装 ONLYOFFICE 文档
  2. 科技新品 | 卡西欧紧凑型G-SHOCK;三星全新智能手机内存组合;佳能单张纸彩色印刷系统新品...
  3. VS Code-SynthWave '84主题与字体霓虹灯(发光)效果 小白安装教程
  4. 登录页-登录成功后的路由守卫
  5. 【金猿案例展】中新天津生态城——智慧城市产业大脑系统建设
  6. Unity中使用多个灯光时有的灯光没有效果的问题
  7. 一个笼子里面关了鸡和兔子(鸡有2 只脚,兔子有4 只脚,没有任何例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。
  8. swf怎么和php实现交互,用ActionScript与JavaScript实现Flash与网页的交互
  9. 乡村振兴谱写新时代与新篇章
  10. vmware esxi6.x 环境下 oracle 11gR2 ASM 的raw裸映射磁盘更换为虚拟存储磁盘