vot
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很多自带函数也是通过这种方式调用的)
现在点击“主页”选项卡里的“设置路径”,看看是不是多出了几个路径:
每次关闭MATLAB,这些路径都会被删除,下次开启MATLAB时需要重新输入toolkit_path
方可重新使用。
把MATLAB的工作路径切换到刚刚创建的workspace文件夹里,此时里面还一片空白,在命令行窗口输入:workspace_create
跟着提示输入对应的序号即可。在此说明一下,因为我已经配置好TraX,所以截图里没有出现这句:
Downloading TraX source from “https://github.com/votchallenge/trax/archive/master.zip“. Please wait…
而这里正是我和网上其他博文不一样的地方……我的配置没有那么顺利,出现如下报错:
是的,下载的TraX源码无法解压。但是这个报错暂时没有影响,workspace还是搭建完毕:
如果你没有如上报错,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”。
如下图所示:
还没结束,左侧解决方案“trax”里,右键->属性->链接器->高级->目标计算机,改为”MachineX64 (/MACHINE:X64)”
注意,只有trax开头的那几项需要这么做。
之后,将左侧解决方案“trax”的ALL_BUILD选中,之后菜单栏选择生成->生成ALL_BUILD,结果………仍然报错了:
先不管这个,之后将MATLAB工作目录移到.\trax\support\matlab,在命令行窗口输入:compile_trax
——
非常神奇,MEX通过了,我也不知道是怎么回事。
对了,之前如果你没有把“活动解决平台方案”改成x64。并且活动解决方案配置要改成“release”的话,会出现这样的报错:
所以一定要记得改!
测试
在正式测试之前,还有一步:
在.\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
,先看看能不能正常运行:
如果可以,会显示图片的。之后就可以输入run_experiment
跑整个测试集了,时间会比较长,要耐心。
ok,到这里已经完成了VOT和TraX的配置,如果你没有出现上述的报错,那恭喜你不用像我这样折腾;如果你和我一样,那么希望我的文章可以帮到你。
附:链接
- VOT toolkit文档
- TraX library文档
相关阅读
近日全球目标跟踪领域最高水平赛事VOT2018结果新鲜出炉,中国团队斩获佳绩,包揽了短时、实时、以及今年新增的长时比赛全部三项冠军
(1)TraX连接跟踪代码错误 Tracker execution interrupted: Unable to establish connection.TraX support not detected.错误使用 t
最近在做基于python的数据分析工作,引用第三方数据分析库——pandas(version 0.16)。 在做数据统计二维表转换的时候走了不少弯路,发
1 Short-term tracking challenge 1.1 测试集 60个public dataset公开序列(公测)和60个sequestered dataset隐藏序列(内测) 1.2 公
《My Prayer》Devotion ——《祈祷》中英互译 【英文
《My Prayer》 ——《祈祷》 image of Devotion https://music.163.com/#/song?id=