关于视觉跟踪中评价标准的相关记录(The Evaluation of Visual Tracking Results on OTB-100 Dataset)

2018-01-22  21:49:17

Benchmark website:http://cvlab.hanyang.ac.kr/tracker_benchmark/benchmark_v10.html

1. 修改 benchmark 的路径,改为你自己的数据集的路径:

2. 也可以修改 tracker 的设置,仅仅显示自己想要输出的那些跟踪算法:

3. 展示结果:

那么,问题来了,怎么将其拓展到 OTB100 dataset 上?怎么评价自己的跟踪结果?

1. 首先,将 tracking 的 txt 文档,生成 .mat 文件:

  第一个是生成 .mat 文件的主函数。

 %% ####################################################

 % First, load the track_results.txt and groundtruth.txt
close all; clear all; clc;
warning off all;
addpath('./util');
addpath(('C:\Users\WANG XIAO\Downloads\tracker_benchmark_v1.0\vlfeat-0.9.20-bin\vlfeat-0.9.20\toolbox'));
vl_setup seqs=configSeqs;
trackers = configTrackers; for ii=:size(seqs, )
seqs{, ii}.path = [seqs{, ii}.path 'img\'];
end numSeq=length(seqs);
numTrk=length(trackers);
evalType = 'TRE';
finalPath = ['./results/results_' evalType '_CVPR13/']; if ~exist(finalPath,'dir')
mkdir(finalPath);
end tmpRes_path = ['./tmp/' evalType '/'];
bSaveImage=; if ~exist(tmpRes_path, 'dir')
mkdir(tmpRes_path);
end pathAnno = './anno/';
addpath(('./rstEval'));
addpath(['./trackers/VIVID_Tracker']);
results_base_path = 'C:\Users\WANG XIAO\Downloads\tracker_benchmark_v1.0\txt_files\SRDCF\';
groundtruth_base_path ='C:\Users\WANG XIAO\Desktop\OTB100\Benchmark\'; % all videos, call self with each video name. only keep valid directory names
dirs = dir(groundtruth_base_path);
videos = {dirs.name};
videos(strcmp('.', videos) | strcmp('..', videos) | ...
strcmp('anno', videos) | ~[dirs.isdir]) = []; [vn,~] = size(videos(:));
numSeg = ; % #####################################################
% The Main For Loop
% #####################################################
for num = :numel(videos)
% get image ground truth for evaluation
[gt] = load_groundtruth_txt_info(groundtruth_base_path, videos{num});
% get image track result for evaluation
[track_result] = load_results_txt_info(results_base_path, [videos{num} ]);
[num_of_frames, ~] = size(gt(:,));
toc = ; s = seqs{num};
s.len = s.endFrame - s.startFrame + ;
s.s_frames = cell(s.len,);
nz = strcat('%0',num2str(s.nz),'d'); % number of zeros in the name of image
for i=:s.len
image_no = s.startFrame + (i-);
id = sprintf(nz,image_no);
s.s_frames{i} = strcat(s.path, id, '.', s.ext);
end img = imread(s.s_frames{});
[imgH,imgW,ch]=size(img); rect_anno = dlmread([pathAnno s.name '.txt']); [subSeqs, subAnno, subTrackingResults] = splitSeqTREv2(s, numSeg, rect_anno, track_result); % Second, translate the track_results.txt to .mat format file and save it.
for subIndex = :numSeg % parts current_part_track_results = subTrackingResults{, subIndex};
current_part_gt_results = subAnno{, subIndex}; results{subIndex}.res = current_part_track_results;
results{subIndex}.type = 'rect'; % 'ivtAff'
results{subIndex}.fps = num_of_frames / toc;
results{subIndex}.len = subSeqs{, subIndex}.len ;
results{subIndex}.annoBegin = ;
results{subIndex}.startFrame = subSeqs{, subIndex}.startFrame;
results{subIndex}.anno = current_part_gt_results;
results{subIndex}.shiftType = 'left';
videos{num} = [lower(videos{num}()) videos{num}(:end)];
if videos{num}(end-)=='-'
videos{num} = [videos{num}(:end-) '.' videos{num}(end)];
end
if strcmp(videos{num},'human4')
videos{num}='human4.2';
end end matsavePath = './results/results_TRE_CVPR13/';
mkdir(matsavePath); save([[matsavePath videos{num}] '_SRDCF.mat'], 'results'); end
  function [ track_result ] = load_results_txt_info(base_path,video)
%LOAD_TXT_INFO %see if there's a suffix, specifying one of multiple targets, for
%example the dot and number in 'Jogging.1' or 'Jogging.2'. if numel(video) >= && video(end-) == '.' && ~isnan(str2double(video(end))),
suffix = video(end-:end); %remember the suffix
video = video(:end-); %remove it from the video name
else
suffix = '';
end %full path to the video's files
if base_path(end) ~= '/' && base_path(end) ~= '\',
base_path(end+) = '/';
end %try to load ground truth from text file (Benchmark's format)
% filename = [base_path video suffix '_ours.txt'];
try
filename = [base_path 'SRDCF_' suffix video '.txt'];
catch
filename = [base_path video suffix '_SRDCF.txt'];
end f = fopen(filename);
assert(f ~= -, ['No initial position or ground truth to load ("' filename '").']) %the format is [x, y, width, height]
try
track_result = textscan(f, '%f,%f,%f,%f', 'ReturnOnError',false);
catch %#ok, try different format (no commas)
frewind(f);
track_result = textscan(f, '%f %f %f %f');
% str = fgetl(f);
% track_result = textscan(str,'%f');
% str = track_result{}';
end
track_result = cat(, track_result{:});
fclose(f); end
 function [subSeqs, subAnno, subTrackingResults]=splitSeqTREv2(seq, segNum,rect_anno, track_result)
% segments for each sequences
% first, excluding all the occ/out-of-view frames
% then, sampling minNum = ; fileName = ['initOmit/' seq.name '.txt'];
IdxExclude = [];
if exist(fileName)
IdxExclude=load(fileName)-seq.startFrame+;
end
Idx = :seq.len;
for j = :size(IdxExclude,)
Idx(IdxExclude(j,):IdxExclude(j,))=;
end
Idx = Idx(find(Idx>)); for i=:length(Idx)
r = rect_anno(Idx(i),:); if r()<= | r()<= | r()<= | r()<= | isnan(sum(r))
Idx(i) = ;
end
end Idx = Idx(find(Idx>)); for i = length(Idx):-:
if seq.len - Idx(i) + >= minNum
endSeg = Idx(i);
endSegIdx = i;
break;
end
end startFrIdxOne = [floor(:endSegIdx/(segNum-):endSegIdx) endSegIdx] ; % endSeg = seq.len-minNum+; subAnno=[];
subSeqs=[];
subTrackingResults = []; for i = :length(startFrIdxOne)
index = Idx(startFrIdxOne(i));
subS.path = seq.path;
subS.nz = seq.nz;
subS.ext = seq.ext; subS.startFrame = index+seq.startFrame-;
subS.endFrame = seq.endFrame; subS.len = subS.endFrame - subS.startFrame + ; subS.annoBegin = seq.startFrame;
subS.init_rect = rect_anno(index,:);
anno = rect_anno(index:end,:); subS.s_frames = seq.s_frames(index:end); subS.name = seq.name;
% subS.nameIdx = [seq.name '_' num2str(i)]; subAnno{i} = anno;
subSeqs{i} = subS;
subTrackingResults{i} = track_result(subS.startFrame:subS.endFrame, :); end
  function [ ground_truth] = load_groundtruth_txt_info(base_path, video)
%LOAD_TXT_INFO disp(['==>> deal with video: ', video]); %see if there's a suffix, specifying one of multiple targets, for
%example the dot and number in 'Jogging.1' or 'Jogging.2'. if numel(video) >= && video(end-) == '.' && ~isnan(str2double(video(end))),
suffix = video(end-:end); %remember the suffix
video = video(:end-); %remove it from the video name
else
suffix = '';
end %full path to the video's files
if base_path(end) ~= '/' && base_path(end) ~= '\',
base_path(end+) = '/';
end
video_path = [base_path video '/']; %try to load ground truth from text file (Benchmark's format)
filename = [video_path 'groundtruth_rect' suffix '.txt'];
f = fopen(filename);
assert(f ~= -, ['No initial position or ground truth to load ("' filename '").']) %the format is [x, y, width, height]
try
ground_truth = textscan(f, '%f,%f,%f,%f', 'ReturnOnError',false);
catch %#ok, try different format (no commas)
frewind(f);
ground_truth = textscan(f, '%f %f %f %f');
end ground_truth = cat(, ground_truth{:}); fclose(f); end

有了这些 .mat 文件,就可以将其用于画 TRE 的曲线图了。

2. 用 perfPlot.m 函数来画出曲线图即可。

关于视觉跟踪中评价标准的相关记录(The Evaluation of Visual Tracking Results on OTB-100 Dataset)的更多相关文章

  1. 自动化回归测试案例评价标准 MeRest

    自动化回归测试案例评价标准试图定义不同维度来评价自动化案例的优劣,作为后续我们评判讨论测试框架.测试技术和测试案例编写模式的基础.那什么是好的自动化回归测试案例呢?简而言之,就是投资回报率高的案例,因 ...

  2. 时空上下文视觉跟踪(STC)算法的解读与代码复现(转)

    时空上下文视觉跟踪(STC)算法的解读与代码复现 zouxy09@qq.com http://blog.csdn.net/zouxy09 本博文主要是关注一篇视觉跟踪的论文.这篇论文是Kaihua Z ...

  3. TLD视觉跟踪算法(转)

    源:TLD视觉跟踪算法 TLD算法好牛逼一个,这里有个视频,是作者展示算法的效果,http://www.56.com/u83/v_NTk3Mzc1NTI.html.下面这个csdn博客里有人做的相关总 ...

  4. Video Target Tracking Based on Online Learning—深度学习在目标跟踪中的应用

    摘要 近年来,深度学习方法在物体跟踪领域有不少成功应用,并逐渐在性能上超越传统方法.本文先对现有基于深度学习的目标跟踪算法进行了分类梳理,后续会分篇对各个算法进行详细描述. 看上方给出的3张图片,它们 ...

  5. ROC曲线-阈值评价标准

    ROC曲线指受试者工作特征曲线 / 接收器操作特性曲线(receiver operating characteristic curve), 是反映敏感性和特异性连续变量的综合指标,是用构图法揭示敏感性 ...

  6. TLD视觉跟踪算法

    TLD算法好牛逼一个,这里有个视频,是作者展示算法的效果,http://www.56.com/u83/v_NTk3Mzc1NTI.html.下面这个csdn博客里有人做的相关总结,感觉挺好的,收藏了! ...

  7. paper 140:TLD视觉跟踪算法(超棒)

    我是看了这样的一个视频:http://www.56.com/u83/v_NTk3Mzc1NTI.html 然后在准备针对TLD视觉跟踪算法来个小的总结. 以下博文转自:http://blog.csdn ...

  8. ICCV2021 | 用于视觉跟踪的学习时空型transformer

    ​  前言  本文介绍了一个端到端的用于视觉跟踪的transformer模型,它能够捕获视频序列中空间和时间信息的全局特征依赖关系.在五个具有挑战性的短期和长期基准上实现了SOTA性能,具有实时性,比 ...

  9. C语言作业评价标准

    C语言作业评价标准 作业内容: 每周作业分为基础作业.挑战作业和预习作业: 基础作业为本周所学内容的巩固: 挑战作业包括但不仅限于所学知识的综合运用: 预习作业为下周所学内容的任务单,要求必须在课前完 ...

随机推荐

  1. 基于KVM、Xen、OpenVZ等虚拟化技术的WEB在线管理工具

    1.Proxmox proxmox是一个开源的虚拟化管理平台,支持集群管理和HA.在存储方面,proxmox除了支持常用的lvm,nfs,iscsi,还支持集群存储glusterfs和ceph,这也是 ...

  2. [openjudge-动态规划]摘花生

    题目描述 描述 Hello Kitty 想摘点花生送给她喜欢的米老鼠.她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来.地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生 ...

  3. java.lang.RuntimeException: can not run elasticsearch as root

    忘写了一个错误: [o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main] org.el ...

  4. navicat链接阿里云mysql报80070007: SSH Tunnel: Server does not support diffie-hellman-group1-sha1 for keyexchange

      http://www.jianshu.com/p/200572ed066c navicat 链接数据库 使用navicat 的ssh通道连接数据库回遇到权限问题 错误代码如下: 80070007: ...

  5. API gateway 之 kong 安装

    kong安装: https://getkong.org/install/centos/ 下载指定版本rpm: wget https://bintray.com/kong/kong-community- ...

  6. 费马小定理与GCD&LCM

    若 t = 1 ,  a ^ ( p - 2 ) 为 a 在取模 p 意义下的乘法逆元 通常用 inv 表示 证明: b * a =(三等)1(mod p) a ^ ( p - 2 ) * a =(三 ...

  7. sql server 触发器的简单用法

    触发器  -- 一下写的都是我对触发器的理解 当在执行insert . delete . 等操作的时候 随便要做一些额外的操作, 比如在添加的时候就会将新添加的数据存到inserted表中 写个实例 ...

  8. logger日志模块

    简单配合模式: import logging#简单配置logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filename)s ...

  9. P2P原理及UDP穿透简单说明(转)

    源: P2P原理及UDP穿透简单说明

  10. Servlet向JSP过渡

    表格中添加删除链接删除相关数据,在servlet这里用的是纯java代码,在纯java代码里面的输出里面添加类似前端拼接的东西.(删除链接,并根据id来删除相应数据)这里使用的纯servlet. 在o ...