OTB 2013 使用教程

来源:互联网 发布:帝国cms 标签大全 编辑:程序博客网 时间:2024/05/16 06:27
下载完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中的一样。


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



1 0
原创粉丝点击