本文介绍的人脸检测方法,来源于2015CVPR《A Convolutional Neural Network Cascade for Face Detection》。本篇文章的方法可以说是对经典的Viola jones方法的深度卷积网络实现,并没有让人眼前一亮的地方,但依然有以下几点可以学习。 (1)网络级联下图是该方法的整个流程示意图,可以明显看出是3阶级联(12-net、24-net、48-net)。
级联的工作原理和好处: 1、最初阶段的网络可以比较简单,判别阈值可以设得宽松一点,这样就可以在保持较高召回率的同时排除掉大量的非人脸窗口; 2、最后阶段网络为了保证足够的性能,因此一般设计的比较复杂,但由于只需要处理前面剩下的窗口,因此可以保证足够的效率; 3、 级联的思想可以帮助我们去组合利用性能较差的分类器,同时又可以获得一定的效率保证。 下图展示了,3阶段平均剩下的窗口数量及对应的召回率:
(2)多尺度特征下图是3阶网络的具体网络结构: 由上图可以看出,前2阶的网络都非常简单,只有第3阶才比较复杂。这不是重点,重点是我们要从上图中学习多尺度特征组合。 以第2阶段的24-net为例,首先把上一阶段剩下的窗口resize为24*24大小,然后送入网络,得到全连接层的特征。同时,将之前12-net的全连接层特征取出与之拼接在一起。最后对组合后的特征进行softmax分类。 下图展示了,使用和不使用多尺度特征的差异:
由图可见,采用多尺度特征可以相同条件下获得相对较高的召回率,即提升了网络的分类能力。 (3)校正网络-将回归转化为分类问题大家应该在整体流程示意图中注意到了:每一个分类网络的输出都会经过一个对应的校正网络之后,才会被送到下一阶段。 该校正网络是为了解决下面的定位不准的问题的:
在上图中,蓝色框是(如12-net)分类网络的输出,红色框是经过对应的12-calibration-net校正后的输出。 对于矩形框的校正,我们只需要3个参数,一个是水平平移量xn,一个是垂直平移量yn,还有一个是宽高缩放比例sn。即我们要将矩形框的控制坐标调整为:
直觉上来看,这是要解决一个回归问题,需要回归出3个参数。但是连续的回归问题是很难解决的,因此文章将此转化为离散的分类问题。文章首先,将3个参数分别列出一些值:
于是,我们的目标就是建立一个45类的分类器,毕竟神经网络的强项在于分类。 但是,这个分类器的准确性仍然不是很稳定。因此,文章选择得分比较高的几类做平均,最后进行校正,即:
(4)级联的训练方法对于级联问题,文章采用了特殊的训练策略。
1、按照一般的方法组织正负样本训练第一阶段的12-net和12-calibration-net网络;
2、 利用上述的1层网络在AFLW数据集上作人脸检测,在保证99%的召回率的基础上确定判别阈值T1。
3、将在AFLW上判为人脸的非人脸窗口作为负样本,将所有真实人脸作为正样本,训练第二阶段的24-net和24-calibration-net网络;
4、重复2和3,完成最后阶段的训练
|