目标跟踪环境配置(四):OTB配置安装 (从下载到绘图)

目标跟踪基础与智能前沿

点击上方链接,微信关注回复下方安装包对应的关键词,获得对应的百度云下载链接

论文原文

1) Online Object Tracking: A Benchmark

1、下载OTB数据集

1)官网下载地址(国内网速原因很慢):
2)百度云下载地址: 自动回复关键词“OTB”

2、预先安装好matlab : matlab安装

3、下载OTB测试工具

1)下载地址:Visual Tracker Benchmark

tracker_benchmark_v1.0.zip (229MB).

4、安装OTB,下载上述安装包之后解压缩

5、使用OTB

1) 各个文件的功能

(1) main_running.m 是用来在测试集上跑跟踪代码的,跑出的结果存在results文件夹中;

(2) perfPlot.m 用来把测试结果画出图来,就是benchmark网上的图的效果。

如果你第一次下载tracker_benchmark_v1.0的测试代码,可以先运行perfPlot.m就可以直接画出漂亮的图。只不过这些图是已有的跟踪算法和测试结果,作者都保存在results文件夹里面了;

(3) drawResultBB.m 用于画每个帧上不同跟踪器的边界框的主函数

(4) anno 注释文件(边界框和属性)的目录;

(5) initOmit 包含由于遮挡或目标超出视野而被省略的用于跟踪初始化的帧的注释 的目录;

(6) rstEval 包含了很多用于计算跟踪性能或者画出结果的脚本的目录;

(7) trackers 包含了很多跟踪器代码的目录,里面有20多个跟踪代码,有matlab版,也有c++版;

(8) tmp 用来存放临时结果或者日志文件的目录;

(9) results包含了所有已有跟踪算法测试结果;

(10) util 包含主函数里用到的脚本的目录***(主要就是这个文件夹里的文件需要改***)。

————————————————

2) 首次安装,测试 perfPlot.m

(1)打开matlab

cd /usr/local/MATLAB/R2017b/bin
matlab

(2) 在matlab 里打开 上述解压后的文件夹 :tracker_benchmark_v1.0

(3) 找到perfPlot.m ,运行会报错 , 试试修改代码

3)更改测试代码

在这里插入图片描述
(1)util/configTrcakers.m文件,打开,这里面是所有跟踪算法名字的数组,会在main_running.m和perfPlot.m中被调用到。因为results文件夹中已经包含已有跟踪算法的测试结果,所以其实没必要再重新跑一遍所有算法,时间太长。故而直接将configTrackers.m文件中的所有注释掉,改成如下三行代码即可:(就是说让这个文件夹里只有你自己写的跟踪算法,这样一会执行main_running.m的时候,就不用在测试集上挨个跑已有跟踪算法了)
修改前:

function trackers=configTrackers

trackersVIVID={struct('name','VR','namePaper','VR-V'),...%gray-25%
    struct('name','TM','namePaper','TM-V'),...%dark red
    struct('name','RS','namePaper','RS-V'),...%orange
    struct('name','PD','namePaper','PD-V'),...%Turquoise
    struct('name','MS','namePaper','MS-V')%purple
};

trackers1={   struct('name','CT','namePaper','CT'),...
    struct('name','TLD','namePaper','TLD'),...    
    struct('name','IVT','namePaper','IVT'),...
    struct('name','DFT','namePaper','DFT'),...%yellow
    struct('name','ASLA','namePaper','ASLA'),...
    struct('name','L1APG','namePaper','L1APG'),...    
    struct('name','ORIA','namePaper','ORIA'),...
    struct('name','MTT','namePaper','MTT'),...
    struct('name','CSK','namePaper','CSK'),...
    struct('name','SCM','namePaper','SCM'),...
    struct('name','LOT','namePaper','LOT')};

trackersEXE={ struct('name','CPF','namePaper','CPF'),...
    struct('name','Struck','namePaper','Struck'),...
    struct('name','MIL','namePaper','MIL'),...
    struct('name','OAB','namePaper','OAB'),...
    struct('name','SBT','namePaper','SemiT'),...
    struct('name','BSBT','namePaper','BSBT'),...
    struct('name','Frag','namePaper','Frag'),...
    struct('name','KMS','namePaper','KMS'),...
    struct('name','SMS','namePaper','SMS'),...
    struct('name','LSK','namePaper','LSK'),...
    struct('name','VTS','namePaper','VTS'),...
    struct('name','VTD','namePaper','VTD'),...
    struct('name','CXT','namePaper','CXT')};

trackers = [trackersVIVID,trackers1,trackersEXE];

修改后: 这样一会执行main_running.m的时候,就不用在测试集上挨个跑已有跟踪算法了)

function trackers=configTrackers
trackersNEW={struct('name','LCSVM','namePaper','LCSVM')};
trackers=trackersNEW;

? 自己的方法模型放在哪里?或者想要对比的模型代码放在哪里?

(2)util/configSeqs.m文件,打开,这里面是所有测试集的路径及其属性。需要把里面所有测试序列的路径改成你main_runing.m函数能够读到的路径,建议用绝对路径,类似于(这是测试集的路径):
'/media/yuuzh/dataDisk2T/Dataset/OTB/OTB100/Soccer/img

??原来的路径类似于\\ soccer
在这里插入图片描述

? [seqIVT,seqVTD,seqOther], 这几个序列的差别是?

上述修改后运行时出现问题,path之后的字段直接应该是路径+ img后加 / ,读取到的图像会继续读入 ,需要重新修改后路径如下:
在这里插入图片描述

(3)trackers/文件,打开,新建文件夹,命名LCSVM(你自己的方法)。打开LCSVM,将自己跟踪算法的可执行文件LCSVM.exe保存进来,然后再新建一个run_LCSVM.m文件,用来配置算法的接口。可以直接从其他trackers文件里面,把run_xx.m文件拷过来,因为大同小异。拷过来之后稍作修改,我把我的run_LCSVM.m展出来,读者可以观察和其他run_xx.m的区别,很好理解。
————————————————
下面是tracker 下的各个跟踪器。
Tracker 文件夹

? 自己的算法如何生成可执行文件exe

其实就是通过dos命令将测试序列的名称、路径、起始帧等喂给你的跟踪算法,当然前提是你的跟踪算法里面一定要预留这些接口。跟踪算法里面还要将每一帧的跟踪结果输出到LCSVM_ST.txt的文件夹里面,这样才能被上面的matlab代码读到来生成最终结果。

run_stuck.m

function results=run_Struck(seq, res_path, bSaveImage)% 

close all;

x=seq.init_rect(1)-1;%matlab to c
y=seq.init_rect(2)-1;
w=seq.init_rect(3);
h=seq.init_rect(4);

%featureName kernelName param svmC svmBudgetSize searchRadius seed
%featureName: raw haar histogram
%kernelName: linear gaussian intersection chi2
%seed: default - 0
tic
command = ['struck.exe haar gaussian 0.2 100 100 30 10 ' num2str(bSaveImage) ' ' num2str(bSaveImage) ' ' seq.name ' ' seq.path ' ' num2str(seq.startFrame) ' ' num2str(seq.endFrame) ' '  num2str(seq.nz) ' ' seq.ext ' ' num2str(x) ' ' num2str(y) ' ' num2str(w) ' ' num2str(h)];
dos(command);
duration=toc;

results.res = dlmread([seq.name '_ST.txt']);
results.res(:,1:2) =results.res(:,1:2) + 1;%c to matlab

results.type='rect';
results.fps=seq.len/duration;

results.fps = dlmread([seq.name '_ST_FPS.txt']);

(4)这些都做好了,就可以进入main_runing.m文件,执行这段代码。执行过程中可能会有问题,比如这段代码要注释掉(这是vlfeat工具集的路径,是OTB作者用来测试那些已有算法用的,我们这里只测试自己的跟踪算法):

在这里插入图片描述

· vlfeat 的安装

另外我把这个修改成了OPE,因为我只进行OPE的测试,认为足以。当然读者可以测试TRE和SRE。(这两个是用来测试时空鲁棒性的)

在这里插入图片描述
然后就应该不用改了,就可以执行main_running.m啦!!!就可以看到你的算法在所有测试集上面运行的效果啦!!!到这一步还是令人激动的。
————————————————

如果出现 某目录不存在的情况,请检查目录是否少了/, 和自己的文件夹目录核查一下
在这里插入图片描述
修改为OPE ,发现出现的错误:

目录配置正确之后运行结果:
在这里插入图片描述
当出现以下错误 : 未找到命令, 应该是各个跟踪器对应的.exe 没有载入
在这里插入图片描述

这里我们先忽略,不运行这些跟踪器(没有exe ,或许是文件位置的原因,但不影响其他跟踪器的运行。

4) 画出结果对比已有算法

main_running.m跑出的结果,会在results里面有体现:

由于我跑的是OPE,所以我的算法跑出的结果在results_OPE_CVPR13文件夹中,我把里面的结果全部复制,粘贴到results_SRE_CVPR13和results_TRE_CVPR13文件中(因为在perfPlot.m文件中画图的时候用到了这两个文件)。这个时候就可以直接运行perfPlot.m啦,出来的图应该是只有你自己的算法的运行结果,也就是只有一条曲线。原因是:需要返回身来,把configTrackers.m文件修改一下,要把所有的跟踪算法重新包含进来,当然还要加入自己的跟踪算法。
————————————————
在这里插入图片描述
运行时报错:
在这里插入图片描述
这是因为, 文件名后缀是 小写, matlab里面读取使用的都是大写。

统一修改文件名的后缀为大写就好

bsbt ivt ,替换成 大写的就好了

rename -v 's/_bsbt/_BSBT/' *.mat
rename -v 's/_ivt/_IVT/' *.mat

在这里插入图片描述

所有的该修改的修改之后,总结以下运行的顺序

1、util/configTrcakers.m 注释掉已经跑出结果的跟踪器,保留自己需要测试的跟踪器

在这里插入图片描述

2、util/configSeqs.m 修改测试集在本机上的目录

注意path中文件的大小写和目录下的大小写匹配,img后面 有‘/’

3、 trackers 目录下,模仿其他跟踪器,放入自己的跟踪器模型和可执行文件
4、 startup.m 启动 vl_feat库

初始启动vl_feat库, 因为main_runing.m中用到了

5、main_runing.m, 修改输出的结果类型

该文件用到了多处路径,注意源代码中的转移字符 \ 应该修改成路径字符/ ,运行跟踪器调用测试集,输出results

6、检查result文件夹,运行perfPlot.m, (对比configTrackers.m 加入所有跟踪器,最后的图曲线才全)
  • 2
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值