目标跟踪测试工具OTB新手入门使用教程

OTB是什么
首先,OTB(Object Tracking Benchmark)是吴毅大神提出来的测试目标跟踪算法优劣的评价指标,OTB有两个版本,第一个是吴毅在2013年发表在CVPR上的OTB2013(Wu, Yi, Jongwoo Lim, and Minghsuan Yang. “Online Object Tracking: A Benchmark.” CVPR (2013). ),这其中包含了五十个视频序列,所以也有人把他称为OTB50,;另一个是吴毅在2015年发表在TPAMI15上的OTB2015(Wu, Yi, Jongwoo Lim, and Minghsuan Yang. “Object Tracking Benchmark.” TPAMI (2015). ),这里面有一百个视频序列,所以也叫OTB100。简单来说,你自己写了一个跟踪算法,想要测试这个跟踪算法的好坏,最简单的评价指标是你要得到你算法的跟踪精度和跟踪成功率,你自己写一个算法来评价精度和成功率显然不能说服大家,所以,我们需要找到一个公开的评价标准来评判,这时,你就可以选择把你的算法放在OTB工具上进行测试,然后得出一系列的数据,你用这个数据去证明你算法的可行性就具有说服力了。
当然,用于公开测试的标准显然不止OTB一种,另一种比较常见的就是VOT数据库,VOT每年都会有一定的更新和完善,所以VOT就有了VOT13、VOT14、VOT15、VOT16、VOT17、VOT18等等版本了,具体的可以在VOT的官网上去了解。

OTB下载
OTB提供了一个完善的跟踪测试工具,工具中包含了部分作者已经测试过的算法结果,标注好的(即ground-truth.txt )的数据集,以及一个用来测试你的算法的代码库。工具的下载可以在OTB工具下载链接里进行下载。步骤如下:

OTB文件详解
OTB主页如图,OTB工具的下载点击图中所示的超链接即可。

2. 下载下来是一个压缩包,解压到自己的路径就好了。
3. 解压后,可以看到OTB工具里含有如图的几个子文件夹。

这里解释一下几个在使用中可能需要进行更改的文件夹。
第一个anno文件夹,就是标注好的视频序列的位置数据,默认下载下来的只有OTB2013中视频序列的标注数据,要想测试OTB2015就需要找到OTB2015的标注数据将anno文件夹进行替换。很显然,没有标注好的数据就不能测试得到算法的跟踪精度及成功率。
第二个figs文件夹,你将自己算法在数据库上跑完之后,运行了perfPlot.m文件画完图之后,生成的图片就会存在这个文件夹里。
第三个results文件夹,保存的是你算法测试的结果文件,文件命名为“视频序列名_算法名.mat”,当你算法在数据库里跑完后这个文件夹里会找到对应的文件,有一点值得注意的是,当你之后运行perfPlot.m文件画图报错时,很有可能是你的算法有瑕疵,导致一些测试结果文件是空文件,所以你要注意results里对应算法结果文件中大小为1kb的文件,也许就是空文件。
第四个perfmat文件夹,是你运行了perfPlot.m画图文件之后生成的记录文件,所以当你新增或者更改了需要画图的算法时,最好把这个文件夹里overall里的所有文件删除,否则可能会画出之前保存的图片而不进行新图的绘制。
main_running.mat文件就是主程序,设置完成需要测试的算法,在哪些视频序列上进行测试后,运行这个文件,等他跑完就可以在results文件夹里看到跟踪结果文件了。
utility文件夹,里面包含了程序需要调用的函数,其中需要我们更改的函数有两个,configSeqs.m文件,这个文件是设置你需要在哪些视频序列上进行测试。configTrackers.m文件,这个文件是设置你需要测试哪些跟踪算法。
drawResultBB.m文件是将你选择的所有算法的跟踪结果框(bounding_box)显示在同一张图片上的文件,运行这个文件首先需要把自己的算法在数据库上跑一遍,也就是要有results文件夹里要有算法跟踪结果文件。
perfPlot.m文件是将跟踪结果绘制成精度图或者成功率图的文件,这个的前提也是你要把算法在数据库里跑一遍,results文件夹里要有对应的跟踪结果文件。
trackers文件夹,你必须把你需要测试的算法的代码放在这个文件夹里,并写好接口文件(run_算法名.m)。

OTB使用步骤
首先设置你要测试的算法
选择要在哪些视频序列上进行测试
运行测试文件
运行画结果图文件
运行绘制算法结果对比图文件

完毕

补充下:

下载完benchmark后会看到在文件中包含4个.m文件,main_running.m、perfPlot.m、genPerfMat.m、drawResultBB.m
第一种:

1 把自己的算法放到benchmark的文件夹trackers中。

2 打开main_running.m文件,在14和16行 分别打开configSeqs.m文件和configTrackers.m文件。configSeqs.m写的是放图片集的名称和位置,需要根据自己图片序列集存放的位置进行修改,名称也需要注意一下,例如:原名称是david_c,
可是我的数据集的名称是david,我的路径是D:\data_seq\David\img\,多了一个img,因为img中放的是图片。

configTrackers.m文件中放的是所有的算法,在trackers1这个结构体中添加上你的代码的名字,比如:struct(‘name’,’KCFDP’,’namePaper’,’KCFDP’),…。

3 最重要的一步就是需要写一个将自己算法的输入输出对接到benchmark中的脚本run_tracker.m文件,打开其他算法时会发现每个算法中都会有run_tracker.m文件,例如run_CT.m  run_CSK.m
这步很简单,参照其它算法 例如:run_CT.m对比CT.m文件 看到第一行的输入和最后一行的输出进行了统一,
function results=run_CT(seq, res_path, bSaveImage)
(中间部分是您的tracker的主程序,也就是说将您的主程序写成一个function,并且在程序最后设定了一下跟踪位置type类型。这中间如果有bug,您可以断点运行一下,看看错误在哪里,一般来说只要将参数名称改成相应的即可。)
results.res=res;
results.type=’rect’;%保存左上角坐标
results.fps=(seq.len-1)/duration;
disp([‘fps: ‘ num2str(results.fps)])

输入:Seq代表着输入的图片,要将算法中输入的图片用Seq来代替
输出:rect代表跟踪位置type 类型

做完上述三步后,运行main_running.m函数。对于mainrunning函数是主函数,这个函数的作用是(1)能够将视频分割成20段,以验证TRE。(2)若是SRE,则可以在空间改变初始位置,一共12组
运行完main_running.m函数,得到的结果是在文件夹results中的results_SRE_CVPR13和results_TRE_CVPR13。
如果想画各种精度曲线的话,就可以运行perfPlot.m文件,这个函数调用genPerMat函数得到需要的精度数据以及错误率(DP,OP),然后放到perfMat\overall\文件中,画出来的图保存在figs\overall\文件夹下。运行perfPlot.m会调用生成的结果results_SRE_CVPR13和results_TRE_CVPR13,以此画出结果
画各种tracker算法在图像上的效果(bounding boxes),可以调用drawResultBB.m函数,就可以实现。
问题  1
1  在调用main.m跑TRE和SRE时,因为会生成相应的.mat数据文件,如果跑完以后发现自己算法生成的.mat文件有问题,那么要把该文件删除,待找到错误原因后,重新生成相应的.mat文件。因为程序中写的是如果已经存在了.mat文件,例如已经存在car4_STC.mat文件,即使该文件中的数据有错误,但是重新跑时会默认该文件中的数据写完,不会重新写入数据
问题  2
benchmark中 一共有三个指标 OPE、TRE和SRE,当前论文中需要列放的只是OPE结果图,所以在画曲线图时只需要跑OPE即可,步骤:
(1)程序中的代码表示在:main_running.m中的20行
evalType=’OPE’;
(2)然后调用perfPlot.m画精度曲线图,因为只需要得到OPE结果图,所以在perfPlot.m的103行修改为
evalTypeSet = ‘OPE’;

140行:
for j=1:length(evalTypeSet)
end
需要注释掉;因为只跑OPE所以不用循环了
142行修改为:
evalType = evalTypeSet;%SRE, TRE, OPE

(3)做完上述(1)(2)后 调用perfPlot.m画出来的曲线图只有成功率图,而并没有精确度图
这时需要做的是:
将105行修改为:
rankingType = ‘threshold’;(如果参数是源程序中的‘AUC’的话  跑出来的图是只有成功率图(success)而没有精度图(precision))注意程序中threshold单词写错
修改完后 再跑一遍perfPlot.m,此时得到的图像既有success又有precision
问题 3
在跑完perfplot.m后,如果生成的曲线图不正确或者不理想,想要重新画曲线图,此时需要把文件夹../perfMat/overall下的所有.mat文件删除,原因和问题1中的一样。

问题4(新增)

关于drawResultBB.m中tracker对应颜色的问题

可以断点运行观看,我整理了前十个tracker lable

其中tracker排序是你在configTrackers.m文件中的tracker排序,对应的红色是第一个tracker,绿色是第二个tracker,一次类推。

第二种:第二种方法是将你的程序结果.mat文件保存到results/results_TRE2013中。然后再修改configSeqs.m文件和configTrackers.m文件中的sequence和tracker名字,再运行perfPlot即可。

 

相关推荐

在这里插入图片描述

ENVI入门系列教程—3. 基于自带定位信息的几何校正

在这里插入图片描述

小白都能看得懂的教程 一本教你如何在前端实现富文本编辑器

html符号转实体算法挑战

html符号转实体算法挑战

【matplotlib教程】图像处理

【matplotlib教程】图像处理