SSD算法的MXNet实现
2017-10-12 20:46
525 查看
前段时间看到一个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项目
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[/code]
拉取下来的项目默认名称为mxnet-ssd
2.2 下载训练好的ssd模型
下载地址
下载成功后,把.params文件和.json文件放在项目的model文件夹下,如下图:
2.3 运行democd /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[/code]
解压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-ssd的tools文件夹下,然后运行: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框架的SSD算法代码介绍(二):train_net.py
- MXNet框架的SSD算法代码介绍(三):symbol_factory.py
- MXNet框架的SSD算法代码介绍(四):symbol_builder.py
- 推荐算法学习2-MXNET 实现movielen 融合个性化推荐
- 可变卷积(Deformable ConvNets)算法的MXNet实现
- MXNet框架的SSD算法代码介绍(六):metric.py
- 算法导论第二十五章-所有结点对的最短路径问题-Cpp代码实现
- 十三种基于直方图的图像全局二值化算法原理、实现、代码及效果。
- 数据结构与算法之拓扑排序Java实现
- 深度学习算法实践5---线性回归算法实现
- 【数据结构与算法】(一) c 语言实现数组的简单操作
- 基于HSV色彩空间变换的阴影检测算法——MATLAB实现
- 白话经典算法系列之一 冒泡排序的三种实现
- LRU(近期最少使用算法)C++实现源码
- JAVA实现珠玑算法
- 国密SM2非对称算法与实现
- 一种可实时处理 O(1)复杂度图像去雾算法的实现。
- 算法入门->插入排序->C/C++ 语言实现
- 数据算法之二叉树插入(BinaryTreeL Insert)的Java实现
- php实现统计二进制中1的个数算法示例