音ノ木坂学院

叶え!みんなの夢――

0%

MDNet样例运行

给实验室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
2
3
4
cd /Applications/MATLAB_R2015b.app/bin/maci64/mexopts/
sudo mkdir mexoptsContentsOLD
sudo mv *.xml mexoptsContentsOLD/
sudo cp %DownloadPath%/xcode7_mexopts/*.xml .

重启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
2
cd <MatConvNet>
addpath matlab

编译的时候,因为R2015b对应的CUDA应该是7.0版本,实验室使用了7.5,所以需要nvcc

1
2
3
vl_compilenn('enableGpu', true, ...
'cudaRoot', '%cudaPath%/CUDA-7.0', ...
'cudaMethod', 'nvcc')

编译完成后

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