关于视觉跟踪中评价标准的相关记录(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. keras如何求分类问题中的准确率和召回率

    https://www.zhihu.com/question/53294625 由于要用keras做一个多分类的问题,评价标准采用precision,recall,和f1_score:但是keras中 ...

  2. 【转】C#中base关键字的几种用法

    base其实最大的使用地方在面相对性开发的多态性上,base可以完成创建派生类实例时调用其基类构造函数或者调用基类上已被其他方法重写的方法.例如: 2.1关于base调用基类构造函数 public c ...

  3. 【转】win中IDLE选择virtualenv的启动方法

    从dos命令行运行.(virtualenv dir)\Scripts\activate.bat脚本激活环境,然后执行: python -m idlelib.idle 摘录:https://blog.c ...

  4. Django admin模块无法调用css样式文件

    在使用Django Admin开发时,发现admin模块css样式文件丢失,无法调用,使火狐浏览器提示: 此 URL 的资源不是文本: http://127.0.0.1:8000/statics/ad ...

  5. MQ的使用场景

    一.消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构.目前使用较多的消息队列有ActiveMQ,RabbitM ...

  6. 【转】Tomcat 快速入门

    本文转载自:https://www.cnblogs.com/jingmoxukong/p/8258837.html?utm_source=gold_browser_extension 目录 Tomca ...

  7. html5水平方向重力感应

    html5图片随手机重力感应而移动 <!DOCTYPE html> <html lang="zh-cn"><head><meta http ...

  8. 图像处理基础---RGB图 灰度图 索引图 调色板

    (1)二进制图 在二进制图中,像素的取值为两个离散数值0或1中的一个,0代表黑色,1代表白色 例 A=[0 0 1;1 1 0; 0 0 1];>> imshow(A,'InitialMa ...

  9. 配置方案:Redis持久化RDB和AOF

    Redis持久化方案 Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘.当下次Redis重启时,利 ...

  10. Charles 从入门到精通 --转

    文章目录 1. 目录及更新说明 2. Charles 限时优惠 3. 简介 4. 安装 Charles 5. 将 Charles 设置成系统代理 6. Charles 主界面介绍 7. 过滤网络请求 ...