您的位置:首页 > 移动开发 > Objective-C

目标检测(Object Detection)原理与实现(三)

2013-06-14 09:10 447 查看
基于霍夫森林的目标检测

       上节说了霍夫变换(HT)和广义霍夫变换(GHT),今天就接着广义霍夫变换说下去,在广义霍夫变换中,每个投票元素(比如边缘像素中的点)在霍夫空间中累加投票的权重是相等的,每个元素投票的权重互不影响,这其实是假设了图像空间中的每个像素点是独立的,但现实是这样的吗?答案:不是,尤其是牵扯到我们今天的基于部件的投票时,这种投票元素互相独立的观点更站不脚,学过概率图模型(probabilistic graphic model)的都知道,图模型里有一种V结构,如(图一)所示:



(图一)
         X1,X2是投票元素,Y是我们在霍夫空间中的投票,假设我们观察Y时,或者说给定Y时,就是观察图像空间中的目标,假设X1和X2是目标生成的,X1和X2是独立的吗?很明显不是,这些元素应该向Y投票的权重应该更大才说的通,而其他元素投更小的权重(图一也可以看出,当给定Y=1时,X1,X2的概率由0.25提高0.33)。这就是Judea peal提出的explain away问题(Even if two hidden causes are
independent in the prior, they can become dependent when we observe an effect that they can both influence)。既然有现成的框架:概率图模型,或者严格的说概率模型,那我们就改进广义霍夫投票,进入概率空间。

       先来说说霍夫森林吧,霍夫森林是Juergen Gall在2009发表在CVPR上的。它通过构建一个随机森林把图像块(patch appearance)直接映射成对目标重心位置的投票,找到了目标重心也就找到了目标,其他做法也有构建codebook来作为投票元素。无论用什么方法,我们都可以把他们看成像霍夫变换中图像空间里的像素点一样的投票元素,然后进入霍夫空间找峰值点来检测目标。别忘了今天的主题是进入概率空间进行投票,下面来看看作者是怎么进入概率空间的。作者构建一个随机森林模型,叉开一下,随机森林由N个决策树构成,这N个决策时互相独立,分别来对目标分类,最终由N个分类的数目类别多少来决定目标类别。每个决策树的训练样本是


,其中I是目标的一个局部图像块(patch),c是它的类标签(1表示是目标,0表示背景),d表示bouding box内图像块到目标中心的偏移(offset)矢量(2D),这个对后面的目标重心投票起着很大的作用;随机树生长的目的是使节点样本的类别和offset不纯度最小化,这两项的具体定义如(图二)中的公式(2)、(3)所示:



(图二)
     节点上的分裂准则采用了像素值比较的方法,通过交替的最小化(公式一)来完成决策树的构建。



(公式一)
      最后叶子节点记录两项重要的信息:CL表示正样本比例,DL样本偏移的集合,这两项(正样本比例和offset矢量)就是投票元素。另外,训练的时候作者也采用类似级联的方式,forest=5trees+5trees+5trees,即第一次5棵树生长完成后,一些分类比较困难的样本再用来训练下一批树。检测阶段,从图像上提取patch,然后在随机森林中的每个决策树上进行判处理,接着在霍夫空间中进行投票,对图像进行密集块采样,最后输出霍夫图像。不过话说回来,概率空间体现在何处?关键点就在于如何投票,假设E(X)表示目标重心在位置X的随机事件的话,

表示给定图像块时目标重心在位置X的概率,利用贝叶斯公式和一些等价替换,该概率可以分解如(公式二)所示:



(公式二)
       (公式二)的最后一行有两项,第一项可以结合决策树叶子节点的DL用pazen窗来估计,而第二项则直接用叶子节点的CL来计算。这样(公式二)又可转换为(公式三):



(公式三)
     不过(公式三)只是一个决策树的概率,考虑用到是随机森林,对所有决策树来个平均,计算下平均概率,如(公式四)所示:



(公式四)
      这样就完成了一个patch在概率空间对其附近目标重心的投票,累加所有patch的投票如(公式五)所示:



(公式五)
        检测结果如(图三)所示,不过要说的是,检测到重心并不能说明会严格的框住目标,对于不同尺度的目标,需要区分对待,换句话要增加一个参数scale,如果还想考虑bounding box的aspect ratio,那就在增加一个参数,不过计算量也会随着参数增加而指数增长。



(图三)
       最后提下patch的构成,作者在实验中使用的patch成分为:3 channels were used (intensity, absolute valueof x- and y-derivatives),实验结果不错,但缺点也如上所述,实现代码Juergen Gall首页已挂出,还有一些细节实现请查阅参考文献。霍夫森林虽然进入了概率空间进行投票,但是毕竟是从随机森林中计算出来的,霍夫投票概率的好坏取决于随机森林获取的概率,而且投票元素和目标之间没有形成双向因果推理,这是他的瑕疵,结合着概率图模型,我们可以把概率空间中的霍夫投票理论整的更优美些,并且降低与随机森林之间的耦合度,使之可以扩展到任意概率获取方式,所以基于霍夫投票的目标检测打算再继续扩展一节。

参考文献:

Class-Specific Hough Forests for ObjectDetection. Juergen Gall

转载请注明来源:http://blog.csdn.net/cuoqu/article/details/9091555
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息