face detection[CNN casade]
本文是基于《 A convolutional neural network cascade for face detection》的解读,所以时间线是2015年。
0 引言
人脸检测是CV社区中一直研究的问题,现在大多的人脸检测器都可以很容易的检测正脸或者接近正脸。所以人们开始关心如何解决在无约束条件下的人脸检测问题。而无约束条件下的人脸包含:姿态变化,夸张的表情和极端的光照变化,而这些也会引起人脸外观的变化,所以就很容易导致人脸检测器都不够鲁棒。
人脸检测的问题主要来自两方面:
- 在嘈杂背景下的人脸的视觉变化;
- 人脸位置和人脸大小导致的超大搜索空间。
前者需要人脸检测器加速处理一个二分类问题;而后者需要处理时间复杂度问题。而且不同于通用的目标检测任务,无约束人脸检测使得其无法直接使用RCNN这种方法去实现,主要是因为图片中,有些人脸十分小,而且有复杂的外观变化。
前人在级联人脸检测上的工作较为成功的是用haar做特征,用前面的模型过滤大量的背景位置,从而减少搜索空间。后人的工作多是如何提取更有效的特征来提升准确度,且因为采用了更复杂的特征每一层模型消耗时间增加了,可是级联的层数也少了。所以相对的,总体时间反而比最初直接haar的多级联模型时间更少了。这也给作者启示,用现在大热的CNN来作为特征的提取方式。用级联cnn的方式,
- 先在开始的低分辨率阶段,快速的拒绝大量的假阳性窗口;
- 然后在后面的高分辨率阶段,小心的验证检测结果。
在cpu上达到了14FPS;gpu上100FPS。
本文贡献有:
- 提出CNN级联来快速的做人脸检测;
- 引入一个窗口校正阶段用于帮助加速CNN级联然后获得高质量的定位。
- 提出一个多分辨率CNN结构,比单分辨率CNN有更好的辨别性;
- 提升了FDDB数据集上的最好结果记录。
1 级联CNN
如图1所示,就是通过不断的级联来减少候选区域

给定一个测试图片:
- 12-net扫描整个图片:基于不同尺度的图片快速扫描,并拒绝90%的检测框;(此时网络输入为12×12,检测框大小为12x12)
- 剩下的框先裁剪出来,然后resize成12x12以适应12-calibration-net的输入,获取其校正变量,来校正检测框大小。通过调整大小和定位来接近潜在的人脸区域;(此时网络输入为12x12,检测框大小被该网络调整,假定为AxB)
- 用NMS去消除一些高度重复的检测框;
- 剩下的检测窗口被裁剪出来,然后resize成24x24大小的作为24-net的输入,并拒绝90%的检测窗口;(此时网络输入为24x24,检测框大小为AxB)
- 如之前的流程,剩下的检测窗口被24-calibration-net所调整,然后用NMS消除高度重复的框;(此时网络输入为24x24,检测框大小被该网络调整,检测框大小为CxD)
- 最后的48-net接收48x48大小的框并评估这些检测窗口。NMS用一个大于之前阈值的IOU比例去消除重复的检测窗口;
- 最后用48-calibration-net去校正剩下的框,然后作为结果输出。(最后输出的检测框大小为ExF)
1.1 12-net

如图2所示,12-net是一个十分浅的网络,其能快速的扫描整个测试图片。假设一个图片的输入为\(W\times H\),以4个像素为间隔,那么一共有\((\left \lfloor (W-12)/4 \right \rfloor + 1)\times (\left \lfloor (H-12)/4 \right \rfloor +1)\)个\(12\times12\)大小的划框,这么多划框可以组成一个置信得分map,其中每个点就是对应的一个划框的评估值。
在实际实现中,如果最小人脸大小为\(F\times F\)。首先将测试图片以图片金字塔进行构建,每一层的缩放因子为\(\frac{12}{F}\),将这些作为12-net的输入。假设图片大小为\(800\times 800\),最小接受人脸为\(40x40\),间隔为4个像素,那么首先进行一次缩放,为\(240\times 180\),将该图片输入到12-net中,可得到2494个划框。
1.2 12-calibration-net

如图4所示,12-calibration-net是接在12-net后面的,用于后选框的校正。该网络也是一个较为浅的网络。先预定义N个校对模式,该N个校准模式被预定义为一组3维尺度变化和偏移矢量\({\left [ s_n,x_n,y_n \right ]}^N_{n=1}\)。假定一个检测框为\((x,y,w,h)\),表示为左上角坐标\((x,y)\),宽高为\((w,h)\),那么调整该窗口的校对模式为:
\[(x-\frac{x_nw}{s_n}, y-\frac{y_nh}{s_n}, \frac{w}{s_n}, \frac{h}{s_n})\]
本文中,\(N=45\),即从下面的参数组合而来:

给定一个检测窗口,将该区域裁剪出来,然后resize到12x12大小,然后输入到12-calibration-net,该网络输出一个置信度得分向量\([c_1,c_2,...,c_N]\)。因为calibration模式不是相互正交的,所以将高置信度的平均结果作为调整\([s,x,y]\),如:

这里t是过滤低置信模式的阈值。在实验中(如表1),FDDB数据集上,12-net和12-calibration-net就能拒绝92.7%的检测窗口,并且保持94.8%的召回率

1.3 24-net
24-net是一个中间的二分类CNN,用来进一步减少检测框的数量,将12-calibration-net输出的检测框裁剪出来,然后resize成24x24,并用24-net进行评估。这里有一个多分辨率网络结构设计,如图2所示,这些裁剪出来的检测框还会进一步resize成12x12,然后用12-net进行评估,将其全连接层拼接到24-net的全连接层,然后再进行最后的分类,增加12-net的输入是为了检测那些小尺寸人脸,使得总的CNN结构更具有分辨性,且12-net的网络计算量也并不大。如图3,这里做了有和没有多分辨率网结构的24-net,可以看到在相同的召回率上,有多分辨率设计的结构可以得到更少的假检测窗口。在更高的召回率上,差距就更明显了

1.4 24-calibration-net
类似12-calibration-net,实验中,24-net和24-calibration-net可以拒绝86.2%的检测框,并且在经过24-calibration-net的修正之后,还能保持89.0%的召回率。
1.5 48-net
类似24-net,如图2,增加了一个多分辨率结构设计,其中的子网络结构就是24-net。
1.6 48-calibration-net
如图4,采用了45个校对模式,这里只是用一层池化层来保证更多精确的校正。
1.7 NMS
在12-calibration-net和24-calibration-net后面,基于相同的尺度检测框下进行NMS,以避免召回率的下降;而在48-net之后,是针对所有检测框进行NMS,以保证在正确的尺度上能够避免较多的冗余。
2 CNN的校对网络

如图5。置信度最高的检测框可能并不能够很好地框住人脸,而如果没有校对这一过程,那么在级联的下一层就需要评估更多地区域来维持一个较高的召回率。总的检测时间就会上升。
参考文献:
- Li H, Lin Z, Shen X, et al. A convolutional neural network cascade for face detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2015: 5325-5334.
face detection[CNN casade]的更多相关文章
- 利用神经网络进行网络流量识别——特征提取的方法是(1)直接原始报文提取前24字节,24个报文组成596像素图像CNN识别;或者直接去掉header后payload的前1024字节(2)传输报文的大小分布特征;也有加入时序结合LSTM后的CNN综合模型
国外的文献汇总: <Network Traffic Classification via Neural Networks>使用的是全连接网络,传统机器学习特征工程的技术.top10特征如下 ...
- Applied Deep Learning Resources
Applied Deep Learning Resources A collection of research articles, blog posts, slides and code snipp ...
- ImageNet && 医学图像的识别
医学图像识别的问题 如果将CNN应用于医学图像,首要面对的问题是训练数据的缺乏.因为CNN的训练数据都需要有类别标号,这通常需要专家来手工标记.要是标记像ImageNet这样大规模的上百万张的训练图像 ...
- Machine Learning 资料
Awesome系列 Awesome Machine Learning Awesome Deep Learning Awesome TensorFlow Awesome TensorFlow Imple ...
- Paper List ABOUT Deep Learning
Deep Learning 方向的部分 Paper ,自用.一 RNN 1 Recurrent neural network based language model RNN用在语言模型上的开山之作 ...
- caffeModels--models-caffes-大全
caffe的伯克利主页:http://caffe.berkeleyvision.org/caffe的github主页:https://github.com/BVLC/caffe caffe的model ...
- Deep learning_CNN_Review:A Survey of the Recent Architectures of Deep Convolutional Neural Networks——2019
CNN综述文章 的翻译 [2019 CVPR] A Survey of the Recent Architectures of Deep Convolutional Neural Networks 翻 ...
- Deep Learning方向的paper
转载 http://hi.baidu.com/chb_seaok/item/6307c0d0363170e73cc2cb65 个人阅读的Deep Learning方向的paper整理,分了几部分吧,但 ...
- 【零基础】speech driven animation中文安装使用指南
注:原项目名叫Speech-Driven Animation,所以我这里就简称为SDA 开局一张图,后面自动编 相信前段时间爆火的DeepNude(AI扒衣)让很多人惊掉了大牙,AI还能干这个?!如果 ...
随机推荐
- 算法:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
算法:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型.<剑指offer> 利用栈来进行操作,代码注释写的比较清楚:首先判断两个栈是否是空的:其次当栈二 ...
- SAP生产机该不该开放Debuger权限
前段时间公司定制系统在调用SAP RFC接口的时候报错了,看错误消息一时半会儿也不知道是哪里参数数据错误,就想着进到SAP系统里面对这个接口做远程Debuger,跟踪一下参数变量的变化,结果发现根本就 ...
- CentOS 6.5 搭建 .NET 环境, Mono 5.16.0 + Jexus 5.8
最近有这样一个打算,就是准备把以前的有一个.NET 网站部署在Linux 下面,正好试试 .NET 跨平台的功能,为后续研究 .netCore 方向准备. 搭建环境: CentOS 6.5 + Mon ...
- Javascript 高级程序设计--总结【三】
******************** Chapter 8 BOM ******************** BOM由浏览器提供商扩展 window: 既是js访问浏览器窗口的接口,又是Globa ...
- 常见 User-Agent 大全(自己在用)
分享几个常见的User-Agent吧,复制粘贴过来的,谢谢原创. window.navigator.userAgent 1) Chrome Win7: Mozilla/5.0 (Windows NT ...
- AI学习---特征工程【特征抽取、特征预处理、特征降维】
学习框架 特征工程(Feature Engineering) 数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已 什么是特征工程: 帮助我们使得算法性能更好发挥性能而已 sklearn主 ...
- php学习----什么是常量
PHP-什么是常量 1.什么是常量?常量可以理解为值不变的量(如圆周率):或者是常量值被定义后,在脚本的其他任何地方都不可以被改变.PHP中的常量分为自定义常量和系统常量(后续小节会详细介绍). 2. ...
- Spring的AOP基于AspectJ的注解方式开发2
参考自黑马培训机构 上一篇博客提到了在配置文件中开启aop的注解开发,以及简单使用了@Before,@Aspect 这是为了告诉spring为前置通知和切面类 接下来介绍aop的注解的通知类型,和切入 ...
- ORM版学员管理系统3
老师信息管理 思考 三种方式创建多对多外键方式及其优缺点. 通过外键创建 class Class(models.Model): id = models.AutoField(primary_key=Tr ...
- Java面试知识点之设计模式(一)
前言:关于设计模式,在框架中用的比较多.在平常接触最为频繁的估计是单例模式了,因此笔者在此对设计模式相关知识点进行总结. 1.设计模式的种类 总体来说,设计模式分为3大类总共23种: 1)创建型模式, ...