注: 作者官方的Python代码已经于2019年4月底进行了一次更新,并且适配的环境也发生了改变。如果希望仍然按照本笔记的环境和步骤进行操作,可以在这里下载与本博客对应的老版本源码:https://download.csdn.net/download/discoverer100/11150819
S1. 下载MDNet官方Python源码并解压。
S2. 下载imagenet-vgg-m.mat
文件,并将其存放至源码中的models
目录。下载地址:http://www.vlfeat.org/matconvnet/models/imagenet-vgg-m.mat
S1. 在这里下载OTB100训练数据集:http://cvlab.hanyang.ac.kr/tracker_benchmark/datasets.html 一共有100个视频序列(实际的视频是98个,因为有两个视频各自有两个ground-truth),每个视频独立下载。
S2. 将下载的98个视频解压,把对应的98个文件夹复制到MDNet源码的dataset/OTB
目录下,复制后如下图所示:
S1. 下载VOT2013、VOT2014、VOT2016数据集并整理。
下载好之后将数据集整理好(从VOT官网下载,目前VOT的这几个数据集均没有提供打包下载,而是所有视频独立下载,并且图像和标注文件是分开的,因此下载之后需要整理)。整理的方法是:每个视频存放一个文件夹,视频画面文件与标注文件并列存放。这里以vot2013数据集为例,其内部的目录结构如下图所示:
S2. 整理好后,将上述三个数据集文件夹分别命名为vot2013
、vot2014
、vot2016
(字母是小写的),并将它们存放到源码中的dataset
目录下,与源码自带的OTB
文件夹并列存放,如下图所示:
S1. 进入到源码的pretrain
目录中,在终端中逐行运行如下命令(请确保当前的Python版本为2.7):
python prepro_data.py
python train_mdnet.py
在运行上述第二行命令时,需要大约等待几分钟时间就可以看到如下输出,如下图所示:
S2. 训练完毕后,在源码的models
目录下会生成一个mdnet_vot-otb_new.pth
网络文件,如下图所示:
S1. 打开源码tracking
目录下的options.py
文件,修改第6行代码为上述训练生成的网络文件名,然后保存,如下所示:
opts['model_path'] = '../models/mdnet_vot-otb_new.pth'
S2. 仍然在源码的tracking
目录中,在终端中运行如下命令即可运行MDNet跟踪算法(请确保当前的Python版本为2.7):
python run_tracker.py -s DragonBaby -d
大约等待几分钟,算法会开始跟踪,这里配置的是源码包自带的视频DragonBaby。运行效果如下图所示(绿色矩形框表示ground-truth,红色矩形框表示算法result):
问题 1: 找不到numpy模块,ImportError: No module named numpy
。
解决: 在自己的Python 2.7环境中安装numpy库,可以用命令conda install numpy
进行安装。
问题 2: 找不到PIL模块,ImportError: No module named PIL
。
解决: 在自己的Python 2.7环境中安装Pillow库,可以用命令pip install Pillow
进行安装。
问题 3: 找不到matplotlib模块,ImportError: No module named matplotlib.pyplot
。
解决: 在自己的Python 2.7环境中安装matplotlib库,可以用命令conda install matplotlib
进行安装。
问题 4: 找不到scipy模块,ImportError: No module named 'scipy'
。
解决: 在自己的Python 2.7环境中安装scipy库,可以用命令conda install scipy
进行安装。
问题 5: 找不到sklearn模块,ImportError: No module named sklearn.linear_model
。
解决: 在自己的Python 2.7环境中安装scikit-learn库,可以用命令conda install scikit-learn
进行安装。
问题 6: 算法运行时报错直接退出,错误信息如下:
Fontconfig warning: FcPattern object weight does not accept value [50 200)
Segmentation fault (core dumped)
解决: matplotlib不显示画面或者发生error的问题容易出现在虚拟Python环境中。如果遇到了此问题,请首先确认自己的Python 2.7环境是不是设置为agg类型的后端,逐行运行如下代码进行查看:
Python
import matplotlib
matplotlib.get_backend()
若为形如agg类型的后端,则需要将其改为TkAgg类型的后端,方法如下:
S1. 在自己的Python 2.7环境中,首先卸载已经安装的matplotlib库,可以用命令conda uninstall matplotlib
来卸载。
S2. 新建终端窗口(系统终端,非python虚拟环境下的终端),运行命令sudo apt-get install tcl-dev tk-dev python-tk
安装Tk GUI。
S3. 在自己的Python 2.7环境中,重新安装matplotlib库,可以用命令conda install matplotlib
进行安装。
S4. 打开源码tracking
目录中的run_tracker.py
文件,在第7行代码后面增加如下两行代码:
import matplotlib
matplotlib.use('TkAgg')
S5. 重新运行跟踪源码即可。