FaceBoxes: 高精度的CPU实时人脸检测器

论文题目:《FaceBoxes: A CPU Real-time Face Detector with High Accuracy》python

论文连接:https://arxiv.org/pdf/1708.05234.pdfapi

年份:2017网络

论文做者:Shifeng Zhang等人框架

做者单位:中国科学院自动化研究所等工具

公众号CVpython同步发布优化

1. 论文要解决什么问题?

要保持高精度,还要在CPU上达到实时?还真有点难,可是Shifeng Zhang等人针对这个问题,提出了人脸检测模型FaceBoxes,表现SOTA。lua

2. FaceBoxes如何解决问题?

FaceBoxes框架如图1所示,主要包括Rapidly Digested Convolutional Layers (RDCL)和Multiple Scale Convolutional Layers (MSCL)模块,还有anchor密集策略。blog

img

2.1 RDCL

RDCL的目的是为了快速下采样,让模型可以在CPU上面能达到实时。RDCL采用的方法是缩小空间大小,选择合适的卷积核大小和减小输出通道。排序

  • 缩小空间大小:Conv1, Pool1, Conv2 and Pool2 的步长分别是4, 2, 2和 2, 空间大小快速下降了32倍。
  • 合适的卷积核大小:前几层的一些核应该是比较小,以便加速,可是也应该足够大,以减轻空间大小减少而带有的信息丢失(为何能够减小信息丢失s)。Conv1, Conv2的核大小为7x7, 5x5,全部池化层的核大小为3x3。
  • 减小输出通道:使用C.ReLU减小输出通道,操做如图2(a)所示。由于C.ReLU做者统计发现底层卷积时卷积核存在负相关,也就是说假设咱们原本使用10个卷积核,可是如今只须要用5个卷积核,另外5个卷积核的结果能够经过负相关获得。结果代表使用C.ReLU加速的同时也没损失精度。

img

2.2 MSCL

MSCL是为了获得更好地检测不一样尺度的人脸。图片

  • 深度:在MSCL模块中,随着网络的加深,便获得不一样大小的特征映射(多尺度特征)。在不一样大小特征映射中设置不一样大小的anchor,有利于检测不一样大小的人脸。
  • 宽度:Inception由多个不一样核大小的卷积分支组成。在这些分支中,不一样的网络宽度,也有不一样大小的特征映射。经过Inception,感觉野也丰富了一波,有利用检测不一样大小的人脸。

MSCL在多个上尺度进行回归和分类,在不一样尺度下检测不一样大小的人脸,可以大大提升检测的召回率。

2.3 Anchor密度策略

Inception3的anchor大小为32,64和128,而Conv3_2和Con4_2的anchor大小分别为256,512。anchor的平铺间隔等于anchor对应层的步长大小。例如,Con3_2的步长是64个像素点,anchor大小为256x256,这代表在输入图片上,每隔64个像素就会有一个256x256的anchor。关于anchor的平铺密度文中是这样定义的:
$$
A_{density}=A_{scale}/A_{interval}
$$
其中$A_{density}$和$A_{interval}$分别为anchor的尺度和平铺间隔。默认的平铺间隔(等于步长)默分别认为32,32,32,64和128。因此Inception的平铺密度分别为1,2,4,而Con3_2和Con4_2的平铺密度分别为4,4。

能够看出来,不一样尺度的anchor之间存在平铺密度不平衡的问题,致使小尺度的人脸召回率比较低,所以,为了改善小anchor的平铺密度,做者提出了anchor密度策略。为了使anchor密集n倍,做者均匀地将$A_{number}=n^2$个anchor铺在感觉野的中心附近,而不是铺在中心,如图3所示。将32x32的anchor密集4倍,64x64的anchor密集两倍,以保证不一样尺度的anchor有相同的密度。

image-20201121200018610

2.4 训练

数据扩增

  • 颜色扭曲
  • 随机采样
  • 尺度变换
  • 水平翻转
  • Face Boxes过滤:通过数据扩增的图片中,若是face boxes的中心还在图片上,则保留重叠部分,而后把高或者宽<20的过滤掉(这个操做不是很懂了,为何把小目标过滤掉?)

匹配策略:训练期间,须要肯定哪些anchor对应脸部的bounding box,咱们首先用最佳jaccard重叠将每一张脸匹配到anchor,而后将anchor匹配到jaccard重叠大于阈值的任何一张脸。

Loss function: 对于分类,采用softmax loss,而回归则采用smooth L1 损失。

Hard negative mining:anchor 匹配后,发现不少anchor是负的,这会引入严重的正负样本不平衡。为了快速优化和稳定训练,做者对loss进行排序而后选择最小的,这样子使得负样本和正样本的比例最大3:1。

3 实验结果如何?

Runtime

image-20201121212045119

Evaluation on benchmark

在FDDB上SOTA。

4.对咱们有什么指导意义?

  • 要在CPU上达到实时,考虑一开始就对特征进行快速下采样。
  • 在浅的卷积层考虑使用CReLU,能够减小计算量。
  • MSCL告诉咱们,检测各类不一样大小的物体,考虑从深度和宽度上丰富感觉野。
  • anchor密度策略告诉咱们考虑anchor密度以提升召回率。

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

相关文章
相关标签/搜索