人脸检测--Finding Tiny Faces

字数 1055阅读 1270

Finding Tiny Faces
CVPR2017
https://www.cs.cmu.edu/~peiyunh/tiny/index.html
code: https://github.com/peiyunh/tiny

本文主要针对小的人脸检测问题进行深入分析。先看看下面的图

这里写图片描述

这张图像说是有1000个人脸,本文算法检测到685个。

1 Introduction
目标识别在最近几年里取得了很大的进展,但是小目标识别仍然没有很好的得到解决。本文针对小的人脸识别问题从三个角度探讨:尺度不变性、图像分辨率、上下文推理。尺度不变性是几乎是所有的目标检测和识别系统一个基本的期望属性,但是从实际的角度来看,尺度不变性只是一定图像分辨率范围内成立,例如识别3个像素高度的人脸和识别300像素高度的人脸利用的信息是不一样的。

Multi-task modeling of scales:
针对尺度问题,目前常用的方法是使用尺度归一化分类器或者在 ROI 池化特征图上运行区域分类器。将区域尺寸归一化到一个标准尺寸,会面临一个简单的问题:标准尺寸应该是多大?一方面我们希望使用一个小的尺寸可以检测小的人脸,另一方面我们希望使用大尺寸可以分析人脸的细节特征来增加检测精度。与一个尺寸打天下相比较,我们分别训练不同尺度的检测器,但是这么做又会导致时间效率低下。为了解决上述问题,我们采用多任务方式下训练和运行多尺度分类器,充分利用各个网络卷积层特征图,这个方式对于大目标的检测效果很好,但是对于小目标的检测仍然不是很理想。
How to generalize pre-trained networks? 考虑到预训练模型时目标的尺寸和实际应用模型检测的目标尺寸差异性,我们采取了一个简单的策略:在测试阶段缩放图像。我们发现对卷积网络后端小尺寸特征图进行放大,这对检测小目标很重要。


这里写图片描述

图 a) 是 一个尺度模板,多尺度图像
图 b) 是 多个尺度模板,单尺度图像
图 c) 是 多个尺度模板,多尺度图像
图 d) 和 图 e) 考虑了上下文信息,即人脸周边信息。

How best to encode context?


这里写图片描述

context 主要思路还是如果目标太小,包含的信息太少,只能利用目标的周边信息来辅助了。例如人脸如果太小,那么从头发,肩膀等信息来定位人脸。

2 Related work
主要从 Scale-invariance,Context,Multi-scale representation,RPN 四个角度来描述相关工作。

3 Exploring context and resolution
对于检测25*20大小的人脸,哪种方法是最好的了?这里我们从context 和 标准模板尺寸来分析。

Setup: 我们采用 fullyconvolutionalnetwork(FCN) + ResNet 来验证。

这里写图片描述

上图说明小目标周边信息对于检测小目标的重要性。

下图说明目标尺寸和模板尺寸的最佳对应关系。

这里写图片描述

对于2520的人脸,我们使用2倍尺寸 5040作为模板尺寸,可以提升 6.3%的性能。
对于 250200的人脸,我们使用 125100 作为模板尺寸, 可以提升 5.6% 性能。

为什么会这样了?主要是训练样本中尺寸的分布引起的。


这里写图片描述

在 ImageNet 数据库上有 80%的目标尺寸位于 40 ~ 140.

4 Approach: scale-specific detection
既然合适的模板尺寸对于目标检测性能至关重要,那么对于特定目标尺寸检测问题,有没有一个通用的策略来选择模板尺寸? 我们采用 多任务学习来暴力训练多个不同尺寸的模板,在检测时选择一个最好的。
本文采用的检测框架如下图所示:


这里写图片描述

将图像放大一倍和缩小一倍,得到三幅图像作为输入,训练三个CNN模型。

这里写图片描述

推荐阅读更多精彩内容