霍夫森林算法

霍夫森林算法是一种利用霍夫空间投票识别图片或点云目标的算法,算法设计参考了随机森林,是一种bagging的机器学习算法。
我们经常在图片识别的视频中看到将视频中的目标物识别出来,并进行分类。而如何准确地从背景中提取我们需要的目标物,霍夫森林便是研究这一问题的一种算法。

参考文献:

  1. Hough Forests for Object Detection, Tracking, and Action Recognition [2011]
  2. Object Detection in Terrestrial Laser Scanning Point Clouds Based on Hough Forest [2014]

关于霍夫变换和霍夫空间的知识可参阅上一篇博客

霍夫森林算法用于图像识别

下图图a是一个行人的图片,图中的3个小图块红色和蓝色分别属于人的一部分,而绿色则属于背景的一部分。

image

数据Patch

霍夫森林首先做的一件事情是将数据给分成若干个Patch,如本文中以16×16像素的小图块作为一个Patch,在训练过程中,对于每一个patch,我们保存以下数据:
image
其中,Pi代表每个patch集合,Ii存储图片的特征,ci是Label,在图片问题中,我们认为检测目标(人)的Label是1,背景则是0。di是图块到目标中心点的距离(dx,dy)

图片特征

常用的可以作为图片特征有HoG特征、LBP特征、颜色直方图等等。

HOG
方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。HOG特征通过计算和统计图像局部区域的梯度方向直方图来构成特征。
在一副图像中,局部目标的表象和形状能够被梯度或边缘的方向密度分布很好地描述。其本质为:梯度的统计信息,而梯度主要存在于边缘的地方。
首先将图像分成小的连通区域,这些连通区域被叫做细胞单元。然后采集细胞单元中各像素点的梯度的或边缘的方向直方图。最后把这些直方图组合起来,就可以构成特征描述符。

LBP算子
LBP(Local Binary Pattern)算子是一种用于描述图像局部纹理特征的算子,具有旋转不变性和灰度不变性等优点。

Lab颜色直方图
对每个固定大小的图像块统计 Lab 空间下的颜色直方图。具体方法是,首先将原始图像块转化为 CIE-Lab 颜色空间模型表示。为了降低特征维度,分别对 L、a、b 三个通道进行量化,将L通道[0,100]均匀量化为 10 个区间。因为 Lab 空间在靠近 0 的地方,颜色变化较为明显,所以对 a、b通道采用非均匀量化。靠近 0 的地方,量化区间较小,反之则较大。量化区间为:[-128,-85]、[-85,-50]、[-50,-25]、[-25,-10],[-10,0]、[0,10] 、[10,25]、 [25,50]、 [50,85]、 [85,127]。一般情况下,忽略亮度信息 L,仅根据像素的 a,b 值投票至颜色直方图。当色阶 a、b 和亮度 L 均小于一定阈值时,认为该像素色彩色调不明显,而亮度信息较重要,此时忽略该像素 a、b 值,投票至颜色直方图的对应 L 柱条,整个颜色直方图由 10×10 维 a、b柱条加 10 维 L亮度柱条组成,共110 维。

树的构建

下面,对于每个图块的batch,构建如下决策树:

Step1:多特征提取后可得每个 patch 的表达: P (xi , ci,di),其中 pos Pi(xi , 1,di) ,neg Pi(xi ,0, 0)

Step2:Hough 森林通过生成随机的二值测试来分裂节点:每次分裂生成 2000 种特征选择方法,不同的特征在各自的维度中进行比较,例如 144 维 HOG 特征中选择 2 维进行比较。其中,特征种类 f、维数 p、q、阈值τ均为随机选取。

Step3:计算最小化类别不确定性和最小化偏移向量不确定性,选择 2000 次分裂中的最优分类。最优的分裂将形成一个子节点,子节点中储存了最优的特征种类 f、维数 p、q、阈值τ 。当满足一定条件时,当前子节点为叶节点,该节点不再分裂。每个叶节点 L 存储了一个图像块属于每一物体类别 c 的概率p(c|L) ,这个概率是由到达该叶节点的图像块中属于该类的图像块与总的图像元素数目的比值决定的。此外,节点 L 还存储了DL,即测试图像块相对于样本中心的偏移量。

Step4:当所有的子节点成为叶节点后,树停止生长,训练得到一颗随机树。

霍夫森林

上面提到每棵树的叶子结点都存储了概率和偏移量DL,那么我们对训练样本进行训练,得到(CL,DL)的合集。
其中CL表示正样本比例,DL样本偏移的集合,这两项(正样本比例和offset矢量)就是投票元素。

检测阶段,从图像上提取patch,然后在随机森林中的每个决策树上进行判处理,接着在霍夫空间中进行投票,对图像进行密集块采样,最后输出霍夫图像。

如图b,便是红蓝绿三个patch在霍夫图像的投票结果,为patch当前坐标 + DL,投票投的是目标中心坐标。
可以看到,红色和蓝色有大部分点投票到了差不多人中心的区域,对于绿色点,仍有树认为它是人的一部分,会产生一些零散的点。栅格化霍夫空间,得到人的中心点。

图c是把图中所有patch投票结束的结果,可以看到基本上投票到了正确的位置。
然后,把patch和已经求出的中心坐标进行拼接,得到目标轮廓d。

image

霍夫森林用于三维点云识别

霍夫森林用于三维点云识别和图像很类似,以下几点值得注意:

  • 这里DL = (dx, dy, dz)
  • 特征取3D点云的一些常用特征,如Spectral features,Eigenvalues of covariance matrix,3-D invariant moments,Fast point feature histograms (FPFH),Median of reflectance intensities
  • 点云的patch用八叉树进行数据结构的保存,注意点云的输入大小并不像图像一样是等长度的。

训练:
image

检测:
image

posted @ 2022-07-06 20:42  Asp1rant  阅读(236)  评论(0编辑  收藏  举报