人工智能:人脸识别与搜索
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2 MTCNN 人脸检测算法

在基于深度学习的人脸检测算法中,MTCNN 人脸检测算法[9]很可能是目前应用最广泛的一个。与 Cascade CNN 人脸检测算法类似,MTCNN 人脸检测算法也采用了级联CNN 分类(初始的人脸检测候选框逐级求精)的方法。图2-3所示为MTCNN 的整体流程,MTCNN 人脸检测算法首先将每张原始图像缩放成多种不同的尺度,得到不同尺度的图像形成的金字塔。然后,它分别使用:①一个全卷积网络P-Net 生成初始的候选人脸区域并进行校正和非极大值抑制(Non-Maximum Suppression,NMS);②一个R-Net 卷积神经网络进一步过滤候选框并进行校正和NMS;③一个O-Net 卷积神经网络对候选的人脸检测框进行最后的求精和校正,并生成最终的人脸检测结果和5个人脸特征点。

img

图2-3 MTCNN 的整体流程[9]

P-Net 卷积神经网络主要生成初始人脸区域的候选窗口和边界框的回归向量,并用该边界框做回归,对候选窗口进行校准(校正),然后通过NMS 合并高度重叠的候选框。R-Net 卷积神经网络将经过P-Net 卷积神经网络的候选框在R-Net 卷积神经网络中过滤,然后利用边界框的回归值微调候选窗体,再利用NMS 去除重叠窗体。O-Net 卷积神经网络功能与R-Net 卷积神经网络作用类似,只是在去除重叠候选窗口的同时,显示5个人脸关键点定位[10]

某种程度上来说,MTCNN 是Cascade CNN 的改进:MTCNN 的P-Net是对Cascade CNN 的12-Net 的改进,MTCNN 的R-Net 是对Cascade CNN的24-Net 的改进,MTCNN 的O-Net 是对Cascade CNN 的48-Net 的改进。两个算法的3个对应网络对输入训练图像的尺寸要求也相同(分别是12像素×12像素、24像素×24像素、48像素×48像素3种尺寸);训练模型阶段的细节方面,MTCNN 与Cascade CNN 也较为相似。两个算法主要在神经网络结构的设计上有所不同,图2-4所示为MTCNN 人脸检测算法的网络结构,包括P-Net、R-Net 和O-Net。对比图2-4和图2-1就能发现两种算法的对应网络结构的相似之处和不同之处。MTCNN的一个较小的改进是将卷积核的大小从5×5改为3×3。而且,MTCNN的P-Net 是全卷积网络(FCN),代替了12-Net 的滑动窗口运算,提高了效率。

img

图2-4 MTCNN 的网络结构[9]

另一个不同之处是,Cascade CNN 的48-Net 最终提取得到的特征本质上是12像素×12像素、24像素×24像素、48像素×48像素3种尺度下的卷积特征的拼接(24-Net 提取得到的特征本质上是12像素×12像素、24像素×24像素两种尺度下的卷积特征的拼接)。MTCNN 的处理则更为简单和直接,该算法在初始时直接将图像缩放为不同的尺寸,将原始图像和缩放后的图像一起输入到P-Net 中使用(注:与Cascade CNN 的训练阶段类似,P-Net 需要在这些金字塔图像上随机选取不同的12像素×12像素的图像切片作为负样本输入,正样本也使用标注的人脸区域)。因此,MTCNN 在原始图像级别进行图像的多尺度处理,而Cascade CNN 在神经网络层进行不同尺度图像的卷积特征融合。

MTCNN 还具有多任务学习的显著特点,即人脸检测和5个人脸关键点定位这两个任务通过同一个神经网络完成。

另外,MTCNN 在 R-Net 中还增加了难样本挖掘(Online Hard Example/Sample Mining,OHEM)模块,在模型训练中针对难例(难样本,hard example)进行适应训练。具体而言,在每个批(Mini-Batch)中,从所有样本的前向传播中将计算得到的损失排序,然后只取其中loss最大的前70%的样本作为难样本。在反向传播(BP)中只计算这些难样本,忽略那些简单的样本[11]

整体而言,MTCNN 人脸检测算法具有简单、易理解、易实现、多任务学习的显著优点。在GitHub 上,有若干开源实现的MTCNN 源代码,有兴趣的读者可以通过文献[12]中的源代码深入了解。更多的参考文献,读者可以阅读文献[13-15]深入了解相关的技术实现细节。