vot是面向跟踪算法的全球挑战赛,每年都会举办一次,组委会制定了一套科学的跟踪器评价指标和方法用于提交作品的评分,该工具就是vot-toolkit,是一个基于Matlab的工具集。

挑战赛的官网是 http://votchallenge.net/
vot-toolkit在github提供下载 https://github.com/votchallenge/vot-toolkit.git

除了vot-toolkit本身以外,还需要下载一个叫TraX的库。Trax主要作用就是建立各种语言跟踪器与vot-toolkit的传输协议,方便我们对不同语言写的tracker进行统一分析。

TraX https://github.com/votchallenge/trax.git

在官网中有对比赛、数据集、各种tracker的详细介绍,虽然配置过程在文档中也有介绍,但从我个人和github的issue看,不少人还是有点问题,因此将个人的配置过程和遇到的坑记录下来。

运行环境

Windows10 x64,其中Matlab版本未Matlab 2016b,VS版本是VS2015

程序下载

下载vot-toolkit-master文件并解压,其中中包含很多文件夹,我们需要新建一个文件夹名为native,下载traX-master并解压,将traX-master文件夹改名为traX放进native中,这样程度就准备完成了。

数据集准备

matlab程序运行起来以后会自动检测数据集的存在,如果没有数据集会自动下载,考虑到墙的问题还是最好提前下载,毕竟后期可能会增加自己的数据集。
数据集需要在vot-toolkit-master主文件夹中新建sequences文件夹,并放入数据。

数据的格式需要按照工具的读取形式,很多教程写的不清楚。
sequences的目录结构应该是这样

- sequences|-- ball|-- color|-- 00000001.jpg|-- 00000002.jpg|-- ...|-- camera_motion.tag|-- groundtruth.txt|-- ...|-- car|-- book|--...|--lists.txt

其中lists.txt是一个文本格式文档,记录了想要处理的数据集名称,vot-kit从这个文档读取文件夹名来依次处理。

创建workspace

这个过程说白了就是根据你的需要自动产生一些代码用来跑数据集用,真正做到一键处理。这些代码来自于主文件夹下的模板(其实这样做增加了复杂度,一开始还不容易看明白)。
执行操作如下:

  • 运行toolkit_path.m,添加路径
  • 运行./workspace/workspace_create.m,注意这一步会在当前目录下创建新增的m文件,一般在执行前将主目录设为当前目录好一些。

执行时根据需要选择 跟踪器名 - 数据集 - 编程语言 即可,选错了也没关系,可以直接修改生成的m文件。假设我们跟踪器的是ncc-vot2015

配置跟踪器接口

  • Matlab

如果跟踪器是Matlab写的,我们以.\tracker\examples\matlab 下的ncc为例进行说明

默认的tracker_ncc.m接口如下:


error('Tracker not configured! Please edit the tracker_ncc.m file.'); % Remove this line after proper configuration% The human readable label for the tracker, used to identify the tracker in reports
% If not set, it will be set to the same value as the identifier.
% It does not have to be unique, but it is best that it is.
tracker_label = [];% For MATLAB implementations we have created a handy function that generates the appropritate
% command that will run the matlab executable and execute the given script that includes your
% tracker implementation.
%
% Please customize the line below by substituting the first argument with the name of the
% script (not the .m file but just the name of the script as you would use it in within Matlab)
% of your tracker and also provide the path (or multiple paths) where the tracker sources
% are found as the elements of the cell array (second argument).
tracker_command = generate_matlab_command('<TODO: set script name>', {'<TODO: set script path>'});tracker_interpreter = 'matlab';% tracker_linkpath = {}; % A cell array of custom library directories used by the tracker executable (optional)

写的很清楚了,第一步注释掉首行的error,label可改可不改,主要是把调用接口填正确。

Matlab 的调用接口其实就是m文件路径,第一处填m文件的文件名,第二处填所在文件夹。

tracker_command = generate_matlab_command('ncc', {'D:\GitLibray\vot-toolkit-master\tracker\examples\matlab'});

直接执行run_test.m,如果程序正常运行会让你选择测试数据集名,稍等待一会就弹出跟踪图像和标准框及跟踪框的位置,鼠标点击切下一帧。test通过以后,后续的试验和报告等应该不会有什么问题了。这样Matlab跟踪器的设置就完成了。

其实\vot-toolkit-master\tracker\examples下已经将支持的demo接口给出了,所以当我们想再次设置跟踪器时可以不需要跑一遍workspace_create,直接修改对应的tracker_xx.m就行了。

  • Python

和Matlab跟踪器的配置流程是一样的,需要注意的地方是接口文件的配置


tracker_label = 'Demo_py';% Note: be carefull for double backslashes on Windows
tracker_command = generate_python_command('python_ncc', ...{'D:\\GitLibray\\vot-toolkit-master\\tracker\\examples\\python', ...  % tracker source and vot.py are here'D:\\GitLibray\\vot-toolkit-master\\native\\trax\\support\\python'});tracker_interpreter = 'python';tracker_linkpath = {'D:\\GitLibray\\vot-toolkit-master\\native\\trax\\build\\Release'};

这里几个需要注意的tips:

  1. tracker_command的构成是py跟踪器文件名 + 跟踪器路径 + traX工具的python接口路径
  2. tracker_interpreter 是解释器名称,我的电脑只安装了python-anaconda3.7,解释器就叫python,这个其实就是帮你在shell中执行python脚本,如果跟踪器是python的,那python环境应该是没有问题的。
  3. Matlab其实也是python的这种执行方式,我们跑Matlab试验时会打开一个命令行版本的Matlab。
  4. 最关键的一点,python运行时调用的traX需要c++库的支持,因此需要预先编译好traX。

编译traX需要使用cmake生成VS工程文件sln,然后在vs中编译出traX的库文件(trax.lib,trax.dll),tracker_linkpath就是指向这个路径的。

配置完成后,执行run_test.m,后续就和上述一样了。

  • C/C++

原生程序的配置是最简单的,Matlab程序其实就是帮忙执行跟踪器的exe文件,配置如下(是的就一行):

tracker_command = 'D:\\GitLibray\\vot-toolkit-master\\tracker\\examples\\native\\cppDemo\\x64\\Release\\cppDemo.exe';

我编译c++的NCC例子时发现cmake失败的情况,原因是traX的配置不成功导致cmake无法自动生成,找了半天没找到原因,后来干脆手动生成。

如果只想跑demo,编译时加入的c++文件是vot.h和ncc.cpp,需要手动配置opencv和traX库,这个不用说了吧。所以有的时候简单的问题过度考虑自动化反而影响效率。

通过C++工程,我们很容易就知道traX和整个程序是怎么互相依赖的。

这样,我们就将vot-toolkit支持的语言都配置了一遍,我们得到的认识是vot-toolkit通过tracker_command来自动化调用跟踪器 脚本/原生程序,生成跟踪结果,并通过traX传输到matlab端进行显示和分析出图。我觉得有这样的认识后,一些更复杂的tracker依赖应该也能理清楚了。

配一张test的图:

PS:鉴于可能的编译问题,这里把traX的编译过程放上来供大家参考。
首先从github下载traX库,安装了git的直接clone,没有就直接下载压缩包。工程是用cmake管理的。

第二部,安装cmake,过程略。然后按照下图填写,这些其实是基本的cmake-gui使用。

点击configure进行预配置,

红色的条目就是需要我们进一步配置的了,其实如果不打算深入研究traX代码就不用管了,继续点击configure完成配置。好了全白了。再点击生成工程,就完成了cmake工程的本地化,可以用vs继续编译了。

修改为release模式后,在VS解决方案右击选择生成解决方案,这样就完成了traX库的编译。
在\trax-master\build\Release目录下就可以找到编译好的动态库。

已经完成一半了,后面就需要用这个traX库来编译我们自己的跟踪器。以我上面使用的NCC跟踪器为例。

新建一个VS工程,在包含目录中添加traX的include文件夹,库目录添加我们刚刚编译好的lib库所在文件夹,链接器填上trax.lib,并把这两个文件加入工程,编译出跟踪器的exe可执行程序。

总结:traX的使用与一般的C++开源库使用没有什么区别,也不需要过多的配置
,从这里可以看出,traX库是我们的跟踪器和vot工具沟通的桥梁,所以我们的跟踪器需要包含这个库。附上使用opencv自带的kcf跟踪器的main函数,非常简单。

int main(int argc, char** argv) {TrackerKCF::Params para;para.detect_thresh = 0.25;para.max_patch_size = 96*96;Ptr<TrackerKCF> tracker = TrackerKCF::create(para);VOT vot;cv::Rect initialization;initialization << vot.region();cv::Mat image = cv::imread(vot.frame());Rect2d initialization2d(initialization.x, initialization.y, initialization.width, initialization.height);tracker->init(image, initialization2d);rectangle(image, initialization2d,Scalar(255,0,0));imshow("", image);waitKey(1);cv::Rect2d rect;while (!vot.end()) {cout << para.detect_thresh;string imagepath = vot.frame();if (imagepath.empty()) break;cv::Mat image = cv::imread(imagepath);bool bsuc = tracker->update(image, rect);if (!bsuc){cout << "跟踪失败!" << endl;return -1;}cv::Rect r(rect.x, rect.y, rect.width, rect.height);vot.report(r, 1);}

唯一需要注意的就是两点,一个是跟踪器的接口必须包含初始化和更新。第二必须使用vot.region()来初始化,跟踪完成后需要用vot.report(r, 1);来向vot工具传输结果。

完结。

windows下VOT-toolkit环境配置相关推荐

  1. CUDA学习:Windows下的CUDA环境配置

    Windows下的CUDA环境配置 一.查看自己电脑的显卡信息 使用win+R打开运行窗口,在运行窗口中输入cmd打开命令行 在命令行中键入nvidia-smi查看显卡支持信息 从下图中可以看到,本机 ...

  2. windows下spark开发环境配置

    --本篇随笔由同事葛同学提供. windows下spark开发环境配置 特注:windows下开发spark不需要在本地安装hadoop,但是需要winutils.exe.hadoop.dll等文件, ...

  3. Windows 下 PHP 开发环境配置系列二(使用 MODx CMS)

    Windows 下 PHP 开发环境配置系列一(PHP+Apache+MySql; Zend Debugger+PDT) 软件的下载地址在系列一中有列出 1. 需安装软件 PHP:   php-5.2 ...

  4. Windows下Openpose试运行环境配置流程

    这几天一直在配置openpose在windows环境下运行的环境,花了一些时间才把问题解决并安装成功,在这里总结一下当作备忘录. 1. 材料: (1) Openpose的代码,这个网上随便就可以搜到资 ...

  5. windows下sublime2 clojure环境配置

    最近在看<七周七并发模型>,其中函数式编程使用的是clojure来做说明,所以也想顺便学习一下clojure这种不同的编程方式语言.那么做开发肯定需要开发环境,第一步先下载clojure官 ...

  6. Windows 下 PHP 开发环境配置系列四 - IIS+php+mysql

    贴一下各我的环境的版本信息 Windows Server 2003 IIS  V6.0 PHP 5.2.17 (Thread) mysql-essential-5.1.48-win32 step 1. ...

  7. Windows下Android开发环境配置

    最新更新,见我新博客http://www.hrwhisper.me/java-android-environment-genymotion-emulator/ 更新了使用使用genymotion神级模 ...

  8. python django windows_Python+Django在windows下的开发环境配置图解

    1         安装配置开发环境 1.1   准备安装 下载以下软件 SUN JDK 1.6 不一定要1.6,1.5的也可以 1.2   Apache安装配置 懒得配置了,直接从网上找了一个Apa ...

  9. windows下mongoDB的环境配置

    mongoDB下载及安装 官网下载安装,可选择安装的具体路径. 建立数据文件及启动 为了启动mongoDB方便,我们可以将mongo.exe路径加入到环境变量中,电脑->属性->高级系统设 ...

  10. windows下的wxWidgets环境配置

    对于C++ GUI,前段时间使用了Qt,Qt使用简单,又很面向对象,但不大喜欢Qt的脓肿,听说同样跨平台的wxWidgets小而快,着手试试wxWidgets作为业余爱好,但对新手来说安装起来确实很麻 ...

最新文章

  1. 给Clouderamanager集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)...
  2. 打卡签到python代码_如何利用Python实现自动打卡签到
  3. Controller 返回图片请求
  4. mysql将sql转为关系代数_关系数据库基础:关系代数运算知识笔记
  5. Gentle.Net学习笔记四:修改代码,使用Oracle数据库
  6. Zookeeper分布式安装部署
  7. AT指令联网---以鸿蒙开发板为例
  8. 灵动标签调用文章每隔3条样式不同
  9. pyspark分类算法之多层感知机神经网络分类器模型实践【MLPClassifier】
  10. w3c 整站 php源码,W3C联盟系统 v1.3
  11. XML解析之 MSXML应用总结 概念篇
  12. matlab仿真项目心得,Matlab与Simulink系统仿真学习心得
  13. Elasticsearch 6.X xpack安装使用详解(试用)
  14. 一个复杂注塑件抽取中面一般操作
  15. 安全面试之WEB安全(一)
  16. HistoryDAO:重塑历史的记录方式
  17. 【自学51单片机】3 -- 硬件基础知识(电容、三极管、74HC245、74HC138三八译码器)介绍和闪烁LED小灯
  18. HTTPS、HTTP2详解
  19. TypeScript error in node_modules/jest-diff/build/diffLines.d.ts
  20. 35.前端笔记-CSS3-3D转换

热门文章

  1. 存活扫描_如何使用土壤湿度传感器使植物存活
  2. GBase 8s V8.9 安全管理器 用户手册-1
  3. 基于SSM的家校通系统(Spring+SpringMVC+Mybatis+mysql)
  4. sim卡没坏但苹果手机无服务_苹果手机iPhone 8 8P无服务 无基带
  5. ElasticSearch二 ElasticSearch高级用法
  6. 联想小新电脑摄像头打不开
  7. 35-博客网站数据库-博文信息数据操作(二)
  8. There are only 1 target objects. You either specified a wrong ‘keyProperty‘ or encountered a driver
  9. 根据客户的姓快速查找相同姓的所有客户的方法
  10. 工信部认证的大数据工程师证书你有多了解?