背景
在不受限制的环境中,人脸检测始终部署在边缘设备上,这些设备的内存存储空间有限且计算能力较低。本文提出了一种名为CenterFace的单阶段方法,该方法可以实时,高精度,同时预测面部框和界标位置。所提出的方法也属于自由锚类别。这可以通过以下方式实现:
(a)通过语义图学习人脸存在的可能性
(b)为可能包含人脸的每个位置学习边界框,偏移量和五个界标。具体来说,该方法可以使用NVIDIA 2080TI实时运行在单个CPU内核和200 FPS上的VGA分辨率图像上,并且可以同时达到更高的精度。
介绍
该论文是参考的Objects as Points,文章底部会附上Objects as Points的论文地址。
核心思想,相比于Anchor的检测算法,去判断每个anchor是否包含需检测的目标,再去计算回归的offset,Centerface和Objects as Points的主要思想是,判断feature map对应在图像中的位置是否是目标的中心点,再去计算目标的宽和高。
因为此文主要借鉴Objects as Points,而关于Objects as Points的解读已经有很多了,所以与Objects as Points差异较小的地方,笔者会简略带过。
方法
-
网络结构
因为CenterFace是轻量级的人脸检测器,所以其backbone用的是mobilenetV2,相比于Objects as Points采用的DLA 以及Hourglass,整体的backbone很小。网络结构可视化如下:
图1 CenterFace的体系结构
-
groundtruth的定义
目标中心点定义:在一般的目标检测中,一般记录目标的(x1,y1,x2,y2)
对应目标的左上角和右下角的坐标。目标的中心点:Xc = (x1+x2)/2,Yc = (y1+y2)/2;
在使用anchor的算法中,采用的是计算anchor和groundtruth之间的IOU,若IOU大于阈值,则为正样本,若小于阈值,则为负样本。
在centerface中,是计算中心点的坐标是否在feature map所对应的图像内
R就是对应的步长。中心点所在的feature map为1,对于标注,采用高斯的方式向外撒点。
-
LOSS的定义
在寻找关键点上,存在两个loss,一个是判断feature map是否包含关键点,采用focal loss,另一个是计算关键点 相对于 feature map映射到原图之后的偏移量,使用的smooth_L1。
在计算目标框上:区别于Objects as Points, 计算的是映射到feature map上的大小,而不是计算原图的大小:
计算目标框的Loss采用smooth_L1。
Data augmentation
-
1.random filp
-
2.random scaling
-
3.color jittering
-
4.randomly crop square patch
以上数据增强方法都是常见的数据增强方法,不多做介绍。
测试结果
和其它算法对比:
表1. GTX2080TI的运行效率
表2. CPU上的运行效率
FDDB的评估结果
WIDER FACE
表4. WIDER FACE验证集上的性能结果
图3. WIDER FACE上的人脸检测结果。
结论
CenterFace具有所提方法的优势,在速度和准确性上均表现出色,并且可以同时预测面部框和界标位置。我们提出的方法通过将人脸检测和对齐转换为标准关键点估计问题,克服了以前基于锚的方法的缺点。CenterFace通过脸部框的中心点表示脸部,然后从中心位置的图像特征直接回归脸部大小和脸部界标。进行了全面而广泛的实验以充分分析所提出的方法。最终结果表明,我们的方法能够以较小的模型尺寸实现实时速度和高精度,从而使其成为大多数人脸检测和对齐应用程序的理想选择。
Objects as Points论文地址:
https://arxiv.org/pdf/1904.07850.pdf
论文地址:
https://arxiv.org/ftp/arxiv/papers/1911/1911.03599.pdf
开源地址:
https://github.com/Star-Clouds/centerface
更多论文地址源码地址:关注“图像算法”微信公众号