MTCNN工作原理「建议收藏」

MTCNN工作原理「建议收藏」MTCNN工作原理MTCNN是什么MTCNN,Multi-taskconvolutionalneuralnetwork(多任务卷积神经网络),将人脸区域检测与人脸关键点检测放在了一起,基于cascade框架。总体可分为PNet、RNet、和ONet三层网络结构,MTCNN实现流程构建图像金字塔首先讲图像进行不同尺度的变换,构建图像金字塔,以适应不同大小的人脸的进行检测。…

大家好,又见面了,我是你们的朋友全栈君。



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快速生成人脸候选窗口。

Proposal Network

R-Net

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

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

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

Refine Network

O-Net

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

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

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

Output Network

集成架构及系统思想

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

参考文献

  1. Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks
  2. Ways for Visualizing Convolutional Networks
  3. 全卷积网络 FCN 详解
  4. FCN
  5. 非极大值抑制(Non-Maximum Suppression,NMS)
  6. 【论文解析】MTCNN论文要点翻译
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/149814.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号