文章: 《FaceBoxes: A CPU Real-time Face Detector with High Accuracy》

Introduction

2个挑战:

1)在杂乱背景下人脸视角大的变化需要人脸检测器精准的解决复杂人脸和非人脸的分类问题。

2)较大的搜索空间和人脸尺寸进一步增加了时间效率的需要。

传统方法效率高但在人脸大的视角变化下精度不够,基于CNN的方法精度高但速度很慢。

受到Faster R-CNN的RPN以及SSD中多尺度机制的启发,便有了这篇可以在CPU上实时跑的FaceBoxes。

FaceBoxes

(1)RDCL:Rapidly Digested Convolutional Layers,加速计算

  • 缩小输入的空间大小:为了快速减小输入的空间尺度大小,在卷积核池化上使用了一系列的大的stride,在Conv1,Pool1,Conv2,Pool2上stride分别是4,2,2,2,RDCL的stride一共是32,意味着输入的尺度大小被快速减小了32倍。
  • 选择合适的kernel size:一个网络开始的一些层的kernel size应该比较小以用来加速,同时也应该足够大用以减轻空间大小减小带来的信息损失。Conv1,Conv2和所有的Pool分别选取7*7,5*5,3*3的kernel size。
  • 减少输出通道数:使用C.ReLU来减少输出通道数。

(2)MSCL:Multiple Scale Convolutional Layers,丰富感受野,使不同层的anchor离散化以处理多尺度人脸

  将RPN作为一个人脸检测器,不能获取很好的性能有以下两个原因:

  1. RPN中的anchor只和最后一个卷积层相关,其中的特征和分辨率在处理人脸变化上太弱。
  2. anchor相应的层使用一系列不同的尺度来检测人脸,但只有单一的感受野,不能匹配不同尺度的人脸。

  为解决这个问题,对MSCL从以下两个角度去设计:

    •   Multi-scale design along the dimension of network depth.如下图,anchor在多尺度的feature map上面取,类似SSD。

    • Multi-scale design along the dimension of network width.使用inception模块,内部使用不同大小的卷积核,可以捕获到更多的尺度信息。

(3)Anchor densification strategy:

Inception的anchor尺度为32*32,64*64,128*128,Conv3_2、Conv4_2的尺度分别为256*256和512*512。

anchor的间隔和相应的层的stride相等。比如Conv3_2的stride是64、anchor大小为256*256,表示对应输入图片每64像素大小有一个256*256的anchor。anchor密度为:

    Adensity = Ascale/Ainterval

Ascale 表示anchor的尺度,Ainterval 表示anchor间隔。默认间隔分别设置为32,32,32,64.根据公式,对应的密度分别为1,2,4,4,4.显然在不同尺度上anchor的密度不均衡。相比大的anchor(128-512),小的anchor(32和64)过于稀疏,将会导致在小脸检测中低的召回率。

为解决不均衡问题,此处提出新的anchor策略。为了加大一种anchor的密度,在一个感受野的中心均匀的堆叠n个anchor(本来是1个)用来预测。

文章里对32*32的anchor做了4倍,对64*64的anchor做了2倍,这样就可以保证不同尺度的anchor有相同的密度。

训练

Training dataset: WIDER FACE的子集,12880个图片。

Data augmentation:

  • Color distorition:根据《Some Improvements on Deep Convolutional Neural Network Based Image Classification》
  • Random cropping: 从原图中随机裁剪5个方块patch:一个最大方块,其他的分别在范围[0.3,1]之于原图尺寸。
  • Scale transformation:将随机裁剪后的方块patch给resize到1024*1024.
  • Horizontal flipping: 0.5的概率翻转。
  • Face-box filter: 如果face box的中心在处理后的图片上,则保持其重叠,然后将高或宽小于20像素的face box过滤出来。

Matching strategy:

在训练时需要判断哪个anchor是和哪个face bounding box相关的。首先使用jaccard overlap将每个脸和anchor对应起来,然后对anchor和任意脸jaccard overlap高于阈值(0.35)的匹配起来。

Loss function:

和Faster R-CNN中的RPN用同样的loss,一个2分类的softmax loss用来做分类,smooth L1用来做回归。

Hard negative mining:

在anchor匹配后,大多数anchor都是负样本,导致正样本和负样本严重不均衡。为了更快更稳定的训练,将他们按照loss值排序并选取最高的几个,保证正样本和负样本的比例最高不超过3:1.

Other implementation details:

Xavier随机初始化。优化器SGD,momentum:0.9,weight decay:5e-4,batch size:32,迭代最大次数:120k,初始80k迭代learning rate:1e-3,80-100k迭代用1e-4,,100-120k迭代用1e-5,使用caffe实现。

Experiments

Model analysis

FDDB相比AFW和PASCAL face较为困难,因此这里在FDDB上作分析。

Ablative Setting:

1)去掉anchor densification strategy.

2)把MSCL替换为三层卷积,其大小都为3*3,输出数都和MSCL中前三个Inception的保持一致.同时,把anchor只和最后一层卷积关联。

3)把RDCL中的C.ReLU替换为ReLU。

结论:

Anchor densification strategy is crucial.

MSCL is better.

RDCL is efficient and accuracy-preserving.

实验结果:

AFW:

PASCAL face:

FDDB:

论文阅读:FaceBoxes: A CPU Real-time Face Detector with High Accuracy的更多相关文章

  1. 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  2. 论文阅读:《Bag of Tricks for Efficient Text Classification》

    论文阅读:<Bag of Tricks for Efficient Text Classification> 2018-04-25 11:22:29 卓寿杰_SoulJoy 阅读数 954 ...

  3. 论文阅读(Xiang Bai——【PAMI2017】An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition)

    白翔的CRNN论文阅读 1.  论文题目 Xiang Bai--[PAMI2017]An End-to-End Trainable Neural Network for Image-based Seq ...

  4. BITED数学建模七日谈之三:怎样进行论文阅读

    前两天,我和大家谈了如何阅读教材和备战数模比赛应该积累的内容,本文进入到数学建模七日谈第三天:怎样进行论文阅读. 大家也许看过大量的数学模型的书籍,学过很多相关的课程,但是若没有真刀真枪地看过论文,进 ...

  5. 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  6. Deep Reinforcement Learning for Dialogue Generation 论文阅读

    本文来自李纪为博士的论文 Deep Reinforcement Learning for Dialogue Generation. 1,概述 当前在闲聊机器人中的主要技术框架都是seq2seq模型.但 ...

  7. 论文阅读笔记 Word Embeddings A Survey

    论文阅读笔记 Word Embeddings A Survey 收获 Word Embedding 的定义 dense, distributed, fixed-length word vectors, ...

  8. 论文阅读笔记六:FCN:Fully Convolutional Networks for Semantic Segmentation(CVPR2015)

    今天来看一看一个比较经典的语义分割网络,那就是FCN,全称如题,原英文论文网址:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn ...

  9. 论文阅读笔记 Improved Word Representation Learning with Sememes

    论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...

随机推荐

  1. jquery选择器之全选择器

    在CSS中,经常会在第一行写下这样一段样式 * {padding: 0; margin: 0;} 通配符*意味着给所有的元素设置默认的边距.jQuery中我们也可以通过传递*选择器来选中文档页面中的元 ...

  2. docker学习1-CentOS 7安装docker环境

    前言 Docker 提供轻量的虚拟化,你能够从Docker获得一个额外抽象层,你能够在单台机器上运行多个Docker微容器,而每个微容器里都有一个微服务或独立应用,例如你可以将Tomcat运行在一个D ...

  3. 微信小程序~项目步骤和流程

    从运营的角度讲制作,不是从程序的角度讲开发,所以简单明晰,通俗易懂,小白也能按照流程完成制作. 微信小程序制作步骤及流程 1.确定好微信小程序的的定位和目的 如行业,功能,内容,目标用户,目标市场,意 ...

  4. Sql操作时间

    --. 当前系统日期.时间 -- ::27.277 --.时间操作 dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值 dateadd(datepart,number,d ...

  5. luoguU60884 【模板】动态点分治套线段树

    题目连接:https://www.luogu.org/problemnew/show/U60884 题意:有N个点,标号为1∼N,用N−1条双向带权通道连接,保证任意两个点能互相到达. Q次询问,问从 ...

  6. Tips on Python

    python是一种解释性文件,代码要通过解释器解释运行.python解释器就是python.exe这个程序. pip也是一个pip.exe的程序,是用来管理python的第三方库. 有两种执行方式:脚 ...

  7. CentOS7中使用yum安装nginx和php7.2的方法

    c 1.安装源 安装php72w,是需要配置额外的yum源地址的,否则会报错不能找到相关软件包. php高版本的yum源地址,有两部分,其中一部分是epel-release,另外一部分来自webtat ...

  8. 持续集成学习1 gitlab和jenkins安装

    一.gitlab安装参照链接 https://www.cnblogs.com/linuxk/p/10100431.html 二.安装jenkins 1.获取jenkins源码包 https://blo ...

  9. 在windbg调试.net时遇到的问题

    调试.net应用程序时,有时会在windbg中收到错误消息.以下是我最常遇到的几个问题. Failed to start stack walk---启动堆栈遍历失败 如果你运行sos命令!clrsta ...

  10. nexus 3.17.0 做为golang 的包管理工具

    nexus 3.17.0 新版本对于go 包管理的支持是基于go mod 的,同时我们也需要一个athens server 然后在nexus 中配置proxy 类型的repo 参考配置 来自官方的配置 ...