TLD 学习心得

TLD过程

{

初始化部分:

              {

                                               初始化数据结构(扫描窗口、随机树FERN结构);

                                               利用第一帧图像和初始BB获得各种正负样本,用这些样本训练一个

                                               分类器。

             }

重复处理帧序列部分:

                         {

                          跟踪部分:

                                     {

                                      方差约束(积分图像)->随机树约束->最近邻约束->DBB。

                                      }

                          检测部分:

                                    {

                                     金字塔LK->均值约束->模板匹配约束->TBB

                                    }

                         整合DBB和TBB得到当前BB。

                        学习部分:

                                   {

                                    利用当前帧图像和当前BB获得各种正负样本,用这些样本更新分类器,更新数据结构。

                                    }

                       }

}
View Code

初始化数据源,即是从文档中获取,还是从摄像头获取。(tldInitSource)

获取初试矩形框的大小和第一帧图像(tldInitFirstFrame)

产生不同尺度的scanning window(bb_scan)和一个有着十棵随机树的森林,每棵树对应了13对随机点比较( tldGenerateFeatures),将不同尺度的scanning window 和森林进行关联(fern(1)),即将比较点换算到具体的scanning window中去。通过将scanning window和初始矩形框进行overlap比较获得相应的正负样本集(tldGeneratePositiveData、tldGenerateNegativeData),然后用正负样本集更新Weight、nP、nN。并通过近邻分类器得到PEX、NEX。

tldProcessFrame

在LK光流跟踪时,选取了100个点进行跟踪,选取距离小于阈值而相关系数大于阈值的点(阈值时取自各自的均值),根据这些点来确定一个矩形框。

检测时,在满足方差约束的条件下,统计各个scanning window对应的Weight,保留满足大于某个阈值的window。在此基础上,再和PEX、NEX进行相似度计算,进一步筛选掉一部分window,余下来的window就是检测得到结果。显然,检测得到的window可能不止一个。然后对这些window进行聚类。

整合检测和跟踪得到的结果。根据DT、TR以及相应的约束,确定当前帧最终的BB。

在一定的学习条件下学习时(TldLearning),需要根据获得的BB生成正负样本集,更新Weight、nP、nN以及PEX、NEX等数据机构。

Weight、nP、nN是每棵树的二进制编码为下标的统计信息。

patch(scanning window)和 Weight、nP、nN是一一对应的。

原文地址:https://www.cnblogs.com/alpha19881007/p/20120807_byalpha.html