文章目录

  • precision plot图
  • success plot图

precision plot图

类似如下图:

其含义为:跟踪算法估计的目标位置(bounding box)的中心点与人工标注(ground-truth)的目标的中心点,这两者的距离小于给定阈值的视频帧的百分比。不同的阈值,得到的百分比不一样,因此可以获得一条曲线。

该评估方法的缺点:无法反映目标物体大小与尺度的变化。

简单来说:横坐标代表阈值,阈值范围是1到50,纵坐标代表 跟踪算法估计的目标位置(bounding box)的中心点与人工标注(ground-truth)的目标的中心点的距离小于给定阈值的视频帧的百分比。(比如:横坐标阈值为10,对应纵坐标百分比为0.6,就代表当前跟踪视频序列有60%的视频帧是满足bounding box的中心与ground-truth的中心的距离是小于10个像素)

其matlab代码为:

function [precisions, distances, averageLocationError] = precision_plot(positions, ground_truth,colortype,show)
%PRECISION_PLOT
%   Calculates precision for a series of distance thresholds (percentage of
%   frames where the distance to the ground truth is within the threshold).
%   The results are shown in a new figure if SHOW is true.
%
%   Accepts positions and ground truth as Nx2 matrices (for N frames), and
%   a title string.
%  modified: 5/31/2016--------------------------
% positions, and ground_truth is the coordinates of center points
% ---------------------------------------------
%
%   Joao F. Henriques, 2014
%   http://www.isr.uc.pt/~henriques/max_threshold = 50;  %used for graphs in the paperprecisions = zeros(max_threshold, 1);if size(positions,1) ~= size(ground_truth,1),
%       fprintf('%12s - Number of ground truth frames does not match number of tracked frames.\n', title)%just ignore any extra frames, in either results or ground truthn = min(size(positions,1), size(ground_truth,1));positions(n+1:end,:) = [];ground_truth(n+1:end,:) = [];end%calculate distances to ground truth over all framesdistances = sqrt((positions(:,1) - ground_truth(:,1)).^2 + ...(positions(:,2) - ground_truth(:,2)).^2);distances(isnan(distances)) = [];%compute precisionsfor p = 1:max_threshold,precisions(p) = nnz(distances <= p) / numel(distances);endaverageLocationError = sum(distances)/numel(distances);%plot the precisionsif show == 1,
%       figure('Number','off', 'Name',['Precisions - ' title])plot(precisions, colortype, 'LineWidth',1.2)xlabel('Local error threshold'), ylabel('Precision')endend
clear all;
gt = importdata('groundtruth.txt');%ground truth file
A = importdata('boundingbox.txt'); %output file
gt(:,3:4) = gt(:,3:4)+0.001;[precisions1, distances1, averageLocationError1]=precision_plot(A,gt,'k',1);hold on;legend('tracker','Location','NorthEast');

注意:以上代码只是算一个视频序列的结果,那要怎么求出跟踪算法对于一整个数据集(如OTB 、VOT)的precision plot呢?一般来说直接跑benchmark就可以直接出来了 但是我就想手算 我就不嫌麻烦 行不行? 行!!!

运行完上面第二段代码,matlab右边工作台会出现一个:

双击点开:

就是50个点

再对视频集中所有的视频序列都跑一遍跟踪算法,比如跑OTB50(OTB50一个50个视频序列)是不是就得到了 50列这样的数据,全部拿到Excel中,每行求平均,再对求出的平均一画折线图,OK 完成。

success plot图

类似如下图:


其含义是:首先定义重合率得分(overlap score,OS),追踪算法得到的bounding box(记为a),与ground-truth给的box(记为b),重合率定义为:OS = |a∩b|/|a∪b|,|·|表示区域的像素数目。当某一帧的OS大于设定的阈值时,则该帧被视为成功的(Success),总的成功的帧占所有帧的百分比即为成功率(Success rate)。OS的取值范围为0~1,因此可以绘制出一条曲线。一般阈值设定为0.5。

简单来说:假设一个视频序列一共有1000帧,当横坐标为0.2时,对应的纵坐标为0.7:代表的意思就是:有70%的帧(即700帧)的OS大于0.2

matlab代码为:

function [ success_rate, OverlapRatio ] = success_plot( positions, ground_truth, colortype,show )% positions and ground_truth format: [x,y,w,h] of the top-left point of the% bounding boxRatio = bboxOverlapRatio(positions, ground_truth);OverlapRatio = diag(Ratio);threshold = [0.02:0.02:1];N = size(threshold,2);success_rate = zeros(N,1);for i = 1:Nsuccess_rate(i) = nnz(OverlapRatio >= threshold(i)) / numel(OverlapRatio);endif show==1plot(success_rate,threshold, colortype, 'LineWidth',1.2)xlabel('Overlap threshold'), ylabel('Success rate')end
end
clear all;
gt = importdata('bird1.txt');%ground truth file
A = importdata('bird1_bboxes.txt'); %output file
gt(:,3:4) = gt(:,3:4)+0.001;success_plot(A,gt,'r',1);hold on;
legend('ours','Location','NorthEast');

注意:以上代码只是算一个视频序列的结果,算全部序列方法和precision plot一致

目标跟踪 中 precision plot图 与 success Plot图 的具体含义及代码实现相关推荐

  1. (转) 深度学习在目标跟踪中的应用

    深度学习在目标跟踪中的应用 原创 2016-09-05 徐霞清 深度学习大讲堂 点击上方"深度学习大讲堂"可订阅哦!深度学习大讲堂是高质量原创内容的平台,邀请学术界.工业界一线专家 ...

  2. [转]深度学习在目标跟踪中的应用

    原文链接:https://zhuanlan.zhihu.com/p/22334661 开始本文之前,我们首先看上方给出的3张图片,它们分别是同一个视频的第1,40,80帧.在第1帧给出一个跑步者的边框 ...

  3. 一文详解目标跟踪中的相关滤波

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文来源:AI干货知识库 / 导读 / 目标跟踪是计算机视觉领域的一个重要问题,目前广泛应用在体育赛事 ...

  4. (FFT)快速傅里叶变换在目标跟踪中的运用

    随着科学技术的不断发展,许多用于加快计算速度的算法应运而生,快速傅里叶变换就是其中之一,快速傅里叶变换是傅里叶变换的一种快速计算方式.傅里叶变换在科学研究中运用非常广泛,刚开始出现时,主要用于信号分析 ...

  5. 交互式多模型-粒子滤波IMM-PF—在机动目标跟踪中的应用/matlab实现

    交互式多模型-粒子滤波IMM-PF-在机动目标跟踪中的应用/matlab实现 原创不易,路过的各位大佬请点个赞 WX: ZB823618313 交互式多模型-粒子滤波IMM-PF-在机动目标跟踪中的应 ...

  6. 交互式多模型-扩展卡尔曼滤波IMM-EKF——机动目标跟踪中的应用

    交互式多模型-扩展卡尔曼滤波IMM-EKF--机动目标跟踪中的应用 原创不易,路过的各位大佬请点个赞 针对机动目标跟踪的探讨.技术支持欢迎联系,也可以站内私信 WX: ZB823618313 机动目标 ...

  7. 智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-汇总

    总结: Siamese网络衡量两个输入的相似程度,输出是一个[0,1]的浮点数,表示二者的相似程度.孪生神经网络有两个输入(Input1 and Input2),将两个输入feed进入两个神经网络(N ...

  8. 无迹卡尔曼滤波UKF—目标跟踪中的应用(算法部分)

    无迹卡尔曼滤波UKF-目标跟踪中的应用(算法部分) 原创不易,路过的各位大佬请点个赞 机动目标跟踪/非线性滤波/传感器融合/导航等探讨代码联系WX: ZB823618313 仿真部分见博客: [无迹卡 ...

  9. 无迹卡尔曼滤波UKF—目标跟踪中的应用(仿真部分)

    无迹卡尔曼滤波UKF-目标跟踪中的应用(仿真部分) 原创不易,路过的各位大佬请点个赞 机动目标跟踪/非线性滤波/传感器融合/导航等探讨联系WX: ZB823618313 算法部分见博客: [无迹卡尔曼 ...

最新文章

  1. 数据分析软件python 对电脑的要求-数据分析5大软件PK,你最爱哪个?
  2. oracle19c 安装权限_oracle 19c 安装
  3. python 3 面向过程编程
  4. 10、什么是WEB端
  5. 昆工c语言题库,昆明理工大学C语言期末统考试题
  6. HWPFDocument读取doc,wps文档(含图片读取)
  7. JUC 基础内容概述
  8. 比较sql server两个数据库
  9. 深度学习中的常用的归一化方法汇总
  10. VB扫雷游戏的设计与开发
  11. Hadoop原理与安装
  12. MATLAB线性回归
  13. paperwhite3翻页_Kindle vs. Paperwhite vs. Voyage vs. Oasis:您应该购买哪种Kindle?
  14. Deepest Station
  15. 微信小程序-- WXS 脚本语言公测
  16. 解决vue项目在浏览器中打开后,#后面的链接被截取的问题
  17. kartoslam找bug之行
  18. Sublime 安装与中文配置
  19. 噩梦射手(SurvivalShooter)教程(六)
  20. ScrollView水平滑动条选中条目的居中显示

热门文章

  1. 机器学习 [logistic函数和softmax函数]
  2. keystore生成
  3. unity python做热更_[专栏作家]基于ILRuntime的完整C#热更方案
  4. Java输出保留小数
  5. java如何编写windows木马_如何编写可怕的 Java 代码?
  6. 三维空间中的圆与三角形(二):圆与外切三角形
  7. 最多跑一次,数字化政府,和 CloudFoundry
  8. jquery循环元素找到每个元素的data-index索引号
  9. [游戏开发][Unity] TPS射击游戏相机实现
  10. 彩色星球图片生成5:先验条件约束与LapGAN(pytorch版)