VOT2016和TraX的配置

2018.05.06更新:
今天看了下vot的github主页,之前”Unable to unpack TraX source code”的问题已经被解决,亲自测试过,没有问题。所以这篇文章中“TraX的配置”就可以不用看了。当然,想自己尝试编译TraX的朋友也可以根据文中步骤进行实践。


2018.05.05更新:
关于创建workspace时出现的 “Unable to unpack TraX source code”的问题,我在github询问了vot的作者@lukacu,他是这么回复的:

Yes, this is a known problem because Matlab’s urlwrite function cannot handle redirects. Should be fixed in toolkit 6.0 by changing the URL.

“是的,这是一个已知的问题,因为Matlab的urlwrite函数不能应对重定向。这个问题会在6.0版本通过更改URL的方式修复”。

实际上我对重定向知之甚少,所以不清楚这个问题的详细情况,但可以肯定的是,这个error作者已经知晓,并将在未来修复。补充这些就是希望读者能够对这个问题能够有更进一步的了解,当然,如果你能从作者的回复中了解error发生的具体原因,那就更好了。


前些时间因为毕设需要,想测试ECO算法在VOT2016数据集上的表现,于是下载了vot-toolkit,原本以为根据官方文档和其他博客的内容一步一步设置会非常简单,结果事实不如我所愿,花了几天才配置完毕,跑算法又用了我两天的时间,心累……出于此,想给大家分享一下VOT2016以及VOT所用到的TraX协议的配置。这也是我写这篇博客的目的。

该篇文章内容基于MATLAB r2016b+Visual Studio 2017,文中提到的文档在文末会给出链接。

什么是VOT?

VOT官网是这么说的:

The VOT challenges provide the visual tracking community with a precisely defined and repeatable way of comparing short-term trackers as well as a common platform for discussing the evaluation and advancements made in the field of visual tracking.

VOT全称Visual Object Tracking,是一个专注于单目标跟踪的测试平台,每一年都会举办VOT Challenge,将该年度提出的新算法汇集起来进行比较,通过VOT官方提出的一系列指标进行评价,用以评估这些算法的性能,并得出一个榜单,对算法进行排名。

下载vot-toolkit

首先是将工作包下载到本地,网址:Visual Object Tracking (VOT) challenge evaluation toolkit

创建workspace

解压完毕后,正式开始配置,第一步是创建workspace。何为workspace?借用VOT官方文档的描述:

A workspace is a dedicated directory, separate from the toolkit directory, where experiment-specific results are stored. The directory contains several special subdirectories that contain sequence data, per-tracker raw results, report documents, and cached data.

意思就是,workspace是一个独立于vot-toolkit工具包的空间,这个空间用于搭建具体实验所需的环境并储存实验结果,也就是说我们跑算法是在workspace里完成的,而非vot-toolkit。这样做的好处在于:vot工具包不会被外来的文件弄乱,让测试过程简单明了。

以ECO算法举例,首先创建一个test_workspace文件夹。workspace想创建在哪里都行,但是为了方便起见,最好将每一个算法的workspace都放在一个大文件夹里,方便管理。

打开MATLAB,工作位置切换到.\vot-toolkit,输入:
toolkit_path
这个命令是将vot_toolkit下的文件夹加入到默认的工作路径,这样在使用VOT自带函数时可以直接调用,无需切换工作路径。(顺带一提,MATLAB很多自带函数也是通过这种方式调用的)
现在点击“主页”选项卡里的“设置路径”,看看是不是多出了几个路径:
VOT2016和TraX的配置_第1张图片
每次关闭MATLAB,这些路径都会被删除,下次开启MATLAB时需要重新输入toolkit_path 方可重新使用。

把MATLAB的工作路径切换到刚刚创建的workspace文件夹里,此时里面还一片空白,在命令行窗口输入:workspace_create
VOT2016和TraX的配置_第2张图片
跟着提示输入对应的序号即可。在此说明一下,因为我已经配置好TraX,所以截图里没有出现这句:

Downloading TraX source from “https://github.com/votchallenge/trax/archive/master.zip“. Please wait…

而这里正是我和网上其他博文不一样的地方……我的配置没有那么顺利,出现如下报错:

VOT2016和TraX的配置_第3张图片

是的,下载的TraX源码无法解压。但是这个报错暂时没有影响,workspace还是搭建完毕:

VOT2016和TraX的配置_第4张图片

如果你没有如上报错,TraX完美地下载并解压,workspace搭建完毕的话,那接下来的文字就可以不用看了,直接看这篇:

目标跟踪数据集VOT2016使用教程

将自己的tracker嵌入VOT

“嵌入”这个词是我借用官方文档里的说法,tracker即为跟踪算法。因为我们需要借助VOT来得到tracker的性能参数,那么必须把tracker的输出和VOT的输入连接起来才能得到想要的结果,即所谓“接口”。

还是利用ECO算法举例:workspace里生成的tracker_ECO.m是你的tracker主体,VOT给你搭建好了环境,只要把自己的算法放进去,就可以轻松得到该算法的性能参数。但是我们是要跑别人现成的算法,就不需要自己堆代码了。在ECO的源码里已经准备好,只需要覆盖就完事了。

在tracker_ECO.m里有这么一句:

tracker_command = generate_matlab_command()

括号里面是有参数的,不同的tracker格式不完全相同,根据自己tracker的提示来就好了。但这一句肯定是要设置tracker所在文件夹的路径,必须填!

TraX的配置

重头戏来了,刚刚就是因为TraX无法正常下载导致的报错,所以我们只能手动配置。

还是先看看TraX到底是个什么东西:

TraX stands for visual Tracking eXchange, the protocol was designed to make development and testing of visual tracking algorithms simpler and faster.

首先下载TraX,链接:Reference implementation of the Visual Tracking eXchange protocol.

根据官方文档的说法,如果你的算法是基于MATLAB编写的,配置就略微复杂:你需要先编译traxserver.cpp、traxclient.cpp等文件,生成.mex文件才可以正常使用。什么是.mex?

MEX文件是一种可在matlab环境中调用的C语言(或fortran)衍生程序,mex的编译结果实际上就是一个带输出函数mexFunction 的dll文件

ok,那就开始编译吧,我们需要利用CMake进行编译。简单来说,CMake就是让你能够跨平台(VS、Xcode、MATLAB)构建工程的工具。
参考如下博客:
拜小白一步一步教你CMake3.8.2安装教程

安装完CMake后,就可以跟着官方文档进行编译:
Compiling TraX library
直接看Compiling using Visual Studio (Windows)这一节。

结束之后,打开.\trax\build(build是之前CMake时放输出文件的文件夹),打开ALL_BUILD.vcxproj,但在“生成”之前要注意,我们要编译的库文件位数必须和系统位数保持一致,我的是64位,所以必须把“活动解决平台方案”改成x64。并且活动解决方案配置要改成“release”。
如下图所示:
VOT2016和TraX的配置_第5张图片
VOT2016和TraX的配置_第6张图片

还没结束,左侧解决方案“trax”里,右键->属性->链接器->高级->目标计算机,改为”MachineX64 (/MACHINE:X64)”
注意,只有trax开头的那几项需要这么做。
VOT2016和TraX的配置_第7张图片

之后,将左侧解决方案“trax”的ALL_BUILD选中,之后菜单栏选择生成->生成ALL_BUILD,结果………仍然报错了:

VOT2016和TraX的配置_第8张图片

先不管这个,之后将MATLAB工作目录移到.\trax\support\matlab,在命令行窗口输入:compile_trax——

VOT2016和TraX的配置_第9张图片

非常神奇,MEX通过了,我也不知道是怎么回事。

对了,之前如果你没有把“活动解决平台方案”改成x64。并且活动解决方案配置要改成“release”的话,会出现这样的报错:

VOT2016和TraX的配置_第10张图片

所以一定要记得改!

测试

在正式测试之前,还有一步:

在.\vot-toolkit\utilities里有一个initialize_native.m,打开它。第14行:

trax_path = get_global_variable('trax_source', fullfile(output_path, 'trax'));

把它注释掉,换成:

trax_path='./trax';

引号里是绝对路径,一直到trax所在文件夹为止。这个变量是指向TraX的路径,因为无法正常下载,所以只能根据前面的步骤编译好TraX后,将trax_path这个变量改成你指向的位置才行。

把MATLAB工作目录移到你的workspace,输入run_test,先看看能不能正常运行:

VOT2016和TraX的配置_第11张图片

如果可以,会显示图片的。之后就可以输入run_experiment 跑整个测试集了,时间会比较长,要耐心。


ok,到这里已经完成了VOT和TraX的配置,如果你没有出现上述的报错,那恭喜你不用像我这样折腾;如果你和我一样,那么希望我的文章可以帮到你。

附:链接

  1. VOT toolkit文档
  2. TraX library文档

你可能感兴趣的:(VOT,单目标跟踪,TraX)