直接的方法: 
首先将代码先拷到benchmark_v1.0/tackers/这个文件夹下,你会发现里面已有好几个算法的代码文件夹了。 
这边注意了,我就是这样的,没有注意把代码拷贝进去之后要自己写一个调用函数,benchmark在运行的时候调用我们的算法的函数,就是每个tracker文件夹当中的run_trackers名字,这个一定要有,格式也很简单,参照其他的算法应该很容易就能写出来了。

第二步是:到benchmark_v1.0/util/configTrackers.m这个函数中,在trackers1这个结构体中添加上你的代码的名字,比如:struct(‘name’,’KCF’,’namePaper’,’KCF’),…。

第三步是:运行main_running.m函数。

这个过程当中你可能会遇到一些问题:第一个会是路径的问题,这个需要你更改的路径有configTrackers.m和configSeqs.m里面的路径,对应修改就可以了。还有一点就是在修改configTrackers.m的时候,你可能添加一个自己的tracker到已知的结构体当中会遇到运行main_running函数时出现错误,这个时候尝试单独把自己的tracker作为一个结构体,把其他的算法都注释掉,只剩下自己的tracker然后试试,因为这个时候其他的tracker结果都已经保存下来了,只需要自己的tracker的结果出来就好了。

比较笨的方法就是:当我需要验证自己的结果的时候,我只需要将自己算法的结果保存成作者放在results文件夹中的mat数据的样子。

下面具体讲讲:

打开文件夹会发现很多子文件夹和四个主要的函数;依次是drawResultBB.m, genPerfMat.m , main_running.m 和perfPlot.m 函数。

对于mainrunning函数是主函数,这个函数的作用是能够将视频分割成20段,以验证TRE。同时,能够对第一帧的ground_truth进行一定的变换(一共12种),从而验证SRE。最后可以在这个里面将自己的代码加进去,从而能够按照特定的形式保存好tracking的results,简而言之就是能够实现所有的效果。

而想画各种tracker算法在图像上的效果(bounding boxes),可以调用drawResultBB.m函数,就可以实现:drawing bounding boxes (BBs) of different trackers on each frame   
如果想画各种精度曲线的话,就可以调用perfPlot函数,这个函数调用genPerMat函数得到需要的精度数据以及错误率(DP,OP),然后放到perfMat\overall\文件中,画出来的图保存在figs\overall\文件夹下。
同时作者画出了29个tracker方法中10个方法的结果,采用的是rankNum=10这个参数来设置的,从中选取前10个结果最好的。rankingtype采用的是AUC的方法。
另外需要注意的参数是evalTypeSet = {'OPE'};%{'SRE', 'TRE', 'OPE'};
还是和drawResultBB一样,genPerfMat在生成数据的时候访问的是results/文件夹,所以我们需要将结果保存成标准的格式并且放到对应的文件夹中。

然后讲各个文件夹的作用:anno文件夹放的是51个测试视频的ground_truth。figs用来存放上面说的drawResultBB.m画出来的图片。initOmit是每一个视频不能够用来初始化的帧,这些帧一般都是target比较模糊。perfMat用来存放genPerMat的结果。results存放的是作者已经跑好的不同数据集上不同算法的结果。rstEval存放的是一些评价函数。tmp存放临时变量,trackers存放这个各种tracking算法的源码或者exe文件。util中的函数最有用,也是最可能需要修改的。比如configSeqs.m和configTrackers.m函数。

对于util文件夹我们需要衡量那些个数据集就去函数configSeqs中取修改参数,如果要比较那些算法就去config

 
04-14 10:01