本文会介绍tld中随机森林的创建方法及随机森林的一些基本概念。
首先需要知道的是在tld中的随机森林是用于目标检测分类器,它能够在线更新和预测,撇开它的p-n学习的外套,我们来看它的本质,他就是一个改进的adaboost。
看一下随机森林的概念,随机森林包含很多决策树,每个决策树用特征中的某一组特征建立,这组特征的每个特征代表了决策树某一水平的量度。所以随机森林分类的过程就是对于每个随机产生的决策树分类器,输入特征向量,森林中每棵树对样本进行分类,根据每个树的权重得到最后的分类结果。所有的树训练都是使用同样的参数,但是训练集是不同的,分类器的错误估计采用的是oob(out of bag)的办法 。至于决策树我们都很清楚。那么为什么要用很多决策树来创建随机森林哪?一个很浅显的道理--团结就是力量,评价一个人是好人还是坏人,你多采访一些人总比一个人的独断要客观准确点吧。专业一点说,rf比decision tree在保持了高效性的同时,不会有dt的过拟合问题,相比svm来说识别率要高,特别是多目标识别的场合。
下面这个图就是rf在目标检测方面的示意图:
可以这样需要通过训练建立判别模型,就要有训练数据,要明确标记好这些数据那些是目标的那些是背景的。训练数据的获得是这样的
首先利用有放回的抽样从原始训练样本集中抽取 k 个样本集,且每个样本的样本容量都与原始训练集一样;其次对抽样的 k 个样本集分别建立其对应的决策树模型,得到 k 种分类;利用者k个样本训练k颗决策树,根据这k 种分类对每个测试样本进行投票表决决定其最终分类。这只是一个大概,你要选择什么特征,什么样的目标元素积极决策树的分裂方法就靠你自己了。
具体到tld的rf,我门来看一下:在第一帧的时候,你用鼠标选定目标,正样本来自于跟踪框内的patch,负样本从框外选,当然,正样本可以warp一下,这个warp就是几何变换,I'=A*I*θ(公式不好打);经过训练后找到每棵树相应的节点函数和阈值,这个节点函数和阈值就是我们所谓的判别参数,是处理未知样本的依据。如果你选取的决策属性是最大信息增益,那么训练得到的判别参数在对测试样本分类后,就能保证信息增益最大化,这样你获得的样本的确定性就很大。这是目标选取的过程,先写这么多吧。如果你单纯的使用rf对目标某一类别进行分割就更简单了,上面的表述就可以说明,只不过训练样本方面,某一类别的分割样本更广阔一些。
今天就写到这,最后分享给大家一个xue编程的网站,斯坦福大学的课程,还不错:http://v.163.com/movie/2008/7/B/O/M6SIM7VT5_M6SIR3IBO.html