SSD算法的MXNet实现

前段时间看到一个SSD(SSD:single shot multibox detector )算法的MXNet实现,代码风格不错,特来分享。
SSD算法的介绍可以参看博客:SSD(single shot multibox detector)算法及Caffe代码详解

github地址:https://github.com/zhreshold/mxnet-ssd

接下来结合亲自实验列一下如何跑这个模型,系统:Ubuntu 16.04

1、本地安装好MXNet

参考官网:https://mxnet.incubator.apache.org/get_started/install.html
基本上按照流程敲完命令即可安装完毕,实在不想自己安装,可以用docker镜像。

2、跑demo
2.1 先拉取mxnet-ssd项目

git clone --recursive https://github.com/zhreshold/mxnet-ssd.git

拉取下来的项目默认名称为mxnet-ssd

2.2 下载训练好的ssd模型
下载地址
下载成功后,把.params文件和.json文件放在项目的model文件夹下,如下图:

SSD算法的MXNet实现_第1张图片

2.3 运行demo

cd /path/to/mxnet-ssd
python demo.py --gpu 0

3、训练模型
3.1、下载数据集
这里以pascal VOC数据集为例,先在命令行进入到你要存放数据集的文件夹,然后命令行输入:

wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar

解压

tar -xvf VOCtrainval_11-May-2012.tar
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar

这里将用VOCtrainval2007和VOCtrainval2012作为训练集(VOC2007的trainval一共有5011张图像,VOC2012的trainval一共有11540张图像,因此训练的图像一共有16551张),将VOCtest2007作为测试集(VOC2007的test一共有4952张图像,也就是测试的图像一共有4952张)。因此最后数据的存放路径大概是这样:

~/VOCdevkit/VOC2007
~/VOCdevkit/VOC2012

然后用一个链接将你存放数据的地方链接到ssd项目的data文件夹下,命令行输入:

ln -s /path/to/VOCdevkit /path/to/this_example/data/VOCdevkit

比如我将VOC数据集放在/home/data/VOCdevkit/下,ssd项目在/home/project/mxnet-ssd/下,那么就要输入:

ln -s /home/data/VOCdevkit /home/project/mxnet-ssd/data/VOCdevkit

这样在mxnet-ssd/data/文件夹下就会有这个:

这里写图片描述

最后我们要生成.lst.rec文件:
先在命令行进入mxnet-ssdtools文件夹下,然后运行:

sh prepare_pascal.sh

生成的.lst.rec文件在mxnet-ssd/data/文件夹下:

这里写图片描述

3.2、下载预训练的vgg16_reduced模型
下载地址
解压后将.params.json文件放在mxnet-ssd/model/文件夹下。

3.3、训练模型
mxnet-ssd目录下运行:

python train.py

如果你需要修改一些参数,可以在后面加上,比如:

python train.py --gpus 0,1 --batch-size 32 --lr 0.001

具体参数可以看train.py这个脚本。
贴一张正在训练的模型的输出:

这里写图片描述

你可能感兴趣的:(深度学习,计算机视觉,MXNet)