对象检测之行人检测(2)

上一次介绍了行人检测的基础算法-滑动窗口方法对象检测之行人检测(1)。这一次来介绍其中检测效果较好的聚合通道特征算法,该算法的优点在于行人检测性能好,同时检测速度极快。

  • 聚合通道特征简介
    聚合通道特征(Aggregate Channel Feature,ACF)是由Piotr Dollar这个大神提出的,一开始叫积分通道特征(Integral Channel Feature,ICF),在他的开源toolbox里给出了Matlab版本的实现。
    所谓聚合通道特征,其实就是把几个不同的特征叠加在一起,形成一个统一的特征。要理清这个概念,首先需要说明特征通道是什么。好了,我们先上图,见图1。
    特征通道
    图1 特征通道示意图
    特征通道,用八股文的说法,就是对输入图片的某种输出响应,简单理解就是对输入图片做一个映射,这个映射可以是点对点的,可以是区域的,总之就是要完成从输入到一个与输入同样大小的图片的变换,这个经过变换的图片就是一种通道特征。对于灰度图像而言,可以认为它本身即为最朴素的通道,而彩色图像包含了RGB三个颜色通道,同时也可以计算它所对应的灰度通道或者LUV颜色通道。在此基础上,一阶通道特征可以定义为对某个输入通道在一定区域的像素之和,而高阶通道特征则定义为使用任意多个一阶通道特征相互叠加后计算出的结果值。在图1中,对于输入的(a)图像,分别计算了他的L(b),U(c),V(d)颜色通道,梯度幅值通道(e)以及四个梯度方向通道(f)-(i)的特征。
  • 聚合通道特征的由来
    介绍了聚合通道特征(一开始又称积分通道特征),此时其实很想知道他是怎么来的。此刻就可以追溯到VJ检测算法中所用的Haar-like特征和积分图。在对象检测之行人检测(1)中提到,VJ通道级联分类器的方法大大加速检测过程中每个窗口的分类过程。可是,对于级联分类器,它每一级的判别特征应该作何选择呢。VJ采用了Haar-like特征,示意图见图2。
    这里写图片描述
    图2 Haar-like特征示意图
    对于一个矩形区域,它的Haar-like特征值可以表示为白色像素值之和减去黑色像素值之和。这样的特征具有较好的鲁棒性,对光照变换什么的不敏感,特别是在人脸检测时效果较好。但是其缺点在于计算特征时是以原始图像的灰度图为基础。我们都知道,在行人检测里,HoG特征很好用,而此时我们已经有了特征通道的概念,那么,是否可以用同样的方式表示HoG特征呢。当然了,这就是积分通道特征的思想,此时只要把Haar-like计算过程里的图片从灰度图变成某个方向的梯度图(图1f-图1i),那么一个区域的Haar-like特征就变成了“梯度方向Haar-like特征”。
  • 聚合通道特征计算
    描述了Haar-like特征,每个特征值计算是需要一个区域的像素之和,如果对每个区域都来一个循环叠加统计的话,计算还是太麻烦,因此VJ就提出了积分图的方法来快速计算一个区域像素和,见图3。
    积分图
    图3 积分图
    对于积分图中的任意一点,它的“像素值”为原始图像坐上角到该点所有像素值之和。这样,对于每一个区域的像素值之和,如D,可以简化为四次查表操作和三次加法操作(f(D)=f(4)-f(1)+f(2)+f(3)),在积分图给定的情况下,它的计算复杂度为O(1)。而对于一张图像而言,积分图只在初始化时计算一次。
    对于每一个特征通道,我们都可以计算它所对应的积分图,同时既可计算任意一个区域的“Haar-like通道特征值”。如果一个区域要计算直方图特征怎么办呢,那也简单,使用积分直方图就可以搞定。示意图见图4。
    积分直方图
    图4 积分直方图
    在积分直方图中,任意一点的“像素值”不在是一个单独的值,而变成了一个向量,表示该点左上方区域的直方图统计。使用和积分图同样的思想,就可以轻易的通过查表操作得到一个区域的直方图。此时,聚合通道特征就可以发挥其效力。
  • 特征通道的选择
    在有了聚合通道特征的概念和相应的计算方法之后,剩下来的一个问题就是聚合通道特征中到底应该包含哪些特征了。这个只能通过实验来进行验证。在图像处理领域,特征通道通常有颜色通道(RGB颜色通道、LUV颜色通道、灰度通道)、梯度通道(包括梯度幅值通道和梯度方向通道)和边缘通道(有Sobel边缘通道、Canny边缘通道)等。所以,首先单独采用单一的特征通道来做检测,验证下各个通道的有效性,在INRIA行人数据集上结果为:
    表1 特征通道性能表
    特征通道性能
    从表中可以看到,使用梯度方向通道以及HoG通道的检测效果较好,刚好符合之前人们关于行人检测的认知(在行人检测问题上最好用的特征就是HoG特征)。
  • 聚合通道特征的表示
    有了单一类型的通道特征的检测性能(其中通道特征不限于上述几种,还可以进行更广泛的实验,如测试Gabor滤波特征、SIFT特征等)后,可以对几种特征做组合,得到聚合通道特征,在实验中Dollar发现使用LUV颜色通道+梯度幅值通道+梯度方向通道组合后所形成的特征检测效果非常好,因此也是现在聚合通道特征的标准配置。此时在形成某个窗口的特征描述时,需要将各个通道特征罗列在一起,见图5j。
    聚合通道特征描述子
    图5 聚合通道特征描述子示意图
    窗口中各个通道特征罗列在一起所形成的特征描述,以后则称为聚合通道特征。利用它作为窗口的特征表示,此时就得到了每个窗口统一维度的特征向量了。

  • 特征图像金字塔
    还记得在对象检测之行人检测(1)中讲过,要用不同大小的窗口分别扫描图片。其实还有一种办法,就是窗口大小不变,而改变图片的大小,前一种的思路是缩放窗口,后一种方法的思路是缩放图片,效果都差不多。此时就涉及到图像特征金字塔的生成。见图6
    特征图像金字塔
    图6 特征图像金字塔
    对于每个尺度(既不同大小)上的原始图像(示意箭头上方图像),需要计算它所对应的特征图像(箭头下方图像),所形成的整个特征图像集,就称为特征图像在尺度空间中的特征图像金字塔。这个计算过程很耗时,Dollar在做了相应的探究之后发现,其实并不用再每个尺度都做一遍特征计算,而只需要计算其中的少数几个尺度,例如,每隔8个尺度计算一次,其它尺度上的特征图像则通过相邻尺度上特征图像直接做缩放得到。这样,大大缩减了特征的计算时间,同时检测效果还不差。相比起特征计算而言,图像缩放的计算量可以忽略不计,因此加速想过相当明显。
    此时,整个检测的过程变成了这样,对于一张输入的图片,先构建该图像的特征图像金字塔(尺度空间的大小依据输入图片大小计算得到,特征则包含LUV颜色通道、梯度幅值通道和梯度方向通道),之后,对于金子塔中的每一层,用一个固定尺寸的窗口对该层做扫描,窗口每过一处,就得到该处如图5所示的聚合通道特征描述子。将该描述子丢到分类器中,判别出当前窗口是否是行人。而分类器则采取级联的形式,加快计算的过程。等到计算完了所用尺度中的所有窗口,则图片中的所有行人就都被标注出来了。
    好了,到此就讲完了聚合通道特征相关的东东,下一次我们再来说说检测性能很牛叉的Fast-RCNN是怎么做检测的吧。

  • 10
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值