人脸检测之Cascade CNN

这是2015年的CVPR,有点早,但是比较经典。

1. Introduction

本文的级联结构是把一系列浅层的网络集成到一起,可以有效的减小CNN的计算量。
本文工作直接从图片中训练分类器,而不是依赖人工选取的特征(15年以前的基本是先提取特征)
特点:
可以在12-net的低分辨率阶段快速剔除背景,在24-net的高分辨率阶段细致进行检测。(这句话看了后面的具体网络结构就知道什么意思了)

2. CNN Cascade

2.1. overview

(1)首先用12x12的检测窗口扫描整张图片,检测窗口投入到12-net中,剔除90%的检测窗口。
然后用12-校正网处理剩下的窗口,调整尺寸和位置
利用NMS剔除高度重合的检测窗口
(2)对于剩下的窗口,由于经过了精修,所以已经不是24x24. 所以裁剪出来,resize到24x24,送到24-net中剔除渣的检测窗口
然后再校正
同样进行NMS
(3)然后再resize到48x48,利用48-net处理
再进行所以图像尺度的NMS
利用48-校正网进行校正,输出bbox

2.2. CNN structure

6个CNN (3个二分类,3个bbox校正)

2.2.1 12-net

这里写图片描述
对image,用12x12的检测窗口,stride=4进行滑动(注意:不是卷积)。将每个12x12的窗口投入到12-net中进行分类,剔除90%概率得分低的检测窗口。

实际上,因为图片中face的尺度范围是不同的,于是使用图像金字塔,以覆盖不同的尺度。

如image中,最小face的尺寸为F,则image需要变换成image_size * 12 / F. 以满足12x12的kernel能覆盖小目标。

eg:image为800x600,最小face为40x40,此时需将image缩放为240x180,这样face大小就为12x12. 

            最终这个scale的image产生[(240-12)/4 + 1]*[(180-12)/4 +1]=2394 个检测窗口

            **其实这些检测窗口数最后是用一个map表示,每个位置的值表示每个bbox的confidence

2.2.2 12-calibration-net

这里写图片描述
这里提供45个[s,x,y]向量,用于修正位置和大小
这里写图片描述
将上面的检测窗口送入网络,输出45个confidence score
对[s,x,y]取平均(前提是confidence>t),对bbox的x,y,w,h进行修正。
这里写图片描述
修正公式:
这里写图片描述

然后,进行NMS

——————–此时检测窗口的大小已经不是12x12———————-

2.2.3 24-net

这里写图片描述
将上面产生的窗口:resize到24x24,投入到24-net进行分类。
同时:将input resize到12x12,投入到12-net经过FC后,连接到24-net的FC,再进行分类

把渣的检测窗口踢掉。

2.2.4 24-calibration-net

和12-calibration-net差不多

然后,进行NMS

———————此时检测窗口的大小已经不是24x24———————-

2.2.5 48-net

进行NMS,此时需要对所有尺度的图像(因为是图像金字塔)进行NMS,后续只要修一次位置和尺寸就可以输出了

2.2.6 48-calibration-net

—————————-此时,得到修正后的output—————-

2.3 Training Process

搞一些正负样本来训练分类器就行。

猜你喜欢

转载自blog.csdn.net/leewanzhi/article/details/80236874
今日推荐