zoukankan      html  css  js  c++  java
  • 转载:Object Visual Tracker Benchmark 使用教程

    2013年Object Visual Tracker Benchmark的提出是视频图像跟踪另一的大事件,自此视频跟踪领域有了公认的Benchmark,跟踪方面的研究与以前已经完全不一样的。虽然下载源码,摸索之后都可以看懂,但是博主还是想系统的介绍其中的工具。官方的SDK可以极大的帮助我们评估算法,产生一些可以直接出现在Paper上的图表。

            这篇博客主要介绍如何Visual Tracker Benchmark 中提供的Matlab代码,希望能有所帮助。Python的可以看那些开源的demo,差不多一样的思路。

    一、纵览

    首先,简单介绍下各个文件夹的内容:

    drawresultBB.m 是根据结果画BoundingBox的脚本

    main_running.m 是跟踪算法测试的脚本,可以跑自己的tracker算法

    perfPlot.m 是根据结果绘制曲线图的脚本,Paper中的图就可以通过这个角度得到

    /anno 中存放的是groundtruth.txt文件

    /figs 是输出的图片结果

    /initOmit 也是groundtruth,被用于初始化第一帧

    /perfMat 中计算曲线图时中间保存的结果,为.mat格式

    /results 里面是.mat格式的各个算法的运行结果

    /rstEval 是各个和计算结果精度有关的脚本或者函数

    /tmp 里面主要是绘制Boundingbox的输出图片

    /trackers 是跟踪算法程序所在的目录

    /util 是我们常常需要修改的配置参数脚本文件,这个里面我们可以修改测量的序列、被测量的算法等等

    /vlfeat 这个不是自带的,是该包依赖的环境,我们在官网下载安装,需要变一下

            关于结果,我们可以在网站上下载,Matlab代码总自带13年版本的结果,15年版本增加了100个图像序列,增加了三个跟踪算法,这些都要在官网额外下载,压缩包的名字带pami-15字样。关于13和15版本的不同,以及一些特例,博主把它放在最后介绍。

    二、结果格式

            这个其实没什么好讲的,我们如果没有特殊需求,按照左边格式进行存储即可,如果其它格式的话,点开results里面随便导入一个.mat来看看就懂了。根据类型不同会有不同的额外字段,就讲下type字段好了,

    type主要有六种,只介绍其中最常用两种,其它的看代码吧:

        ‘rect’: 矩形,存储的格式为[x y width height]

        ‘ivtAff’: 粒子滤波里面和放射变换有关的格式,1×6,可以组成一个2×3的仿射矩阵

        在2015版本的有些程序中,会是’affine_inv’之类的名字,在13程序中会无法识别,其实这两个是相同的,修改成一样就好

    然后我们看drawResultsBB.m里面的一段代码,如果想了解某个格式,顺着读下去就可以了

    三、进行测试

            当然,你完全可以不适用这个框架进行测试,只需把结果存成对应格式拿过来画图就可以了,这里介绍下框架用法。

            把自己的tracker做一个matlab接口,不管你是exe还是什么脚本,我们需要一个统一的matlab接口,输入序列输出结果,都要完全按照格式来。

            然后把自己的程序放到tracker文件夹下,用自己的名字命名文件夹,接口的脚本名称为run_XXX.m,XXX就是你tracker的名字。

            然后需要在utils/configTrackers中进行配置,其实就是把你的tracker名字加进去,utils/configTrackers中的测试序列如果有变动也可以进行修改。

            最后,在main_running.m中进行配置你的测试项,是TRE还是OPE还是SRE,默认的OPE结果目录是在TRE目录里面,因为TRE中第1帧开始就是OPE的结果,所以自己的结果需要提前拷贝到results目录下的对应位置。然后等待结果即可。

    四、绘制结果曲线

            运行Perplot,要改什么直接定位代码进行修改,没什么好讲的,结果保存在figs文件夹下

            原来的脚本如果直接运行,可能会提示有函数找不到,我们在代码中按照上面进行修改,把对应函数加到目录里面就可以了

            如果要改线条样式,直接修改line_style结构体,要修改绘制的算法、计算的序列,也是直接在utils文件夹下的config脚本总修改,总之直接看脚本就可以知道改哪里,不多讲了。

    五、绘制结果框

            这个直接运行就可以了,和前面一样的配置在utils文件夹下,个人觉得他给的这个不是很好。他使用matlab画在figure窗口上,把figure窗口图像保存下来,图像分辨率都丢了,还有个白框在外面,于是博主写了一个直接在原图进行绘制的。

            这段代码只是一个函数,你需要加上配合的接口,允许rect和invaff两种格式的直接绘制,还可以绘制旋转矩形,如果不需要旋转矩形theta参数给0就可以了,由于使用invaff格式时需要模板大小,最后一个参数tp_sz就是模板大小,不需要的时候赋值0就可以。还有就是帧号会被标识在左上角,如果不需要,那么frame_no赋值0就可以不绘制帧号。

            这是绘制图片制作的gif动画:gif动画制作,请参考这篇博客

    六、注意事项

            这一节可能是最重要的,不过把它放到了最后…

            15年版本和13年版本的区别:

    1. 13和15版本的david测试集的start相通,但是end不同,就是所帧数量是不同的

    2. 13版本和15版本在存储例子滤波格式的结果时,一个type为’invAff’,15年版本变成了’affine_inv’

    3. 关于名字的修改,Jogging-1,Jogging-2在15年修改成了Jogging.1,Jogging.2,可能会导致load_video_info的变动

    4. Tiger1数据集,某些算法的结果不明原因的少了几帧,由于博主也不知道这是什么情况,所以博主在测试时注释掉了该序列

  • 相关阅读:
    【转载】线程数究竟设多少合理
    【转载】lvs为何不能完全替代DNS轮询
    接口测试考虑点
    隐式等待的两种写法
    邮件的操作
    Python列表排序 reverse、sort、sorted 操作方法
    兼容和适配的区别
    文件操作-oracle数据库
    初试线程-文件操作
    Selenium Grid分布式测试入门笔记
  • 原文地址:https://www.cnblogs.com/jjwu/p/8513369.html
Copyright © 2011-2022 走看看