关闭

Finding Tiny Face

标签: 人脸检测深度学习
6375人阅读 评论(11) 收藏 举报
分类:

《Finding Tiny Faces》

项目主页:https://www.cs.cmu.edu/~peiyunh/tiny/

Github主页: https://github.com/peiyunh/tiny

这里写图片描述

为了便于和论文对照,这里按照论文顺序进行分析。

Abstract

小目标检测依然是检测领域的一个难题,原因大概有3个方面:目标本身尺度变化、图像分辨率以及环境因素。虽然很多方法都可以处理多尺度目标检测,但是检测一个3pixel大小的目标和一个500pixel大小的目标还是有本质不同的。

文章针对多尺度训练了不同的检测器。为了保持效率,这些检测器所用的特征来自同一网络的不同的层级。此外,为了检测极小目标,文章充分利用了上下文信息(大的感受野),同时finetune网络的时候也充分考虑了多尺度的因素。

总之,结果爆炸。尤其是在Wider Face(小目标遮挡目标较多)上,结果超第二名一倍。

Introduction

检测小目标难,原因主要有3个方面:目标本身尺度变化;图像分辨率;环境因素。 本文为此提出了以下技术:

Multi-task modeling of scales:

——目前的多尺度检测,要么是通过金字塔图像滑窗要么是通过R-CNN这种Region Proposal。这两种套路通常都使用固定尺寸的模板。问题是,模板尺寸怎么定。小尺寸可以帮助检测小目标,大尺寸又能获得更丰富的信息。

——文章针对不同尺度(或者不同长宽比)训练了多个检测器。这样做有两个问题:每个尺度的训练数据可能不足,实际检测时要多个模型效率不高。为此,文章采用了一种multi-task模式,充分利用一个模型的不同层级的特征。

How to generalize pre-trained networks:

这里写图片描述

上图的(a)和(b)是常用的两种检测多尺度目标的检测方法。

(a) 模板固定,构建了图像金字塔。但是单个模板的性能可能较差。

(b) 图像固定,训练了金字塔模板。不同模板虽然可以很好的把握不同分辨率的信息,但是这些模板可能不能覆盖实际当中的所有目标尺度。同时,训练的时候,可能某一尺度会缺少训练样本(比如训练大尺度模板可能缺少大的人脸作为正样本)。

(c) 作者将(a)和(b)进行结合。

这里写图片描述

为了进一步检测更小的人脸,文章利用了额外的上下文信息,如图 (d); 同时进一步的利用了多层特征的融合,如图 (e)

How best to encode context?

这里写图片描述

上图是作者做的一个实验,直接说实验结论;

(1) 左图: 直观来看,扩大感受野范围,可以有效帮助识别“small”人脸;(对于大的人脸,这点影响不是很大);

(2) 右图: 仅仅采用3倍感受野不能充分把握尺度变化,文章采用固定300像素的感受野效果则不错。

Exploring context and resolution

上下文信息对于小人脸检测至关重要,这一节通过小实验来分析上下文信息和分辨率的关系。

首先提出一个简单的问题: 当已知待检测人脸大小是25x20的时候,该怎样设计检测策略?

先说一下实验设置:采用ResNet-50的FCN结构,输出二分类概率图。

Context

这里写图片描述

如上图,resX表示不同层级的特征,X越大表示感受野越大。

现象:

(1) 增加更多的上下文信息(感受野)有助于检测;

(2) 对于小人脸,483x483的感受野造成了性能下降,作者通过对比训练和测试性能认为是过拟合;

(3) 对于大的人脸,更大的感受野带来的提升已经不是很明显。

结论: 不同尺度目标检测都使用同样大小的感受野,即291x291.

文章进一步对比了多层特征融合的效果,如下图。文章将这种融合特征称之为“中心凹”结构特征。

这里写图片描述

现象与结论: 不同级别特征融合是检测小目标的关键,对于大目标效果就不是很明显了。

Resolution

这里写图片描述

实验现象:

(1) 对于小人脸(25x20),中等尺寸的模板(50x40)可以明显提升性能;

(2) 对于大人脸(250x200),中等尺寸的模板(125x100)同样可以提升性能;

提出问题: 为什么对于大人脸,大尺寸模板反而不能获得更好地表现?

原因猜测:
模型是从ImageNet上finetune得到的,而ImageNet上80%的目标尺寸分布在40~140像素,这很可能导致模型更偏爱识别这个范围内的目标。

下图是ImageNet数据集上目标的尺寸分布:

这里写图片描述

Approach: scale-specific detection

文章通过实验来为特定尺寸的目标择更合适的模检测板 ?

首先用 \(t(h,w,\sigma)\) 描述一个模板,该模板用于检测 \(t(h/\sigma,w/\sigma)\) 大小的人脸。参看 Resolution 小节中的第一张图,\(t(125,100,0.5)\) 表示在0.5分辨率上检测 \(250\times200\) 大小的人脸。

文章利用IOU进行聚类,得到了一组候选目标大小,记为 \(s_i=(h_i,w_i)\)。

提出问题: \(\sigma\) 怎样取值才能使得模板 \(t_i(\sigma_ih,\sigma_iw,\sigma)\) 的性能最佳?

试验方法: * 做很多实验(训很多网络),对比看哪种参数设置效果比较好。*

试验结果: 如下图,横坐标是通过聚类得到的目标尺寸,左纵坐标是AP,右纵坐标表示不同大小目标的数量。

结论是: 检测大目标(140像素以上),采用0.5倍分辨率的模板;检测小目标(40像素一下),采用2倍分辨率的模板;其它保持一致。

这里写图片描述

另一方面, 如果直接采取上面的策略设计模板可能会导致重复。比如,检测 \(31\times25\)的目标应该采用的模板为 \((62,50,2)\);而检测 \(64\times50\)的目标应该采用的模板为 \((64,50,1)\)。显然,这两种模板很接近。

文章最终采用了一种简化的方案:

这里写图片描述

如上图,最终方案为 A+B

A: \(1X\) 分辨率模板结合较为稀疏的图像金字塔来检测 \(40-140\) 大小的目标;

B: \(2X\) 分辨率模板结合\(2X\)图像差值来检测 20以下的目标;

该方案要比使用原始的 “Full”策略效果甚至要好:

这里写图片描述

Architecture

首先给出一些检测的配置信息:

(1) 检测模型是一个ResNet全卷积网络,当输入是500x500时,输出的feature map尺寸为63x63x125。 500/63 = 8, 即输出点的位置和其在原图对应的位置是一个8倍的关系。

(2) \(125 = 25+4\times25\), 即每个点对应25种不同大小的模板(bounding box),每个模板又对应了4个描述bounding box 坐标偏移量的参数。如下图,针对不同分辨率的模板:

这里写图片描述

(3) 输出特征是不同级别特征的融合(SUM)。

这里写图片描述

结合上面的检测示意图(以及更上面的检测配置),我们梳理一下检测流程:

(1) 将原始图像以 \(\sqrt2/2\) 的缩放系数,构建一个图像金字塔。(具体要构建多少金字塔,由输入图像大小以及最大模板尺寸决定)

(2) 依次处理每一张金字塔图像。每一张输入图像都会得到 \(n\times n\times125\) 的输出,对应25种不同尺寸的模板(类似于R-CNN或者YOLO中的anchor)。
重点来了, 并不是25种模板都会使用,针对不同的输入图像分辨率以及待检测目标大小,只会从中选一部分来使用。

具体地:如果图像变小了(检测大目标),则只使用编号5-12的针对1X分辨率的模板;如果图像变大了(检测小目标),则使用编号5-12和19-25的模板;

(3) 根据一定阈值,在不同模板对应的feature map上选出目标,并进行boundingbox矫正,最后使用NMS融合。

Experiments

首先是在Wider Face上的表现, 超第2名约17%。(Wider上标注的人脸大部分都很小。)

这里写图片描述

然后是在FDDB上的表现,其中continue score(表征检测人脸位置准确性)大幅超出其他方法,因为文章使用了椭圆-bounding-box的回归(FDDB的标注是椭圆)。

这里写图片描述

5
0
查看评论

细小人脸检测的实践(Finding Tiny Faces论文代码复现)

https://www.cs.cmu.edu/~peiyunh/tiny/这个主页上介绍了CVPR中的一篇文章,关于细小人脸检测的。小物体检测一直还是CV界比较有挑战的一个问题。从作者的摘要可以看出,主要完成了以下三个工作: We explore three aspects of the prob...
  • sparkexpert
  • sparkexpert
  • 2017-09-10 17:55
  • 1768

论文学习:Finding Tiny Faces

Abstract Though tremendous strides have been made in object recognition, one of the remaining open challenges is detecting small objects. We explore t...
  • forest_world
  • forest_world
  • 2016-12-16 09:53
  • 3314

小人脸检测 - Finding Tiny Faces

Finding Tiny Faceshttps://www.cs.cmu.edu/~peiyunh/tiny/index.html code: https://github.com/peiyunh/tiny本文主要针对小的人脸检测问题进行深入分析。先看看下面的图 这张图像说是有1000个人脸,本...
  • zhangjunhit
  • zhangjunhit
  • 2017-01-20 11:27
  • 4167

Finding Tiny Faces demo代码运行记录

Finding Tiny Faces论文中的demo运行过程记录。项目主页:https://www.cs.cmu.edu/~peiyunh/tiny/
  • zhs233
  • zhs233
  • 2017-09-08 09:42
  • 705

Finding Tiny Faces

Overview of detection pipeline Multi-task modeling of scales 前面a, b两种是传统的 model 方式。 b的缺点是,如果某个尺寸的 model 的样本少的话,不利于训练。而c有利于解决这种问题。 d,e 是作者...
  • smallplum123
  • smallplum123
  • 2016-12-21 23:23
  • 2017

极小人脸检测

尽管目标识别技术已经取得了巨大的进步,但检测小目标仍是一项开放性的挑战。针对微小人脸检测的问题,我们主要从三个方面做了研究:尺度不变,图像分辨率和上下文推理的作用。虽然大多数识别方法基于尺度不变,但识别一个3像素的人脸与识别一个300像素的人脸的诱因从根本上就是不同的。我们采取了一种不同的方法,即根...
  • Jsmile_msj
  • Jsmile_msj
  • 2017-06-09 15:07
  • 1252

My Jumble of Computer Vision

I am going to maintain this page to record a few things about computer vision that I have read, am doing, or will have a look at. Previously I’d like ...
  • joshua_1988
  • joshua_1988
  • 2016-08-25 21:51
  • 4550

flash面向对象的编程思想

转自:http://bbs.9ria.com/thread-51365-1-2.html flash面向对象编程思想 但不管怎么说,我不想因为这些例子而使你轻视了面向对象的软件开发。事实上,面向对象含义深远,涉及许多重要的概念,只有充分理解了这些概念的含义,你才算真正理解了什么叫面向对象。很多概念...
  • liminxin272
  • liminxin272
  • 2012-01-31 19:19
  • 614

FDDB人脸检测测评数据集介绍

原文:A Benchmark for Face Detection in Unconstrained Settings 1、简介       FDDB是全世界最具权威的人脸检测评测平台之一,包含2845张图片,共有5171个人脸作为测试集。测试集范围包括:不同姿势、不...
  • XZZPPP
  • XZZPPP
  • 2016-06-28 22:33
  • 8361

ScaleFace —— 尺度友好人脸检测

一篇关于如何处理多尺度人脸检测的文章。 从核心方法上来说和SSD没有本质的区别,只不过在实现细节上做了一些更为细致的工作。文章链接: 《Face Detection through Scale-Friendly Deep Convolutional Networks》1. 方法介绍如上图,采用Res...
  • shuzfan
  • shuzfan
  • 2017-09-07 11:57
  • 1209
    个人资料
    • 访问:650758次
    • 积分:6840
    • 等级:
    • 排名:第4068名
    • 原创:135篇
    • 转载:11篇
    • 译文:1篇
    • 评论:523条