结构化随机森林_1

文章链接

本文是国防科技大学的同学发表的关于把结构化随机森林方法用于道路识别的文章,这里阅读了其中的算法部分。

4.基于结构化随机森林的道路检测方法

随机森林有以下优点:
- 简单容易实现
- 训练快,测试快
- 抵抗过拟合
- 支持并行化

然而,当用于道路检测时,基于像素处理的随机森林单独预测每一个像素,而忽略了邻近像素的连接关系。
这种方法可能会输出不连续,出现很多噪声。
一些研究者用patch和超像素来替代独立的像素。这类方法利用了部分的上下文信息。

然而,这些方法,把每部分对应到离散的标签,这样会导致最后输出图像的分辨率下降,尤其是在边界上。
一个更有效的方法是,使用结构化预测。
在结构化预测中,预测函数把输入空间X映射到结构化的标签空间Y,而不是离散的标签空间C。条件随机场就是一种结构化预测方法,广泛用于计算机视觉领域。

然而,条件随机场是一种概率图模型,它的推到依赖耗时的消息传递或图割。K和D提出的结构化随机森林,我们提出把这个方法用于道路检测。

4.1 公式

在单目视觉的道路检测中,目标是把像素分成两类:道路(c=1)和背景(c=0)。在结构化随机森林中,使用d×d的图像patch,而不是把像素,作为输入。结构化的二进制标签空间包含了d×d的图像patch P。

在一般标记好的道路图片中,我们观察到label patch 不是随机分布的,而是高度结构化的。如上图所示。四个不同的方框表示四个典型的标签,即:全部是背景,全部是道路,左半边是道路,右半边是背景。这些模式在基于像素的分类器下是被忽略的。所以,使用结构化随机森林可以很好的提高道路检测的性能。

4.2 结构化随机森林的训练

在离散标签空间的随机森林中,依据最大熵增益来确定最佳分割参数。
然而,在结构化随机森林中,结构化标签空间维数高,非常复杂。这给训练带来了2个问题:求解最佳分割时过于复杂;更难的问题是信息增益很难定义。这是结构化随机森林要解决的根本问题。
常见的解决办法是建立结构化标签和离散标签之间的关系。K提出了2个方法来获得离散标签,一个方法是取patch中心像素的label,另一个方法是在patch里随机选一个像素。这些直观的方法并没有充分利用label patch的全部信息,选一个固定的像素或者随机选一个像素,会使得训练低效。

为了解决这些问题,[10]提出了两步映射方法,第一步,把结构化标签变成一串二进制向量,然后使用K均值,或者PCA,来获得相应的离散标签。这种方式更加有效,应为它考虑到整个patch。

在道路检测中,结构化标签是binary patch,把它重排成一个二进制向量。接着,用K均值或者PCA获得离散标签。在K均值聚类中,设置K=2,使用汉明距离。再根据聚类中心,每个结构化标签被设置为0或者1。由于道路patch和背景patch的可分性很好,表明把结构化标签映射到离散化标签,很有效。

相比于K均值聚类,PCA离散化计算更快。把长长的二进制向量,投影到第一分量方向,并根据是否投影到正半轴方向,分配一个离散的标签,0或者1。

考虑到计算效率,使用PCA离散化方法。

离散化结构化标签之后,可以用一般的最大增益法对决策树的每个分支进行训练。

For the test functions, we considered the single location feature and the feature difference between a couple of locations.
对于测试函数,使用单一分布特征,和一组分布的特征差异。

对于h×w分辨率的测试图片,在第5部分会提到,对于每个像素,提取n维特征通道。对于每一个测试图片的patch,我们可以获得d×d×n维的向量。

Single location测试函数定义如下:

h(x,θj)=sign(f[θrj,θcj,θkj]θtj)

θrj 表示patch中row
θcj 表示patch中的column
θkj 表示特征的通道索引(channel index of the feature)
θkj 是阈值

另一种测试函数如下:

其中,r,c和r’,c’表示patch中的两个位置,其他参数和上面是一样的。

决策树的测试函数:每个节点的判断方法,是属于左分支,还是右分支。

4.3 结构化标签预测

对于树的每一个叶子节点,通过训练过程,获得一组training patches。可以用条件分布或者极大后验概率估计来给每一个叶子节点建模。Y中的每一个元素Pt表示叶子节点t的label patch。[9]假设一个patch中的各个像素的标签是独立互不影响的,可以由此获得由叶子节点预测到的label patch的联合分布概率:

Pr(pPt)=i,j[Prij(pij|Pt)]

Prij(pij|Pt) 表示像素位置为(i,j)的边缘类分布概率。
那么,最大后验概率的label patch可以表示为:
p=argmax(pPt)Pr(p|Pt)

这里选择一种简单的机制来参数化叶子节点,在patch中的每一个像素里,直接保存了对应像素的边缘分布。这个方法计算效率快,保留更多的信息。另外,由于道路检测是一个二分问题,因此仅仅需要对patch里的像素,记录它是道路的概率。

4.4 利用标签融合进行道路检测

用N棵决策树训练了一个结构化的随机森林,需要对给定测试图片进行判断。不像传统的基于像素的随机森林,每个像素的判断是独立分开的,结构化随机森林对patch进行分类,并获得dxd维的结构化概率分布。假设对patch以一定步长进行采样,叠加预测的概率以及整张图片中每个像素的采样时间,得到两个矩阵Q和A。然后P = Q./A得到测试图片的概率图。如果需要获得二值化输出,可以取一个阈值。

问题

  1. 到底什么是 structured?
  2. patch这种trick如何用在具体的算法中?patch-wise和pixel-wise的区别,到底在哪里?
  3. 这个方法里面用到了几种计算机视觉的trick?

别急,慢慢来~

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值