天天看点

经典论文阅读——A Convolutional Neural Network Cascade for Face Detection

论文:A Convolutional Neural Network Cascade for Face Detection.pdf

实现:https://github.com/anson0910/CNN_face_detection

发表在2015年CVPR上的论文。提出了一种级联的CNN网络用于人脸检测。

首先,cascade(级联、串联)思想:1.将一个大的网络结构划分成小的几部分的网络结构,从而加快速度。2.对上一个网络的结果进行学习,不断修正refine。

该论文主要贡献有一下四点:

l 提出了级联的CNN用于快速的人脸检测

l 设计了Face bounding box calibration 这一步去帮助加速cnn级联。

l 提出了一种多分辨率的CNN网络结构,有着比单网络结构更强的识别能力,和一个微小的额外开销。

l 在Face Detection Data Set and Benchmark (FDDB)上更进一步地提高了现有水平.

整个处理流程里包含了六个网络和三次NMS(极大值抑制),六个网络按顺序分别是12-net,12-calibration-net,24-net,24-calibration-net,48-net,48-calibration-net。

包含三个二分类网络用于分类其是否为人脸,另外三个calibration网络用于矫正人脸框边界。

给定一个测试图片,12net扫描整个图片以拒绝90%的区域,剩下的区域(即认为可能是人脸的区域,每个都是12*12的图片)送入12-calibration-net以调整尺寸和位置。Non-maximun suppression(NMS)被用于减少高度重合的区域。留下来的区域被裁减以调整尺寸为24*24,然后输入24net,再拒绝掉90%的区域。以此类推,直到48net和48-calibration-net执行完。

默认每一次做完pooling和fully-connected 都做RELU。

各层网络结构如下:

对原图像resize成对应的12x12,24x24,48x48然后很大程度上过滤掉非人脸区域,减少计算提高了速度,然后用NMS消除高度重叠的检测滑动窗口。

12-calibration-net,24-calibration-net,48-calibration-net的结构如下图所示:

这三个网络用于矫正检测边界框,原理是对原图做45次变换,然后每个变换后的边界框都有一个得分,对于得分高于某个设定的阈值时,将其累加进原边界,最后结果取平均,就是最佳边界框,关于45次变换,有如下得来:

其中s——scale,框的大小变化

x——沿X轴的平移距离

y——沿Y轴的平移距离

变换方式如下:

继续阅读