OTB配置详解

一、代码及依赖库下载

1、下载Object Tracking Benchmark工具:tracker_benchmark_v1.0.zip

下载地址:http://cvlab.hanyang.ac.kr/tracker_benchmark/index.html

2、下载OTB100数据集:

建议使用百度云下载: https://blog.csdn.net/qq_17783559/article/details/82079220

注:tracker_benchmark_v1.0初始用的是虽然是OTB50的数据集,但是程序中拓展了一些OTB100的图像序列,所以,我们下载数据集时,应该用OTB100的数据集,否则会有一些图像序列无法找到。

3、下载vlfeat工具包

下载地址:http://www.vlfeat.org/index.html

二、运行测试代码

4、打开main_running.m,更改vlfeat工具包所在路径,将20行改为 evalType=‘OPE’; %‘OPE’,‘SRE’,‘TRE’(我们只测试OPE)

5、打开util目录下的configSeqs.m,更改读取图像序列路径(数据集下载地址:https://blog.csdn.net/qq_17783559/article/details/82079220)

数据集所在路径可以通过“Ctrl+F”选择替换,但是更深一层路径img\需要一个一个地添加,工作量大。提供百度云下载地址,直接使用即可:链接:https://pan.baidu.com/s/1ZFW1fffaDcUq9lkhfyk8Lw 提取码:kb72

6、打开util目录下的configTrackers.m,更改测试目标跟踪算法(此处用ICCV2017跟踪算法BACF为例)

7、在trackers路径下新建BACF文件夹,并且将算法代码放入文件夹中(BACF代码下载和配置地址:https://blog.csdn.net/qq_17783559/article/details/82081255)

8、打开run_BACF.m

(1)更改31行为:

params.learning_rate = 0.013; % learning rate

(2)更改46-48行为:

params.no_fram = numel(params.s_frames);
%params.seq_st_frame = seq.st_frame;
%params.seq_en_frame = seq.en_frame;

三、测试说明

(1) 当我们在configTrackers.m中配置算法名称为BACF时,主程序会跳转到trackers\BACF\run_BACF.m来执行我们的跟踪代码。举一反三,如果我们的算法名称为XXX,主程序则会跳转到trackers\XXX\run_XXX.m来执行我们的跟踪代码。

(2)跟踪代码run_XXX.m参考以下格式:

function results=run_XXX(seq, video_path, bSaveImage)
 
%获取图像序列
s_frames = seq.s_frames;
 
%存放每一帧目标框的位置
rect_position = zeros(numel(s_frames), 4);
 
%循环处理每一帧图像
for frame = 1:numel(s_frames),
	%load image
	im = imread(s_frames{frame});
	if size(im,3) > 1,
		im = rgb2gray(im);
	end
    %你的跟踪代码
 
end
 
%返回的跟踪结果
results.type = 'rect';
results.res = rect_position;%each row is a rectangle
results.fps = fps;

9、运行main_running.m,最终结果保存在results\results_OPE_CVPR13目录下

注: 如果不想显示实时跟踪效果,加快运算速度,可以更改run_BACF.m的56行为params.visualization = 0;

四、画Precision和Success曲线

10、将results\results_OPE_CVPR13中生成跟踪结果mat文件拷贝到results\results_SRE_CVPR13和results\results_TRE_CVPR13文件夹中

11、打开perfPlot.m

(1)更改103行为:

evalTypeSet = ‘OPE’;

注:不要加中括号写成evalTypeSet = {‘OPE’},否则会报错。

(2)更改105行为:

rankingType = ‘threshold’;%AUC, threshod

注:不要直接复制105行后面的threshod,因为作者粗心写错了,中间少了一个“l”。

(3)更改140行为:

for j=1:1

(4)更改142行为:

evalType = evalTypeSet;%SRE, TRE, OPE

(5)CarDark XXX 未定义与 ‘double’ 类型的输入参数相对应的函数 'calcRectInt:

perfPlot程序前面添加:addpath(’./rstEval’);

12、运行perfPlot.m,得到12张Precision和12张Success图,结果保存在tracker_benchmark_v1.0\figs\overall目录中

注:如果更新算法得到新的跟踪结果mat文件,在plot之前,请务必先删除 tracker_benchmark_v1.0\perfMat\overall目录下的所有.mat文件,否则数据将不会更新。

每次运行前先删除上次perfMat/overall中的文件。

13、多个算法对比

更改util\configTrackers.m为:

function trackers=configTrackers
trackersNew={
    struct('name','SMS','namePaper','SMS'),...
    struct('name','CT','namePaper','CT'),...
    struct('name','TLD','namePaper','TLD'),...
    struct('name','CSK','namePaper','CSK'),...
    struct('name','BACF','namePaper','BACF')};
trackers = trackersNew;

运行perfPlot.m

五、画跟踪效果图

14、运行drawResultBB.m,跟踪结果保存在tracker_benchmark_v1.0\tmp\imgs目录中

15、更改 util\configTrackers.m可以添加对比算法,更改util\configSeqs.m可以控制需要画图的图像序列。

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

16、去除保存边框

原始代码保存的图像如下,存在厚厚的边框,不助于论文排版

更改drawResultBB.m的116行为:

q=get(gca,'position');
q(1)=0;%设置左边距离值为零
q(2)=0;%设置右边距离值为零
set(gca,'position',q);
[m,n,flag]=size(img);
imwrite(frame2im(getframe(gcf,[0,0,n,m])), [pathSave  num2str(i) '.png']);
%imwrite(frame2im(getframe(gcf)), [pathSave  num2str(i) '.png']);

再次运行drawResultBB.m,得到保存图像

六、福利环节

至此,所有步骤全部配置完,配置的好的版本百度云下载地址如下 :

链接:https://pan.baidu.com/s/1eCFfoUtlSGM98YJlwpFT3w
提取码:xexv(注:为了减小文件大小,里面不包含BACF及所有对比算法的结果)

  • 6
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值