MDNet视频目标跟踪源码运行笔记(Python 2.7版本)——Training and then testing模式

1. 论文基本信息

  • 论文标题:Learning Multi-Domain Convolutional Neural Networks for Visual Tracking
  • 论文作者:Hyeonseob Nam(Dept. of Computer Science and Engineering, POSTECH, Korea)等人
  • 论文出处:CVPR 2016
  • 在线阅读:https://arxiv.org/pdf/1510.07945v2.pdf
  • 源码链接1:https://github.com/HyeonseobNam/MDNet (MATLAB版本)
  • 源码链接2:https://github.com/HyeonseobNam/py-MDNet (Python版本)

注: 作者官方的Python代码已经于2019年4月底进行了一次更新,并且适配的环境也发生了改变。如果希望仍然按照本笔记的环境和步骤进行操作,可以在这里下载与本博客对应的老版本源码:https://download.csdn.net/download/discoverer100/11150819


2. 运行环境介绍

  • NVIDIA GTX 1070
  • Ubuntu 16.04 x64
  • CUDA 8.0.61 for Ubuntu 16.04
  • cuDNN 5.1 for CUDA 8.0
  • Python 2.7
  • PyTorch 0.2.0

3. 准备

S1. 下载MDNet官方Python源码并解压。

S2. 下载imagenet-vgg-m.mat文件,并将其存放至源码中的models目录。下载地址:http://www.vlfeat.org/matconvnet/models/imagenet-vgg-m.mat


4. 下载OTB100数据集

S1. 在这里下载OTB100训练数据集:http://cvlab.hanyang.ac.kr/tracker_benchmark/datasets.html 一共有100个视频序列(实际的视频是98个,因为有两个视频各自有两个ground-truth),每个视频独立下载。

S2. 将下载的98个视频解压,把对应的98个文件夹复制到MDNet源码的dataset/OTB目录下,复制后如下图所示:
MDNet视频目标跟踪源码运行笔记(Python 2.7版本)——Training and then testing模式_第1张图片


5. 下载VOT训练数据集

S1. 下载VOT2013、VOT2014、VOT2016数据集并整理。

  • VOT2013下载地址:http://www.votchallenge.net/vot2013/dataset.html
  • VOT2014下载地址:http://www.votchallenge.net/vot2014/dataset.html
  • VOT2016下载地址:http://www.votchallenge.net/vot2016/dataset.html

下载好之后将数据集整理好(从VOT官网下载,目前VOT的这几个数据集均没有提供打包下载,而是所有视频独立下载,并且图像和标注文件是分开的,因此下载之后需要整理)。整理的方法是:每个视频存放一个文件夹,视频画面文件与标注文件并列存放。这里以vot2013数据集为例,其内部的目录结构如下图所示:
MDNet视频目标跟踪源码运行笔记(Python 2.7版本)——Training and then testing模式_第2张图片

S2. 整理好后,将上述三个数据集文件夹分别命名为vot2013vot2014vot2016(字母是小写的),并将它们存放到源码中的dataset目录下,与源码自带的OTB文件夹并列存放,如下图所示:
MDNet视频目标跟踪源码运行笔记(Python 2.7版本)——Training and then testing模式_第3张图片


5. Training

S1. 进入到源码的pretrain目录中,在终端中逐行运行如下命令(请确保当前的Python版本为2.7):

python prepro_data.py
python train_mdnet.py

在运行上述第二行命令时,需要大约等待几分钟时间就可以看到如下输出,如下图所示:
MDNet视频目标跟踪源码运行笔记(Python 2.7版本)——Training and then testing模式_第4张图片
S2. 训练完毕后,在源码的models目录下会生成一个mdnet_vot-otb_new.pth网络文件,如下图所示:
MDNet视频目标跟踪源码运行笔记(Python 2.7版本)——Training and then testing模式_第5张图片


6. Testing

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):
MDNet视频目标跟踪源码运行笔记(Python 2.7版本)——Training and then testing模式_第6张图片


7. 可能出现的问题及解决方法

问题 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')

增加代码后的run_tracker.py文件如下图所示:
MDNet视频目标跟踪源码运行笔记(Python 2.7版本)——Training and then testing模式_第7张图片

S5. 重新运行跟踪源码即可。

你可能感兴趣的:(视频目标跟踪(Visual,tracking),深度学习(Deep,learning),Python,PyTorch,数字图像处理,模式识别与深度学习)