人脸检测--FaceBoxes: A CPU Real-time Face Detector with High Accuracy

FaceBoxes: A CPU Real-time Face Detector with High Accuracy

人脸检测已经研究了很多年,有很多算法。但是目前基于深度学习CNN网络的人脸检测算法效果是不错,但是计算量太大,如果使用CPU很难做到实时处理。本文设计了一个CNN网络用于人脸检测,在速度和精度上实现了很好的平衡。
the proposed detector runs at 20 FPS on a single CPU core and 125 FPS using a GPU for VGA-resolution images

人脸检测的挑战主要来自两点:1)人脸在复杂背景图像中的多变性,检测器需要完成一个复杂的人脸有无问题的二分类;2)人脸位置和尺度的搜索空间较大,这就要求检测器的计算效率要高。这两点是有点相互矛盾的,因为高精度的人脸检测器通常计算量都是很大。
怎么平衡这两者之间的矛盾,算法上主要有两条思路:第一条路就是基于手工设计特征,代表性检测器有基于 Adboost 的 Viola-Jones face detector 和 基于级联结构的 DPM ,但是这些方法过于依赖不鲁棒的手工设计的特征,各个模块分开优化,使得整个系统是次优的sub-optimal。 第二条路是最近几年基于深度学习CNN网络的人脸检测器。基于 CNN 的人脸检测虽然性能有较大提升,但是计算量太大。后来有学者提出 cascaded CNN 来 boost the performance and keep efficient。但是 cascaded CNN 有三个问题:1)检测的速度和图像中人脸数目有关,人脸越多,检测速度越慢。2)基于级联的检测器每个模块分开优化,导致模型的训练难度加大,得到 的模型是 sub-optimal,3)对于 VGA-resolution,cascaded CNN在 CPU上的速度是 14 FPS,没有得到实时

3 FaceBoxes 本文提出的系统
受 Faster R-CNN 的 RPN 和 SSD 中的多尺度机制 启发,我们提出了一个在CPU可以实时检测人脸的 FaceBoxes
人脸检测--FaceBoxes: A CPU Real-time Face Detector with High Accuracy_第1张图片

FaceBoxes 中含有三个主要的contributions:
1)the Rapidly Digested Convolutional Layers (RDCL), 2) the Multiple Scale Convolutional Layers (MSCL) , 3)the anchor densification strategy

3.1. Rapidly Digested Convolutional Layers 这个模块主要是解决速度问题
对于CPU来说,大多数CNN网络的计算量很大主要是因为 卷积层的 输入 输出 和 卷积核 尺寸较大
the convolution operation for CPU is extremely time-consuming when the size of input, kernel and output are large

我们的 RDCL 通过选择合适尺寸的卷积核和降低输出特征图通道的数量 来减小输入特征图的尺寸,具体是以下三个步骤:
1) Shrinking the spatial size of input: the stride size of Conv1, Pool1, Conv2 and Pool2 are 4, 2, 2 and 2, respectively
2)Choosing suitable kernel size: to keep efficient as well as effective, we choose 7×7, 5×5 and 3×3 kernel size for Conv1, Conv2 and all Pool layers, respectively
3)Reducing the number of output channels: 采用 C.ReLU activation function,C.ReLU can double the number of output channels by
simply concatenating negated outputs before applying ReLU. Using C.ReLU significantly increases speed with negligible decline in accuracy.

3.2. Multiple Scale Convolutional Layers 这个模块主要是负责解决多尺度人脸的检测问题
1)Multi-scale design along the dimension of network depth:多个尺度递减的网络层得到多尺度特征图
2)Multi-scale design along the dimension of network width: 采用 Inception module

人脸检测--FaceBoxes: A CPU Real-time Face Detector with High Accuracy_第2张图片

3.3. Anchor densification strategy
default anchors 模板长宽比是 1:1,因为人脸是正方形的。因为 scale of anchor 和 卷积层的 stride size 多样性,导致 anchor 的采样密度在不同尺寸特征图上不一致。导致的问题是 对于小尺寸的人脸检测效果不好 small anchors (i.e., 32 × 32 and 64 × 64) are too sparse, which results in low recall rate of small faces

这里我们要做的是 different scales of anchor have the same density

人脸检测--FaceBoxes: A CPU Real-time Face Detector with High Accuracy_第3张图片

3.4. Training
Training dataset: 在 WIDER FACE 12,880 张图像上训练的
Data augmentation: 数据增强 Color distortion, Random cropping, Scale transformation,Horizontal flipping, Face-box filter
Hard negative mining:挑选好的负样本进行训练,保持正负样本比例 3:1

4 Experiments
人脸检测--FaceBoxes: A CPU Real-time Face Detector with High Accuracy_第4张图片

人脸检测--FaceBoxes: A CPU Real-time Face Detector with High Accuracy_第5张图片


人脸检测--FaceBoxes: A CPU Real-time Face Detector with High Accuracy_第6张图片

你可能感兴趣的:(人脸检测识别)