arXiv-2018
文章目录
1 Background and Motivation
人脸检测是许多人脸相关应用的基础且必要的步骤,例如,人脸标记(face landmark)和人脸识别(face recognition)
图片来源:iOS 相机流人脸识别(二)-关键点检测(face landmark --Dlib)
随着数码相机行业的发展,4K超高清分辨率相机,如 3840×2160,变得越来越流行!这种超高分辨率的图片给人脸检测带来了很大的挑战,因为人脸的尺寸范围变化巨大,从 10×10 到 2000×2000.
为了解决人脸检测中的 large scale variation,传统方法采用如下两种方式:
- from input-level:采用图像金字塔,显然,会增加 computational cost,推理速度很慢,而且还需要 post-processing 来合并图像金字塔的结果!
- from model or feature level:依赖于精心设计的 anchor 策略,但是 vulnerable to dataset distributions,鲁棒性不强。或者基于 anchor-free 的方法,eg:DenseBox 或者 UnitBox,但是定位能力又不够,往往没有 anchor-based 方法定位的准!精度就下去了
作者观察到,anchor-based 方法能在 32×32 到 512×512 范围内提供很好的定位,anchor-free 的方法有利于检测超大尺寸的脸
于是,作者结合 anchor-based 方法和 anchor-free 的方法,提出了 SFace 来缓解人脸检测问题中尺度变化较大(Large Scale Variations)的问题!
2 Advantages / Contributions
- 提出 SFace 网络,结合 anchor-based 和 anchor-free 方法来解决人脸检测任务中 large scale variation 问题,采用 re-score approach based IoU 来使两个 branch 更好的 unify
- 制作开源了高分辨率人脸检测数据集,4K-Face
- ~ 50 fps,80% AP on 公共数据集 WIDER FACE dataset!(速度提升了一个数量级,精度差不多)
3 Method
integrates the anchor-based method and anchor-free
re-score approach based IoU 来融合 anchor-based 和 anchor-free 方法
3.1 Feature Pyramid Backbone
与 FPN 不同点在于,只采用了 P3-P5,作者说这足够了,FPN中 3×3 的平滑卷积被替换成了 1×1 ,256-D 的 channels 缩减到了 32-D
(FPN 的解读可以参考 【FPN】《Feature Pyramid Networks for Object Detection》)
主干采用的是 Xception-39,感受野达到了 1679,在 ImageNet 上,top1 error 44.9%,top5 error 21.4%
3.2 Anchor-based Branches
P3 到 P5 上的 anchor 大小为 1 6 2 16^2 162、 3 2 2 32^2 322 、 6 4 2 64^2 642,每个 anchor 2 个 ratios {1:1,1:1.5},3 个 scales { 2 0 2^0 20, 2 1 / 3 2^{1/3} 21/3, 2 2 / 3 2^{2/3} 22/3}(没想到在 FPN 的结构中还用了不同的 scale),尺度覆盖范围: 1 6 2 16^2 162 to 101.5 9 2 101.59^2 101.592
101.59 计算方法是如下(python)
64*2**(2/3)
分类 sub-net 是二分类,face or background
回归 sub-net 用的 IoU Loss(IoU Loss 的解析可以参考 【IoU Loss】《UnitBox: An Advanced Object Detection Network》),而不是 smooth-L1,回归中心坐标和长宽四个参数的改变量
3.3 Anchor-free Branch
anchor-free 的分支插在了 P3 层上,辅助 anchor-based 分支,用来捕获那些 anchor-based 覆盖不到的尺度!
这里的 anchor-free 的方法借鉴,DenseBox 和 UnitBox 方法,直接回归当前像素到 GT 的四个边界的距离
公式化表达如下,可以用左上角
(
x
t
,
y
t
)
(x_t,y_t)
(xt,yt) 和右下角
(
x
b
,
y
b
)
(x_b,y_b)
(xb,yb) 坐标表示 target bbox,对于当前像素
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi) 来说,能通过如下 4-D 的 vector 来描述 target bbox(到目标框四个边界的距离)
然后,用 IoU Loss 来回归,计算方式如下
N bbox 的面积,除以 N 是来做尺度归一化的
3.4 Classi cation with IOU
anchor-based 和 anchor-free 的方法在 localization manners 和 confidence scores 上有很大的不同,很难把两种方法合并到一起
anchor-based 和 anchor-free 方法的分类子网络自信度含义不同,都无法表示定位的准确度
- anchor-based 方法的 classification confidence 主要表示的是 anchor 是否为目标的概率
- anchor-free 方法的 confidence score mostly indicates whether the corresponding pixel falls on a face(FDDB 数据集,落在椭圆区域中)
http://vis-www.cs.umass.edu/fddb/samples/
贸然将二者的分类结果合为一体是不合理的,会导致检测性能极具下降!
作者把分类分支表示成 IoU 得分,将 anchor-free 和 anchor-based 方法融合在一起,具体如下,anchor-based 和 anchor-free 的方法训练完成后都会产生 bbox prediction,计算这些 prediction 与 GT 的 IoU,IoU > 0.5 的anchor(anchor-based)或 pixel(anchor-free)视为 positive,其它视为 negative,用 binary cross entropy 分类!(作者试过用regression 的方式来训练分类分支,效果没有用 binary cross entropy 好)
这样一来,原来 anchor-based 和 anchor-free 分类分支的作用会被强制替换成表示定位精度的得分!可以理解为是一种后处理操作!
作者也采用了 focal loss 来缓解正负样本不均衡!
论文中,anchor-based 和 anchor-free 方法的回归分支都采用的是 IoU loss(positive 的 IoU 才计算 Loss),anchor-free 回归分支中的 IoU Loss 好理解,和 UnitBox 一样,anchor-based 方法应该就是,回归出 delta,作用在 anchor 上,得出 prediction,然后 -log IoU
这样两个分支就完全统一了,分类分支表示的是定位的精度,回归分支都采用 IoU Loss,表示的是定位坐标!
4 Experiments
4.1 Datasets
- A new dataset called 4K-Face:5012 张超高分辨率的图像 with extremely large face scale variations,30,000+ face,3840×2160
- WIDER FACE dataset:32,203 images and 393,703 annotated faces,
- 158,989,train
- 39,496,validation
- rest,test(验证集和测试集分为 easy,medium 和 hard,样本逐渐增多,hard 包含所有)
两个数据集尺度分布方面的比较(我有点比较奇怪,4K-Face 人脸比较少,怎么画出来比 WIDER FACE 的人脸还多,把纵坐标画成百分比不好吗?)
可以看到,作者制作的 4K-Face 数据集,尺度分布更广
WIDER FACE 数据集中,1%的人脸 size 大于 512 pixels,30% 以上的图片尺寸小于 32 pixels
4.2 Overall performance
可以看到,easy 上不是表现的最好,medium 和 hard 上傲视群雄,hard 好才是真的好
4.3 Ablation study
和 RetinaNet 和 UnitBox 比较一下,
AP(hard)最猛,就说明了一切
输入尺寸,推理时间和精度的比较
最后来感受一下检测效果
5 Conclusion(own) / Future work
- anchor-free 的方法,DenseBox,UnitBox(IoU loss),这两种方法是 trained in a segmentation-like way,有椭圆的 seg-map
- 在 IoU Loss 基础上,做了个尺度归一化
- 通过把分类分支表示成定位精度 IoU score,来合并 anchor-based 和 anchor-free 的方法!两类方法的回归分支都采用的是 IoU Loss
- 3.4 小节要仔细品读
附录——R Talk | 旷视科技目标检测概述:Beyond RetinaNet and Mask R-CNN
R Talk | 旷视科技目标检测概述:Beyond RetinaNet and Mask R-CNN