STRCF算法跑OTB调试全过程

求助CSDN

小白第一步,当然时百度了。很庆幸,一下子就百度到了万能的CSDN爸爸,然后找到了这篇博客:【OTB使用介绍一】tracker_benchmark_v1.0小白使用配置OTB100。博主这篇文章由三个章节加一个补充章节,小白绝对能看懂。简单介绍下,几篇文章的内容依次如下:

  • tracker_benchmark_v1.0小白使用配置OTB100
  • 对Visual Tracker Benchmark v1.0源码进行介绍
  • 如何将自己的算法加入到Visual Tracker Benchmark v1.0中,以KCF为例
  • 如何将自己的算法加入到Visual Tracker Benchmark v1.0中,以ECO为例

感谢这位博主大大了,真的很受用了。

配置OTB环境

按照上面提到的教程配置好环境,主要是vlfeat的配置,这个电脑上之前已经配置过了,所以只需要改一下程序里的路径就好了。如果有小白不知道怎么配置的,可以再自行百度。

首先不是跑自己的跟踪算法,而是需要去跑通Visual Tracker Benchmark v1.0自带的算法,这里就简单说一下我在基本调试过程中遇到的几个典型问题吧

  • 报错1:某个数据集里的图片找不到
    分析:应该是那个数据集找不到(确实程序里列举的视频51个跟下载的OTB50视频49个是稍微不一致的),或者路径有问题。
    查看,确实有的视频没有,但是也有的视频路径没有img\,所以修改main_running.m中的s.s_frames{i} = strcat(s.path,‘img’,id,’.’,s.ext);。
    解决办法:删configSeqs.m代码中多余的视频结构体,修改上面那行代码。
    代码里有几个视频路径名多了_c,修改一下,改了的有:car_c,coke_c,tiger_c
    同时OTB100里如果能找到的视频,那就添加到otb50.添加了的视频有car4,fish,mhyang,singer1,coke,
  • 报错2:configSeqs.m中某一个结构体报错Dimensions of matrices being concatenated are not consistent.
    分析:结构体里维度不一致,就很奇怪,莫名其妙,结构体怎么会出现维度不一致的情况呢。
    看了下,是因为自己在结构体里换行…里注释某一行,然后元胞里出现%了就很奇怪,所以报错。
    解决办法:把想注释的结构体行都删掉ok。

然后基本没问题,调试成功!

融合STRCF算法

首先下载STRCF代码

从仓库down下来以后,仔细看,很惊喜,会发现里面有一个run_STRCF.m,正是符合算法融合的接口函数名称。所以去研究了下,首先我在跑断点跑Visual Tracker Benchmark v1.0代码时,看了下接口函数输入seq结构体里面有哪些元素。然后又断点跑了STRCF源码,看run_STRCF.m的输入seq有哪些元素。然后就发现run_STRCF.m里面seq缺少一个otb元素。所以只需要在开头加上一行
seq.format = ‘otb’;
即可。

最后一步,在config_trackers.m里面加上STRCF算法结构体就可以跑通了。

对比KCF/LCT/C-COT等主流算法结果

这里我去csdn下了一个这些算法的结果压缩包,就不用自己跑了,但是里面只有SRE结果和TRE结果,没有OPE结果。虽说OPE的结果只是TRE跑一遍得到的,但是也需要我提取出来才行呀。
所以我就写了一个提取函数。大概是下面这样的:

TREpath = [pwd '\results_TRE\'];%TRE结果路径
OPEpath = [pwd '\results_OPE\'];%用于存储OPE结果的路径
fileStruct = dir([TREpath '*.mat']);
for i = 1:length(fileStruct)
    name = fileStruct(i).name;
    load([TREpath name]);
    results = results(1);
    save([OPEpath name],'results');%保存OPE结果到OPE结果路径
end

然后我也把这些结果上传到了CSDN,包括BACF DSST ECO-HC KCF LCT LMCF SAMF SRDCF SRDCFdecon Staple 几个主流算法结果。
下载地址在这里:OTB数据集结果

暂时就写到这里了,之后有新内容再更新。

你可能感兴趣的:(调试过程)