tracker_benchmark_v1.0的配置
不使用tracker_benchmark_v1.0工具自己保存OTB数据集格式结果参考:OTB数据集和VOT数据集融合跟踪算法接口示例_博博有个大大大的Dream-CSDN博客_otb数据集
目录
至此,所有步骤全部配置完,配置的好的版本百度云下载地址如下 :
一、代码及依赖库下载
1、下载Object Tracking Benchmark工具:tracker_benchmark_v1.0.zip
2、下载OTB100数据集:
建议使用百度云下载: 目标跟踪数据集OTB、VOT下载_博博有个大大大的Dream-CSDN博客_otb50数据集
注:tracker_benchmark_v1.0初始用的是虽然是OTB50的数据集,但是程序中拓展了一些OTB100的图像序列,所以,我们下载数据集时,应该用OTB100的数据集,否则会有一些图像序列无法找到。
3、下载vlfeat工具包
下载地址:VLFeat - Home
二、运行测试代码
4、打开main_running.m,更改vlfeat工具包所在路径,将20行改为 evalType='OPE'; %'OPE','SRE','TRE'(我们只测试OPE)
4、打开util目录下的configSeqs.m,更改读取图像序列路径(数据集下载地址:目标跟踪数据集OTB、VOT下载_博博有个大大大的Dream-CSDN博客_otb50数据集)
数据集所在路径可以通过“Ctrl+F”选择替换,但是更深一层路径img\需要一个一个地添加,工作量大。提供百度云下载地址,直接使用即可:链接:https://pan.baidu.com/s/1ZFW1fffaDcUq9lkhfyk8Lw 提取码:kb72
5、打开util目录下的configTrackers.m,更改测试目标跟踪算法(此处用ICCV2017跟踪算法BACF为例)
6、在trackers路径下新建BACF文件夹,并且将算法代码放入文件夹中(BACF代码下载和配置地址:ICCV2017跟踪算法BACF的配置(Learning Background-Aware Correlation Filters for Visual Tracking)_博博有个大大大的Dream-CSDN博客)
7、打开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;
8、简单说明
(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
12、运行perfPlot.m,得到12张Precision和12张Success图,结果保存在tracker_benchmark_v1.0\figs\overall目录中
注:如果更新算法得到新的跟踪结果mat文件,在plot之前,请务必先删除 tracker_benchmark_v1.0\perfMat\overall目录下的所有.mat文件,否则数据将不会更新。
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可以控制需要画图的图像序列
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及所有对比算法的结果)