VisualTrackerBenchmarkv1.0全过程配置方法,测试跟踪序列

VisualTrackerBenchmarkv1.0全过程配置⽅法,测试跟踪序列OTB50。。。Visual Tracker Benchmark v1.0全过程配置⽅法,测试跟踪序列OTB50/OTB100
前⾔:最近在实习公司做long-time tracking算法.主要⽬的是在实时的前提下,解决长时跟踪中遇到的out of view,occlusion,fast motion 等问题(⽬前这个算法应对变形能⼒较差,需要改进!).写完了算法,接下来开始测试算法性能。⽬前主流的跟踪测试集有两个:VOT和,由于VOT⼤多序列较短,⽽OTB有long-term的测试序列,故我采⽤了OTB作为测试视频集。这两个测试集的区别具体可以参考:
OTB测试集主要来源于此⽂: 。⽂中,作者把之前先进的跟踪算法都集成了起来,通过Precision plot和Success plot来直观展⽰不同trackers的效果对⽐。:
1、建⽴了50个全注释的datasets来评估算法性能。
2、集成了⼤多数公开可⽤的跟踪器,并设置了统⼀的输⼊和输出格式,以便于⼤规模性能评估。⽬前,它包括29个跟踪算法。
3、初始bounding boxs从时间和空间上进⾏采样来评估trackers的鲁棒性等性能。
闲⾔少叙,进⼊正题:
1. 下载所需代码和数据集
⾸先进⼊的主页,下载所需的代码和数据集。
这个包括已经存在的20多种跟踪算法的测试数据,还有如何测试⽤的matlab代码。⽽同样在这个⽹站还有Datasets,也要把⾥⾯的视频序列⼀⼀下载。不过⼀个个下载太⿇烦,我这⾥提供⼀个,读者可以直接在matlab环境下运⾏这段代码,就可以⾃动下载OTB100的数据集,⾮常⽅便。
在benchmark⽹站上下载完测试代码后,得到⼀个tracker_benchmark_v1.0的⽂件夹,下⾯将介绍每⼀个⽂件的功能。
2. 各⽂件功能
(1) main_running.m是⽤来在测试集上跑跟踪代码的,跑出的结果存在results⽂件夹中;
scm文件(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 包含主函数⾥⽤到的脚本的⽬录(主要就是这个⽂件夹⾥的⽂件需要改)。
3. 更改测试代码
更改主要有以下⼏个部分:
(1)util/configTrcakers.m⽂件,打开,这⾥⾯是所有跟踪算法名字的数组,会在main_running.m和p
erfPlot.m中被调⽤到。因为results⽂件夹中已经包含已有跟踪算法的测试结果,所以其实没必要再重新跑⼀遍所有算法,时间太长。故⽽直接将configTrackers.m⽂件中的所有注释掉,改成如下三⾏代码即可:(就是说让这个⽂件夹⾥只有你⾃⼰写的跟踪算法,这样⼀会执⾏main_running.m的时候,就不⽤在测试集上挨个跑已有跟踪算法了)
function trackers=configTrackers trackersNEW={struct('name','LCSVM','namePaper','LCSVM')}; trackers=trackersNEW;
(2)util/configSeqs.m⽂件,打开,这⾥⾯是所有测试集的路径及其属性。需要把⾥⾯所有测试序列的路径改成你main_runing.m函数能够读到的路径,建议⽤绝对路径,类似于(这是测试集的路径):
E:/software/matlab/bin/mywork/tracking_benchmark/Benchmark/Soccer/img/
改完之后效果⼤致如图:
(3)trackers/⽂件,打开,新建⽂件夹,命名LCSVM。打开LCSVM,将⾃⼰跟踪算法的可执⾏⽂件
<保存进来,然后再新建⼀个run_LCSVM.m⽂件,⽤来配置算法的接⼝。可以直接从其他trackers⽂件⾥⾯,把run_xx.m⽂件拷过来,因为⼤同⼩异。拷过来之后稍作修改,我把我的run_LCSVM.m展出来,读者可以观察和其他run_xx.m的区别,很好理解。
function results=run_LCSVM(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);
tic
command = ['' ' ' seq.name ' ' seq.path ' ' num2str(seq.startFrame) ' ' ...
dFrame) ' '  num2str(x) ' ' num2str(y) ' ' num2str(w) ' ' num2str(h)];
dos(command);
duration=toc;
%
results.fps=seq.len/duration;
% results.fps = dlmread([seq.name '_']);
其实就是通过dos命令将测试序列的名称、路径、起始帧等喂给你的跟踪算法,当然前提是你的跟踪算法⾥⾯⼀定要预留这些接⼝。跟踪算法⾥⾯还要将每⼀帧的跟踪结果输出到的⽂件夹⾥⾯,这样才能被上⾯的matlab代码读到来⽣成最终结果。
(4)这些都做好了,就可以进⼊main_runing.m⽂件,执⾏这段代码。执⾏过程中可能会有问题,⽐
如这段代码要注释掉(这是vlfeat⼯具集的路径,是OTB作者⽤来测试那些已有算法⽤的,我们这⾥只测试⾃⼰的跟踪算法):
另外我把这个修改成了OPE,因为我只进⾏OPE的测试,认为⾜以。当然读者可以测试TRE和SRE。(这两个是⽤来测试时空鲁棒性的)
然后就应该不⽤改了,就可以执⾏main_running.m啦就可以看到你的算法在所有测试集上⾯运⾏的效果啦到这⼀步还是令⼈激动的。另外如果读者还发现问题,欢迎交流。
4. 画出结果对⽐已有算法
main_running.m跑出的结果,会在results⾥⾯有体现:
由于我跑的是OPE,所以我的算法跑出的结果在results_OPE_CVPR13⽂件夹中,我把⾥⾯的结果全部复制,粘贴到
results_SRE_CVPR13和results_TRE_CVPR13⽂件中(因为在perfPlot.m⽂件中画图的时候⽤到了这两个⽂件)。这个时候就可以直接运⾏perfPlot.m啦,出来的图应该是只有你⾃⼰的算法的运⾏结果,也就是只有⼀条曲线。原因是:需要返回⾝来,把configTrackers.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')};
trackersNEW={struct('name','LCSVM','namePaper','LCSVM')};
% trackers=trackersNEW;
trackers = [trackersVIVID,trackers1,trackersEXE,trackersNEW];
这回再来重新运⾏perfPlot.m来看看效果就会有美图啦(暂且只附两张,相信你会⾃⼰看到很多张,到这⼀步,恭喜你)!

本文发布于:2024-09-23 18:29:24,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/382325.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:算法   跟踪   测试   结果   路径
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议