简述

MTCNN全拼:Multi-task convolutional neural network(多任务卷积神经网络),它的输出层是人脸BOX区域与五个人脸特征点,它是由三层网络架构组成:P-Net、R-Net、O-Net,每一层对应不同的工作。

工作流程

首先将输入的测试样本图片构建成图像金字塔,即不同尺度的图像合集,然后进行深度比较,找到最合适的尺度照片

多任务神经网络 多任务卷积神经网络_cnn

level4是最小尺度的图像直到level是最大尺度的照片,然后将level4这个尺度的照片到全连接层里进行样本比较,一直往下比直到找到与样本较为相似的尺度停止,并将这个尺度的照片作为比较数据输入到后续的全连接层中

P-Net

P-Net是MTCNN第一层,它是全卷积网络,它面有三层卷积层,每一层的卷积核都不一样,下图是它的卷积过程:

多任务神经网络 多任务卷积神经网络_多任务神经网络_02

假设在金字塔中得到的分辨率是12x12那么输入的size是12x12的分辨率,通道是3,也就是RGB的IMAGE,首先先进行卷积核为5X5,通道为10的卷积,在进行卷积核3X3通道为16的卷积,然后在进行1X1通道为32的卷积,最终将特征样本输入到一个人脸分类器里,然后通过人脸分类器来输出一些人脸特征,这个人脸分类器的权重非常低,人脸分类器没有用全连接层,它的工作原理非常简单,就是集合一堆人脸照片样本,然后将比较样本输入,将两个样本比较一下,如果比较值接近那么视为人脸,它不会做任何神经元计算,也没有激活函数,相当于简单的模板比对,通俗易懂的说就是将图像的像素点算成一个值在与人脸分类器里的特征值比较,相当于全连接层里的一个神经元,区别就是不会做loss权重补偿

需要值得注意的是这一层的全连接层里的样本是非常边缘的,权重非常低的,所以它会输出许多BOX与人脸特征信息,这一层主要是将可能是人脸的信息坐标提取出来,以便进行下一层的处理。

R-Net

R-Net也是一个卷积神经网络,R-NET比P-NET更加精准,它也使用三个卷积层,不过不同的是,它不使用人脸分类器,而是一个包含128个神经元的全连接层。

 

多任务神经网络 多任务卷积神经网络_人工智能_03

注意这里输入的图像Size视算法而定,这一层的图像数据是R-Net根据上一层的P-Net输入的Box坐标取到的图像数据,它会拿着这个坐标到图像中取出人脸数据,然后输入到一个包含128个神经元的全连接层里,它会过滤掉更多的错误,然后最后会对输出的结果进行NMS算法优化,NMS算法的核心在于能够在一个局部中,去除掉得分不是很高的数据,如:

多任务神经网络 多任务卷积神经网络_人工智能_04

这些BOX都有一个得分,NMS算法需要通过这些得分来删除掉一些得分不是特别大的得分,所以它叫:非极大值抑制(Non-Maximum Suppression)

抑制后结果:

多任务神经网络 多任务卷积神经网络_人工智能_05

虽然还有几个BOX,但是看着非常清晰明了,也更加准确了。 

O-Net

O-Net是最复杂的一个卷积神经网络,它使用四层卷积层来做处理,第四层的卷积层会更可能的去收集到更多的人脸特征,O-Net会输出人脸的五个标注点,所以这一层需要更可能的收集到更多的样本,会通过更多特定的算法进行卷积,以便提取出人脸的五个标注点信息,它最后一层全连接层里有256个神经元,前面两个神经网络的卷积层不会特别针对五个人脸标注点进行特征卷积,所以得到的人脸标注点信息是非常不准确的,R-Net这一层会稍微准确一点,O-Net这一层是要求一定准确,所以它最后一层卷积主要是针对这五个标注点信息进行卷积特征提取,然后将样本送入到全连接层里

多任务神经网络 多任务卷积神经网络_神经网络_06