不需配置OTB_benchmark,也能得到你想要的结果

第一步:将跟踪结果保存为OTB_benchmark所要求的格式,即.mat格式:

本文以2015_CVPR_DAT_USABLE算法为例,在使用其他算法时,在相应处做修改即可。

clear;clc;
close all;
%将2015_CVPR_DAT_USABLE算法使用的文件添加进来
addpath('.\src');
%数据集路径路径
base_path  = 'F:\my_second_paper_result\files_used_for_my_second\OTB100';
% 视频序列
videos = {'Biker',  'Bird1','Bird2','BlurBody', 'BlurCar2','BlurFace','BlurOwl','Board','Box',...    'Boy','Car1','Car2','Car4','Car24','CarScale','ClifBar','Coke','Coupon','Crowds','Dancer',...
'Dancer2','David2','David3','Deer','Dog','Dog1','Doll','DragonBaby','Dudek','FaceOcc1',...
'FaceOcc2','Fish','FleetFace','Football','Freeman1', 'Girl','Gym','Human2','Human3','Human4',...
'Human6','Human7','Human8','Human9','Ironman','Jump','Jumping','KiteSurf',...    'Lemming','Liquor','Man','Mhyang','MountainBike','Panda','RedTeam','Rubik','Skater','Skater2',...
'Skating1','Skiing','Subway','Surfer','Suv','Sylvester','Toy','Trans','Trellis','Twinnings','Vase',...
'Walking','Walking2','Woman'};
% 跟踪器名字
tracker='2015_CVPR_DAT_USABLE';
% 保存路径
savePath='.\results\';

for vid = 1:numel(videos)
    close all;
    disp(videos{vid});
    video_path = [base_path '\' videos{vid}];  
    [seq, ground_truth] = load_video_info(video_path,0);
    seq.VidName = videos{vid};
    st_frame = 1;
    en_frame = seq.len;
    seq.st_frame = st_frame;
    seq.en_frame = en_frame;
    % 帧数
    num_frames=en_frame-st_frame+1;
    img_dir=seq.s_frames;
    %此处是关键。本人将2015_CVPR_DAT_USABLE的主函数修改为一个子函数,将以上获得的相关参
    %数作为输入,获得后续处理所需要的 rect_position, time。在使用其他算法时,需根据算法的具体情
    %况,考虑将算法中的哪个函数放在此处使用。
    [rect_position, time] = demo_DAT_USABLE(num_frames,seq,ground_truth,img_dir);
  %
    fps = (en_frame-st_frame) / time;
    results{1}.type = 'rect';
    results{1}.res = rect_position;
    results{1}.fps = fps;
    results{1}.len = num_frames;
    results{1}.annoBegin = st_frame;
    results{1}.startFrame = st_frame;
    save([savePath videos{vid} '_' tracker '.mat'], 'results');
end

第二步:将第一步获得的.mat结果经OTB_benchmark中获得性能图。

① 先对OTB_benchmark中的util\configTrackers.m,util\configSeqs.m进行设置。此处我在试着做时添加了两个算法,四个序列。若需要更多算法和更多的序列,照此添加即可(CSDN中很多可参考博客),具体如下:

function seqs=configSeqs
seqOTB49_100={struct('name','Biker','path','F:\my_second_paper_result\files_used_for_my_second\OTB100\Biker\img\','startFrame',1,'endFrame',142,'nz',4,'ext','jpg','init_rect', [0,0,0,0]),...
    struct('name','Bird1','path','F:\my_second_paper_result\files_used_for_my_second\OTB100\Bird1\img\','startFrame',1,'endFrame',408,'nz',4,'ext','jpg','init_rect', [0,0,0,0]),...
    struct('name','Bird2','path','F:\my_second_paper_result\files_used_for_my_second\OTB100\Bird2\img\','startFrame',1,'endFrame',99,'nz',4,'ext','jpg','init_rect', [0,0,0,0]),...
    struct('name','BlurBody','path','F:\my_second_paper_result\files_used_for_my_second\OTB100\BlurBody\img\','startFrame',1,'endFrame',334,'nz',4,'ext','jpg','init_rect', [0,0,0,0])
    };
seqs=seqOTB49_100; 
end

%%%%%%%%%%%%%%%%%

function trackers=configTrackers
trackersNew={
    struct('name','2015_CVPR_DAT_USABLE','namePaper','2015_CVPR_DAT_USABLE'),...
    struct('name','2015_ICCV_CF2','namePaper','2015_ICCV_CF2')
    };
trackers = trackersNew;
end

②接着将在第一步中获得的.mat结果放入benchmark中的results文件夹中,并以 results_OPE_‘算法名’的形式命名(由于本人第一次使用,暂不会贴图,只以以下形式给大家列出我的.mat文件的存放形式):
#results(文件夹)
##results_OPE_2015_CVPR_DAT_USABLE(文件夹)
### Biker_2015_CVPR_DAT_USABLE.mat
### Bird1_2015_CVPR_DAT_USABLE.mat
### Bird2_2015_CVPR_DAT_USABLE.mat
### BlurBody_2015_CVPR_DAT_USABLE.mat
## results_OPE_2015_ICCV_CF2(文件夹)
### Biker_2015_ICCV_CF2.mat
### Bird1_2015_ICCV_CF2.mat
### Bird2_2015_ICCV_CF2.mat
### BlurBody_2015_ICCV_CF2.mat
即各文件的关系为
results\results_OPE_2015_CVPR_DAT_USABLE\Biker_2015_CVPR_DAT_USABLE.mat,…
③修改perfPlot.m函数,增加 addpath(’.\util’),后续会用到里面的函数,否则运行会出错

clear
close all;
clc
addpath('.\util');   %%此处为perfPlot.m第一处一修改
addpath(('.\rstEval'));
attPath = '.\anno\att\'; 
......
evalTypeSet = 'OPE';   %%第103行的evalTypeSet改为OPE,可能需要的第二处修改
...

 1. List item

④修改genPerfMat.m函数:
找到此处(26~37行),将第31行的rpAll修改为如下形式(当configTrackers中使用多个算法时此处需修改,否则找不到相应算法的.mat文件),其他处不用修改:

 for idxTrk=1:numTrk
        switch evalType
    case 'SRE'
        rpAll=['.\results\results_SRE_CVPR13\'];
    case {'TRE', 'OPE'}
        rpAll= [ '.\results\results_OPE_'   trackers{1,idxTrk}.name  '\'];  %%此处修改
end
        t = trackers{idxTrk};
        %         load([rpAll s.name '_' t.name '.mat'], 'results','coverage','errCenter')   
 load([rpAll s.name '_' t.name '.mat']);
        disp([s.name ' ' t.name]);

所有修改到此结束,此时直接运行perfPlot.m函数就可以获得18张性能图。

说明:本人在参考OTB-benchmark过程中,未见各位大神将整个过程较为详细地写出,且绝大部分只例举了单个算法时的修改,未就使用多个算法的修改情形做介绍,作为小白,深感不便。在参考大神们的修改方法,并结合自己的理解,在尝试获得多算法的性能对比图时,侥幸顺利得到了结果,便分享给大家。本人小白一枚,暂不会在CSDN贴图,亦不敢与各位大神相提并论,所以若有不足之处,望大家海涵。

参考博客:

[1] https://blog.csdn.net/qq_17783559/article/details/90485701 博博有个大大大的Dream
[2] https://www.cnblogs.com/eraserNut/p/8401320.html

特别感谢 ‘博博有个大大大的Dream ’博主,总能帮大家跳过复杂的OTB或VOT toolkit配置,顺利得到想要的结果!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值