欢迎转载,请注明本文作者@迷途中的前进,以及本文网址。
论文《rapid object detection using a boosted cascade of simple features》笔记----人脸检测论文
本文作者有三个重要贡献,其一是积分图,无论是在计算过程中,还是在训练过程中都需要计算出来原图像的积分图,它能加快计算过程;其二是使用adaboost算法选择一小部分重要的特征来构造分类器,但是对adaboost算法稍作调整,一个弱分类器只是有一个特征决定;最后一个是,把复杂的分类器(即强分类器)组合成级联分类器,把检测器把时间花在更有可能含有检测目标区域的地方,进一步提高了检测速度。
1 特征
本文中只使用三种特征,一个是两矩形特征,例如上图中A和B;一种是两矩形特征,例如C;最后一种是四矩形特征,上图中D所示,这些特征都是24*24像素。特征的个数在下一篇论文中有明确公式计算。
2 积分图
2.1 定义
注释:ii(z,y) 表示积分图
i(x,y)表示原图像。
2.2积分图的计算
S(x,y)是最右列的列和,如果按照定义那样连续求和,无疑计算量是很大的,这样在计算过程中使用迭代,会很大程度上降低计算时间复杂度,进而可以节约时间,提高训练速度和检测速度。
2.3 特征值的计算
D区域为右侧任意一个haar-like特征,1,2,3,4分别为该特征的四个角的坐标。1处在积分图上的值为A,2为A+B,3为A+C,4为A+B+C+D,所以特征值为(4+1)-(2+3)。
3.1 准备
准备好好正负样本集,(x1,y1),(x2,y2)……(xn,yn),当样本为正时,yi为1,当为负样本时,yi为0;
3.2 初始化权重
W1,i=1/2m或1/2l
m是正样本的个数,l是负样本的个数,其中m+l=n。
3.3 for t=1……T
每一轮的循环,都从所有的特征中选取一个错误率最小的弱分类器加入到强分类器之中。
3.3.1 归一化权重
归一化w的原因就是让它成为一个概率分布。
3.3.2
对于每一个特征j都可以训练生成一个弱分类器hj,这样每一个弱分类器都可以形成一个错误率ɛj,
ɛj=
3.3.3 选择上面ɛj 最小的一个特征,作为弱分类器 ht。
3.3.4 更新权重
3.4 循环结束,形成强分类器
每一个级联都是一个强分类器,关键是在前几级的级联都是是有几个简单弱分类器构成的强分类器,虽然很小,但是很有效,它能很快的排除大部分不是人脸的区域,这样接下来更为复杂的分类器就能把时间放在潜在的人脸区域,提高了检测速度。
在本文中的实验共有正样本4916,镜像后相当于9832个,负样本有9544个,训练好的级联分类器共32stage(层),共使用特征6061个,那么就相当于3.3的循环中T=6061。
在级联分类器中,前5层的分类器所使用特征的个数分别为1,1,25,25,50。这样,在检测人脸的过程中,大多数子窗口都在前5层否定掉,极大地提高了检测速度。如下图所示:
4.1 训练cascade(级联)
在训练级联的过程中需要权衡两种因素:高击中率(真正率或者检测率)和虚警率(假正率或误检率)。我们需要的是高检测率的同时,又需要尽可能小的虚警率,这是一对矛盾共同体。如果减小阈值,检测率会变高,但同时虚警率也会变高;如果是变大阈值,正好相反。
在实践中有两种优化方法,其一是:在每一层的强分类器中增加特征(弱分类器),直到检测率和虚警率符合要求;其二是:增加级联(层)的个数,直到总的检测率和虚警率符合要求。
综上,积分图产生于1984年,boost算法产生于1988年,至于级联在90年代末期也早已有了雏形,2001年本文作者Paul Viola和 Michael Jones把这三种知识点组合到人脸检测中,为人脸检测领域做出了重要贡献,因此,在2011年CVPR委员会将Longuet-HigginsPrize这一代表在计算机视觉领域作出奠基贡献的奖项颁给了该篇文章,以认可该文在十年来在计算机视觉领域基础性的影响。
参考文献:
Paul Viola and Michael 1. Tones. Rapid Obiect Detection using a Boosted Cascade of Si&Je Featu;es. IE6E CVPR. 2001.