给实验室VOT打杂,在跑MDNet
提出这玩意的Paper是这篇《Learning Multi-Domain Convolutional Neural Networks for Visual Tracking》1510.07945
MATLAB和花式配置Mex
环境:Win10 Pro + MATLAB 2015b; OS X 10.11 + MATLAB 2015b + Xcode 7.3; Ubuntu Deskt5p 14.04.4 + CUDA 7.5 + MATLAB 2015b
三个平台下MATLAB安装过程非常简单,只要注意Windows下使用standalone安装。
MDNet需要用到MATLAB下的编译器Mex,而Mex的配置略微复(dan)杂(teng)。下面是各种平台下为Mex安装C/C++编译器的方式。
Windows下配置mex
Windows下的C/C++编译器是MinGW。但是直接安装的MinGW并不可以用于MATLAB,需要下载MATLAB Support for the MinGW-w64 C/C++ Compiler from TDM-GCC,这里有一个下载好的mingw.mlpkginstall(下载和安装都需要Mathwork的账号,注册一个即可)。
在MATLAB中打开刚刚下载的文件,按照提示一步一步继续,注意第一步需要取消一个默认选项。安装完成后直接使用mex -setup
检查安装。
以及有说法是最好先安装Windows SDK,去MS官网搜索对应windows版本的SDK安装,下载过程比较慢。
Mac下配置mex
Mac下安装Xcode就携带了所需的SDK和compiler,但是MATLAB并不能自动关联Xcode,因此需要手动修改。在这个教程下载需要的文件包xcode7_mexopts.zip,解压后有4个xml文件用于替换。
在MATLAB中
1 | cd( prefdir ); |
如果有”mex_”开头的.xml文件就先删掉。接下来用Terminal操作。
1 | cd /Applications/MATLAB_R2015b.app/bin/maci64/mexopts/ |
重启MATLAB,mex -setup
检查是否已经配置完毕。
Linux下安装mex
装好CUDA7.5和MATLAB_R2015b后,虽然提示还要安装编译器,但是运行mex -setup
后却提示已经配置好编译器了……迷
因为这个有GPU所以接下来的东西都在Ubuntu上跑了。
顺带一提在新的Ubuntu 16.04 LTS上装R2015b的话,打开运行会立刻崩,提示“MATLAB has encountered an internal problem and needs to close”。这时候去terminal里sudo apt-get install matlab-support
,然后可以看到说这个电脑上有旧版本的gcc,会产生冲突,问是否rename,选Yes。安装完成后应该就不会再崩了。
MatConvNet
MDNet工程里自带1.0 btea10版本的MatConvNet。
因为现在官网已经到了beta19版本,所以有些设置不太一样,不过基本可以按照官网来。
1 | cd <MatConvNet> |
编译的时候,因为R2015b对应的CUDA应该是7.0版本,实验室使用了7.5,所以需要nvcc
1 | vl_compilenn('enableGpu', true, ... |
编译完成后
1 | run <MatConvNet>/matlab/vl_setupnn |
因为beta10还没有vl_testnn所以就不用test了。
MDNet
Readme上有个地方写的不太显眼,要先
1 | run setup_mdnet |
添加一些目录,然后可以先运行一下demo:
1 | run tracking/demo_tracking |
但是实际过程中经常发现提示找不到其他文件里的函数(虽然第一步已经添加了),于是把所有文件都放到同一个文件夹后就可以运行了。
如果提示数据集有问题的话,建议查看一下路径、所有者、所属组和权限,基本都可以解决问题。
OTB数据集
下OTB数据集还挺难受的……手动搞了个脚本,建议使用proxychains-ng。
TB-50 Sequences
The rest of TB-100 Sequences
下完了用文本编辑器做一下replace all还可以当list.txt用(
ImageNet数据集
ImageNet的BoundingBox是以xml方式存放的,所以写了一个xml转成train.txt的小程序放在github上
戳我
对于2013的数据,因为是分两层文件夹存放的,所以使用的时候先在全局变量那里补一层。以及最好写一个脚本,脚本也放到Github项目里了。(放的位置比较奇怪所以更新一下吧hhh)
以及在Ubuntu下编译运行不能过……所以最后把xml下载到Mac上跑了一圈就过了www