-
相比于Faster-RCNN等需要进行多个人脸检测阶段的算法,SSD算法可在单阶段检测中同时进行目标类别预测和候选框位置回归,进一步提高了检测速度。基于SSD算法的多尺度人脸检测模型如图1所示,该模型采用
$ 3 \times 3 $ 尺寸卷积核对每一层特征层进行遍历卷积,在加速检测的同时,实现了多尺度检测效果。当输入图像包含被检测人脸时,经过多个特征层的特征提取,可基于每一特征层生成不同尺度的离散人脸边界框和类别得分,最终经过非极大值抑制处理,输出检测人脸。SSD算法采用倒金字塔式的特征图检测来实现多尺度人脸检测,从浅层特征图
${\text{Conv}}4\_3$ 、${\text{Conv}}7$ 、${\text{Conv}}8\_2$ 到深层特征图${\text{Conv}}9\_2$ 、${\text{Conv}}10\_2$ 、${\text{Conv}}11\_2$ ,特征图尺寸不断减小。以38×38×512尺寸的特征图为例,采用3×3×512大小的卷积核对其进行卷积,得到人脸/非人脸得分和人脸边界框的位置回归。假设38×38×512尺寸的特征图上有四种不同比例的检测框,那么该特征图就会产生38×38×4个默认检测框,并且每个默认检测框会被预测出一个人脸/非人脸得分和四个位置偏移量(cx, cy, w, h)。SSD算法在训练时需要对真实标注的位置信息和人脸/非人脸得分进行预处理,并将其对应到每个默认检测框上。首先计算默认框
$ {R_d} $ 和真实框$ {R_g} $ 的交并比,接着取交并比大于50%的默认框放入候选正样本集,取交并比小于50%的默认框经策略筛减后放入候选负样本集。$$ IoU = \frac{{{R_d} \cap {R_g}}}{{{R_d} \cup {R_g}}} $$ (1) -
所提出的基于汇聚级联卷积神经网络的多尺度旋转人脸检测模型如图2所示,它的主网络部分采用SSD在不同卷积层上提取多个尺度的特征图,并采用密集连接的策略生成候选人脸特征图集合,作为附加网络部分的输入。附加网络部分由两个浅层的人脸分类网络24-classification-net和12-classification-net,以及两个浅层的人脸回归网络46-regression-net和22-regression-net组成。人脸分类网络和人脸回归网络内部是平行关系,人脸分类网络与人脸回归网络之间是级联关系。主网络和附加网络中采用汇聚级联的设置方法,可以进一步加快对旋转人脸的检测速度。
图 2 基于汇聚级联卷积神经网络的多尺度旋转人脸检测模型
Figure 2. Multi-scale rotating face detection model based on convergent cascaded convolutional neural network
对于浅层人脸分类网络24-classification-net,它的输入是缩放为24×24×512大小的候选人脸特征图。在该网络中直接完成人脸/非人脸检测、人脸边界框位置更新和人脸RIP角度粗估计。通过24-classification-net后,消除了大部分置信度较低的候选人脸窗,大大降低了后续人脸回归网络的检测工作量。为了进一步加快速度,24-classification-net仅粗略估计候选人脸的RIP主方向,输出
$ [ - 45^\circ ,{\kern 1 pt} {\kern 1 pt} 45^\circ ] $ 、$ (45^\circ ,{\kern 1 pt} {\kern 1 pt} {\kern 1 pt} 135^\circ ] $ 、$ (135^\circ ,{\kern 1 pt} {\kern 1 pt} 225^\circ ] $ 和$ (225^\circ ,{\kern 1 pt} {\kern 1 pt} 315^\circ ) $ 四个主方向区间,并将输出的人脸边界框旋转到$ [ - 45^\circ ,{\kern 1 pt} {\kern 1 pt} 45^\circ ] $ 区间内,该过程通过直接对人脸边界框旋转$ {\text{90}}^\circ $ 、$ {\text{180}}^\circ $ 或者$ {\text{270}}^\circ $ 度完成。在24-classification-net之后,利用更新的人脸边界框在原始图像上采样三通道的候选人脸窗口作为46-regression-net的输入,并将候选人脸窗口缩放为46×46×3大小。在46-regression-net中,进一步完成人脸/非人脸检测、人脸边界框位置更新和人脸RIP角度精确回归,回归是指在$ [ - 45^\circ ,{\kern 1 pt} 45^\circ ] $ 区间内连续估计的人脸RIP角度。在24-classification-net和46-regression-net之后,采用旋转NMS合并高重叠率的人脸边界框。另一条平行线路将SSD的两个更深层特征图与12-classification-net和22-regression-net级联。与24-classification-net和46-regression-net的组合类似,12-classification-net和22-regression-net仅在输入尺寸和网络深度上略有调整。
-
对于一个m×n×k尺寸的特征图,在每一个单元格内生成四个固定大小的矩形框,一共可以产生m×n×4个矩形框。这些矩形框内包围的特征图区域,经过缩放后产生候选人脸特征图作为下一层人脸分类网络的输入。
以图2中12×12×256尺寸的特征图为例,每个单元格对应四个固定大小的矩形框,所有单元格共可以产生12×12×4=576个矩形框。将这些矩形框内包围的特征图区域缩放为12×12×256尺寸后,就产生了候选人脸特征图集合,该集合中共包含576个候选人脸特征图。
-
人脸分类网络包括24-classification-net和12-classification-net,它们之间是平行关系。这两个网络的结构如图3和图4所示。图中,“Conv”、“MP”、“FC”和“ReLU”分别表示卷积层、最大池化层、全连接层和ReLU层,并且在卷积层要进行补边操作。
对于输入的每一幅候选人脸特征图
$ w $ ,人脸分类网络只完成三个目标:人脸/非人脸检测,人脸边界框位置更新和人脸RIP角度粗估计,归纳如下:$$ [c,{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} t,{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} d] = F(w) $$ (2) 式中:
$ F $ 表示人脸分类网络模型;$ c $ 表示人脸置信度得分;$ t $ 表示人脸边界框的回归向量;$ d $ 表示人脸主方向粗估计得分。对于人脸/非人脸检测,设置softmax损失函数:
$$ {L_{Face}} = y\log c + (1 - y){\rm log}(1 - c) $$ (3) 式中:当输入的候选人脸特征图
$ w $ 是人脸时,$ y = 1 $ ,否则$ y = 0 $ 。对于人脸边界框位置更新,设置第二个损失函数:
$$ {L_{BBox}}(t,{t^ * }) = S(t - {t^ * }) $$ (4) 式中:
$ t $ 和$ {t^ * } $ 分别表示预测人脸边界框和真实人脸标注框;$ S $ 表示$ {\text{Smooth L}}1 $ 函数。人脸主方向粗估计以离散四元分类的方式快速估计人脸主方向,其损失函数为:
$$ {L_{Pose}} = - \sum\limits_{i = 1}^4 {{y_i}} \ln {d_i} $$ (5) 式中:
$ i $ 表示人脸主方向标签,1~4分别表示正向脸、右向脸、反向脸和左向脸。当$ {y_i} $ 对应正确的人脸主方向时,$ {y_i} = 1 $ ,其余都等于0。将以上三个目标函数组合,得到人脸分类网络的总损失函数:
$$ \mathop {\min }\limits_F L = {L_{Face}} + {k_1}{L_{BBox}} + {k_2}{L_{Pose}} $$ (6) 式中:
$ {k_1} $ 和$ {k_2} $ 为平衡$ {L_{Face}} $ 、$ {L_{BBox}} $ 和$ {L_{Pose}} $ 的权重。通过优化公式(6),过滤掉大部分低置信度候选人脸窗。对于保留的候选人脸窗,先对其进行位置更新,接着根据粗估计的人脸主方向对其进行旋转。人脸分类网络粗估计的人脸RIP角度
$ {\theta _1} $ 计算如下:$$ \begin{gathered} id = \mathop {\arg \max }\limits_i {d_i} \\ {\theta _1} = \left\{ {\begin{array}{*{20}{c}} {0^\circ ,} \\ { - 90^\circ ,} \\ { - 180^\circ ,} \\ { - 270^\circ ,} \end{array}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} \begin{array}{*{20}{c}} {id = 1} \\ {id = 2} \\ {id = 3} \\ {id = 4} \end{array}} \right. \\ \end{gathered} $$ (7) 式中:
$ {d_i} $ 表示人脸主方向粗估计得分。根据分类得到的$ id $ 不同,候选人脸窗相应旋转$ 0^\circ $ 、$ - 90^\circ $ 、$ - 180^\circ $ 和$ - 270^\circ $ 。经过人脸分类网络之后,人脸RIP角度的可能存在范围从$ 360^\circ $ 减小到$ - 45^\circ {\kern 1 pt} $ ~$ {\kern 1 pt} 45^\circ $ 之间。在人脸分类网络的训练阶段,由于大部分人脸数据集中包含的人脸都是正向脸,需要在360°范围内对人脸数据集进行旋转扩充。对于扩充后的人脸数据集中的人脸,当它的RIP角度在
$ [{{ - }}45^\circ ,{\kern 1 pt} {\kern 1 pt} 45^\circ ] $ 内时,定义为正向脸;在$[45^\circ ,{\kern 1 pt} {\kern 1 pt} {\kern 1 pt} 135^\circ ]$ 内时,定义为右向脸;在$[135^\circ ,{\kern 1 pt} {\kern 1 pt} 225^\circ ]$ 内时,定义为反向脸;在$[225^\circ ,{\kern 1 pt} {\kern 1 pt} 315^\circ ]$ 内时,定义为左向脸。此外,还需要定义三种类型的人脸窗口:正样本、负样本和中间样本。正样本与人脸标注框的$ {{IoU}} \geqslant {\text{0}}{\text{.7}} $ ,负样本与人脸标注框的$ {{IoU}} \leqslant {\text{0}}{\text{.3}} $ ,中间样本与人脸标注框的${\text{0}}{{.3 \lt {{IoU}} \lt 0}}{\text{.7}}$ 。正负样本用以进行人脸得分计算,正样本和中间样本用以进行人脸边界框位置更新。 -
经过人脸分类网络24-classification-net和12-classification-net处理之后,利用旋转更新的人脸边界框在原始图像上采样三通道的候选人脸窗,此时所有候选人脸窗都处于
$ [ - 45^\circ ,{\kern 1 pt} {\kern 1 pt} 45^\circ ] $ 区间内。对候选人脸窗进行缩放后(缩放尺寸为46×46×3或22×22×3),送入平行设置的人脸回归网络46-regression-net和22-regression-net,其网络结构如图5和图6所示,需要注意的是人脸回归网络的卷积层不执行边缘填充操作。人脸回归网络在人脸分类网络的基础上更准确地进行人脸得分计算和人脸边界框位置更新。由于人脸分类网络已将人脸RIP角度范围缩小到
$ [{{ - }}45^\circ ,{\kern 1 pt} {\kern 1 pt} 45^\circ ] $ 区间内,人脸回归网络连续回归候选人脸窗的精确RIP角度$ {\theta _2} $ ,$ {\theta _2} $ 的连续回归可采用参考文献[16]的级联回归模式。结合人脸分类网络估计的RIP角度
$ {\theta _1} $ 和人脸回归网络计算的RIP角度$ {\theta _2} $ ,得到候选人脸窗的总RIP角度$ {\theta _{all}} $ :$$ {\theta _{all}}{\text{ = }}{\theta _1} + {\theta _2} $$ (8) 在人脸回归网络的训练阶段,需要在
$ [ - 45^\circ ,{\kern 1 pt} {\kern 1 pt} 45^\circ ] $ 范围内均匀旋转三通道的候选人脸窗集合以生成训练样本。 -
将人脸回归网络检测的人脸边界框按照得分进行降序排序。对此刻遍历的人脸边界框与剩余的人脸边界框执行交集运算,得到相应的相交点集合,通过计算相交点集合包围的凸多边形面积,得到每两个人脸边界框的IoU,去掉大于设定阈值的人脸边界框,保留小于设定阈值的人脸边界框,以得到最终的多尺度旋转人脸检测结果。
-
文中算法基于
$ {\text{TensorFlow}} $ 深度学习框架实现。为对比文中算法的有效性和优越性,设置PCN[13]、Faster R-CNN[14]、SSD[15]和Cascade CNN[16]等多个对比算法。训练汇聚级联卷积网络所需的数据在经过旋转的FDDB人脸数据集[17]和WIDER FACE人脸数据集[18]上采集,并且人脸真实标注都被调整为正方形。网络采用反向传播的随机梯度下降(Stochastic Gradient Descent, SGD)进行优化,最大迭代次数设置为$ {10^{\text{5}}} $ ,前$ 7.5 \times {10^4} $ 次迭代,学习率设置为$ {10^{ - 3}} $ ,后$ 2.5 \times {10^4} $ 次迭代,学习率设置为$ {10^{ - 4}} $ 。权重衰减系数设置为0.0005,动量参数设置为0.9,所有层均由零高斯分布初始化,标准差设置为0.01,每批次包含正样本,负样本和中间样本的比例约为$ 3:3:2 $ 。 -
FDDB人脸数据集在具有遮挡、大角度偏转、低分辨率和模糊对焦等复杂场景中标记了5171个人脸框。为了更好地评估各个算法对旋转人脸的检测性能,对FDDB人脸数据集中的图像分别进行了
$ 90^\circ $ 、$ 180^\circ $ 和$ 270^\circ $ 旋转,得到Rotate FDDB数据集。整理文中算法和对比算法在Rotate FDDB数据集上的实验结果,形成ROC曲线如图7所示。通过分析各算法的ROC曲线走向可知,文中算法的检测性能优于SSD和Cascade CNN算法,在假正率较低时,文中算法的检测性能比PCN和Faster R-CNN更强,在假正率较高时,文中算法的检测性能与PCN和Faster R-CNN基本持平。这说明在主干网络的卷积特征层,通过汇聚级联多个浅层人脸分类网络和人脸回归网络,逐步完成人脸得分计算、人脸RIP角度估计和人脸边界框位置更新,可提升精确检测旋转人脸的能力。
-
WIDER FACE人脸数据集在具有遮挡、模糊对焦、平面旋转和尺度姿态变化等多种复杂场景中标记了393703个人脸框,是目前人脸检测领域最具挑战性的基准数据集。从该数据集中选择部分包含平面旋转人脸的图片,建立了一个包含391张图片和1027个旋转人脸的Rotate Sub-WIDER FACE数据集。
整理文中算法和对比算法在Rotate Sub-WIDER FACE数据集上的实验结果,形成ROC曲线如图8所示。通过分析各算法的ROC曲线走向可知,与其他四种旋转人脸检测算法相比,文中算法达到了最佳的检测效果,进一步证明了所提出的汇聚级联卷积神经网络的有效性。图9为文中算法在Rotate Sub-WIDER FACE数据集中的部分检测效果图。
-
文中算法旨在低时间损耗下完成精确的旋转人脸检测。为了定量比较文中算法与对比算法的精度和速度,选择Rotate Sub-WIDER FACE数据集进行实验,并统计文中算法与PCN、Faster R-CNN、SSD和Cascade CNN等算法在100次误报时的精度与速度,如表1所示。
表 1 文中算法与PCN、Faster R-CNN、SSD和Cascade CNN等算法在100次误报时的速度和精度对比
Table 1. Comparison of speed and precision of PCN, Faster R-CNN, SSD, Cascade CNN and proposed algorithm in 100 false positives
由表1可以看出,文中算法的运行速度几乎与PCN和Cascade CNN相同,且远高于Faster R-CNN和SSD算法,这主要受益于文中网络采用的汇聚级联框架和人脸分类网络对人脸主方向的快速分类。此外,人脸回归网络对人脸RIP角度的连续精确回归也使文中算法的检测精度高于其他四种对比算法,进一步证明文中算法具有较高的精确性和实时性。
Rotating face detection based on convergent cascaded convolutional neural network
-
摘要: 针对大规模姿态变化和大角度人脸平面旋转(Rotation-in-Plane, RIP)等复杂条件下,多尺度旋转人脸检测精度低的问题,提出了一种基于汇聚级联卷积神经网络(Convolutional Neural Networks, CNN)的旋转人脸检测方法。采用由粗到精的级联策略,在主网络SSD的多个特征层上汇聚级联了多个浅层的卷积神经网络,逐步完成人脸/非人脸检测、人脸边界框位置更新和人脸RIP角度估计。该方法在Rotate FDDB和Rotate Sub-WIDER FACE数据集上取得了较好的检测效果。在Rotate Sub-WIDER FACE数据集出现100次误报时的检测精度为87.1%,速度为45 FPS,证明该方法可在低时间损耗下完成精确的旋转人脸检测。Abstract: To solve the problem of low accuracy of multi-scale rotating face detection under complex conditions such as large-scale pose change and large-angle face rotation-in-plane, a rotating face detection method based on parallel cascade convolution neural network is proposed. Using a coarse-to-fine cascading strategy, multiple shallow convolutional neural networks are cascaded in parallel on multiple feature layers of the main network SSD. Face/non-face detection, face boundary box position update and face RIP angle estimation are gradually completed. Experimental results on Rotate FDDB dataset and Rotate Sub-WIDER FACE dataset show that the proposed method achieves advanced face detection. The detection precision of the method is 87.1% and the speed is 45 FPS when 100 false positives occur in the rotating Sub-WIDER FACE dataset, which proves that the method can achieve accurate rotating face detection with low time loss.
-
Key words:
- rotating face detection /
- parallel cascade /
- CNN /
- scale transformation /
- rotation-in-plane
-
表 1 文中算法与PCN、Faster R-CNN、SSD和Cascade CNN等算法在100次误报时的速度和精度对比
Table 1. Comparison of speed and precision of PCN, Faster R-CNN, SSD, Cascade CNN and proposed algorithm in 100 false positives
-
[1] Guo J, Zhu X, Zhao C, et al. Learning meta face recognition in unseen domains [C]//Computer Vision and Pattern Recognition, IEEE, 2020: 6163-6172. [2] Liu H Z, Yang S P, Yuan J Z, et al. Multi-scale face detection based on single neural network [J]. Journal of Electronics and Information Technology, 2018, 40(11): 63-70. (in Chinese) [3] Fang Y, Chi Z, Yang W, et al. Blind visual quality assessment for image super-resolution by convolutional neural network [J]. Multimedia Tools & Applications, 2018, 77(10): 29829-29846. [4] Xiao Y, Cao D, Gao L. Face detection based on occlusion area detection and recovery [J]. Multimedia Tools and Applications, 2020, 79(2): 16531-16546. [5] Ma D, Lai H C. In-plane rotation face detection based on improved SURFs [J]. Computer Engineering and Design, 2018, 39(9): 125-129. (in Chinese) [6] Hu P, Ramanan D. Finding tiny faces [C]//Computer Vision and Pattern Recognition, IEEE, 2017: 1522-1530. [7] Rezaei M, Ravanbakhsh E, Namjoo E, et al. Assessing the effect of image quality on SSD and faster R-CNN networks for face detection [C]//27th Iranian Conference on Electrical Engineering (ICEE), IEEE, 2019: 1589-1594. [8] Zhang H T, Li M L, Dong S H. Two-layer cascaded convolutional neural network for face detection [J]. Journal of Image and Graphics, 2019, 24(2): 49-60. (in Chinese) [9] Hao Z, Liu Y, Qin H, et al. Scale-aware face detection [C]//Computer Vision and Pattern Recognition, IEEE, 2017: 1913-1922. [10] Wu S, Kan M, He Z, et al. Funnel-structured cascade for multi-view face detection with alignment-awareness [J]. Neurocomputing, 2017, 221(C): 138-145. [11] Priya G N, Banu R S D W. A robust rotation invariant multiview face detection in erratic illumination condition [J]. International Journal of Computer Applications, 2012, 57(20): 46-51. [12] Kylberg G, Sintorn I M. On the influence of interpolation method on rotation invariance in texture recognition [J]. Eurasip Journal on Image and Video Processing, 2016(1): 17. doi: 10.1186/s13640-015-0097-y [13] Shi X, Shan S, Kan M, et al. Real-time rotation-invariant face detection with progressive calibration networks [C]//Computer Vision and Pattern Recognition, IEEE, 2018: 2295-2303. [14] Jiang H, Learned-Miller E. Face detection with the faster R-CNN [C]//IEEE International Conference on Automatic Face & Gesture Recognition, IEEE, 2017: 650-657. [15] Liu W, Anguelov D, Erhan D, et al. SSD: Single shot multibox detector [C]//European Conference on Computer Vision, 2016: 21-37. [16] Li H, Lin Z, Shen X, et al. A convolutional neural network cascade for face detection [C]//Computer Vision and Pattern Recognition, IEEE, 2015: 5325-5334. [17] Jain V, Learned-Miller E. FDDB: A benchmark for face detection in unconstrained settings [R]. US: UMass Amherst, 2010. [18] Yang S, Luo P, Chen C L, et al. WIDER FACE: A face detection benchmark [C]//IEEE Conference on Computer Vision and Pattern Recognition, IEEE, 2016: 5525-5533.