Scale-Aware Face Detection
2017CVPR 文章链接: 《Scale-Aware Face Detection》
对于人脸检测,通常我们需要采用各种手段小心的处理多尺度的问题。事实上,对于很多待检测图像,其只在某个尺度上才有人脸存在。如果我们可以“提前预知”哪些尺度上存在人脸,就可以针对性的进行检测从而减少计算量。
1. 方法介绍
文章图片
整个检测分为两个阶段:
- stage1,输入缩小的图片进入Scale Proposal Network (SPN) 来预测在哪个尺度上存在人脸。
- stage2,将图片按照尺度预测结果进行缩放,然后送入Single Scale RPN (SS-RPN)检测人脸。
(1)Scale Proposal Network (SPN)
文章图片
如上图,SPN网络为全卷积网络,可以接受任意大小的输入,并在最后通过Global Max Pooling来获得固定的 \(1 \times1 \times n\)大小的概率输出。 \(n\) 表示 \(n\)种不同的尺度,其为精心设计的 等比数列,定义如下:
假设最大和最小检测人脸分别为 \(l_{max}\) 和 \(l_{min}\),并定义指数范围为\(s_n = \log_2l_{max}\) 和 \(s_0 = \log_2l_{min}\)。 则相邻尺度的间隔为: \(d = (s_n-s_0)/n\)。
于是,最后第 \(i\) 个输出对应的人脸尺度范围为:
\([2^{s_0+(i-1)d},2^{s_0+id})\)
(2)Ground truth preparation
训练SPN所用的label该如何生成?
首先需要注意的一点是,标注bounding box存在很强的主观性,这也就意味着标记的人脸尺寸很可能不准。为了弱化这种主观偏差,这里采用5个人脸关键点来定义新的bounding box:
文章图片
其中,\(o_x,\ o_y, \ o_s\) 为所有样本共享的offset参数。
有了人脸尺寸后,我们不是简单地将label置为非0即1(出现该尺寸则label置为1,否则置为0),因为这样很容易受噪声影响。 同样为了弱化这种影响,这里采用相对平滑的高斯分布来分配label。
文章图片
其中的方差因子 \(\sigma\) 与ground truth的误差分布以及检测器窗口大小有关,文中实验设置为 \(\sigma = 0.4\)。
当有多个尺度的人脸时,最终的label是取多个高斯分布在对应位置的最大值而不是加和。总之思想类似于下图:
文章图片
(3)Scaling strategy generation
怎样对SPN的输出进行后处理?
文章图片
如上图,采用滑动窗口对SPN的输出进行平滑处理,窗口大小为检测器处理范围的一半; 然后采用一维NMS寻找极值点。
3. 分析
- (1)在FDDB上表现中等
文章图片
因为一旦尺度估计有问题,后续几乎无法弥补。
- (2)人脸较少时,速度不错
文章图片
所以,这种策略可以用在一些特殊场景下,算作一种不错的自适应策略。
推荐阅读
- Java|Java spi(service provider interface)
- 如何在facebook上打广告,流程是怎样的()
- 人工智能|hugginface-introduction 案例介绍
- Mixed|Mixed Supervised Object Detection with Robust Objectness Transfer讲解
- 函数式编程(一)|函数式编程(一) lambda、FunctionalInterface、Method Reference
- FaceBook第三方登录换号重新登录
- 重构读书笔记-11_8_Extract_Interface
- 笔记|这是一个关于face_recognition和dlib库的安装(亲测有用,毕竟我代码都写出来了)
- 37|37 篇! Facebook 今年被 CVPR 收录的论文都说了啥()
- Angular|Angular Change Detection 的学习笔记