MXNet系统上ilsvrc12数据集的制作与inception-bn网络的训练

原创 2016年06月01日 11:05:33

MXNet系统推荐使用Image RecordIO数据格式(简称rec)的数据集进行训练,系统提供了MNIST和Cifar10两种数据集的Image RecordIO格式数据,但是其他数据集没有提供rec格式的数据集,所以我们想要使用其他数据集的话,需要学会制作其对应的rec格式数据,下面就来介绍imagenet的ilsvrc12数据集的rec格式的训练数据制作过程与其用inception-bn网络训练使用的过程。

首先附上官网教程的链接:http://mxnet.dmlc.ml/en/latest/packages/python/io.html,(其中红色的Python改为python,csdn会自动给python这个字眼增加跳转链接,所以变成这个形式了)大家可以参考一下。


一、制作ilsvrc12数据集


1、首先需要下载ilsvrc12数据集:

下载链接为:http://www.image-net.org/challenges/LSVRC/2012/nnoupb/ILSVRC2012_img_train.tar

linux上可使用命令下载:

wget http://www.image-net.org/challenges/LSVRC/2012/nnoupb/ILSVRC2012_img_train.tar

该文件总大小有147G左右,当时放服务器下载,花了一周左右的时间,ilsvrc12中有1000类的图片数据

解压后其中包含:dirilsvrc2012train和dirilsvrc2012val两个文件夹,我们将利用它们分别制作训练集数据和测试集数据。前者包含1000个文件夹,分别对应1000个类,其中总共有1281167张训练图片,后者包含50000张测试图片。

2、制作ilsvrc12训练集数据

(1)首先制作image list,其格式为:

integer_image_index \t label_index \t path_to_image

interger_image是指图片的序列号,label_index是指图片对应的标签号,即所属的类,path_to_image是指图片存放的路径

我们可以使用tools文件夹下的make_list.py脚本来创建这个list,首先进入mxnet根目录,cd mxnet,然后使用指令:

sudo python tools/make_list.py /home/share/data/dirilsvrc2012train ./data/ilsvrc12/train --recursive=True
其中,

/home/share/data/dirilsvrc2012train:是指ilsvrc12训练图片存放的路径

/data/ilsvrc12/train:是指生成的list文件的名字,即会生成train.lst文件,前面加上路径可以指定这个lst文件生成的位置,使用前应该提前创建好./data/ilsvrc12这个文件夹。

--recursive=True:是指图片文件都是存放在指定类的文件夹下,ilsvrc12中的有1000个文件夹,即1000个类,每个文件夹下存放着相应类的图片,例如,文件夹如下:



其中文件夹n01440764下的内容为该类的图片:




执行这条命令后:




在./data/ilsvrc12文件夹下会生成train.lst文件,用head命令查看train.lst的前二十条内容:



(2)利用image list制作rec格式数据,即利用train.lst制作train.rec

bin/im2rec data/ilsvrc12/train.lst /home/share/data/dirilsvrc2012train/ data/ilsvrc12/train.rec resize=227

其中,

data/ilsvrc12/train.lst:是指刚刚生成的train.lst文件

/home/share/data/dirilsvrc2012train/:是指训练数据的路径(最后面的斜杠/千万不要漏了,否则路径不完整,会出现找不到图片的错误)

data/ilsvrc12/train.rec:是指要在data/ilsvrc12下生成train.rec文件

resize=227:是指要将原始图片调整为227*227大小

该指令执行结果如下:


因为图片数量比较大,所以这个执行过程比较长,当时跑了12多小时,这个需要耐心等待,可以使用nohup命令让它在后台执行

执行完后查看data/ilsvrc12这个文件夹,ls data/ilsvrc12,可以发现该文件夹下多了个train.rec文件,大小为20多G

这样train.rec文件就生成了,总体流程是先利用tools/make_list.py生成train.lst文件,然后再利用bin/im2rec可执行程序和train.lst文件生成train.rec文件,就大功告成。

3、制作ilsvrc12测试集数据

与制作训练集数据的流程类似,总体流程是先利用tools/make_list.py生成val.lst文件,然后再利用bin/im2rec可执行程序和val.lst文件生成val.rec文件。

下面直接给出执行的指令和运行结果:

(1)制作val.lst

python tools/make_list.py /home/share/data/dirilsvrc2012val data/ilsvrc12val --recursive=True

查看val.lst的前二十条内容,因为是测试集,所以图片没有对应的标签,即都为0


(2)制作val.rec

bin/im2rec data/ilsvrc12/val.lst /home/share/data/dirilsvrc2012val/ data/ilsvrc12/val.rec resize=227
结果如下:



此时data/ilsvrc12文件夹下增加了val.rec文件,ls data/ilsvrc12

至此,训练集和测试集的数据都弄好了,此时data/ilsvrc12下有四个文件train.lst、train.rec、val.lst、val.rec。



二、利用ilsvrc12数据集训练inception-bn网络

具体命令可以查看example/image-classification/README.md文件:

  python example/image-classification/train_imagenet.py --batch-size 144 --lr 0.05 --lr-factor .94 --gpus 0,1 --num-epoch 60 --network inception-bn --data-dir data/ilsvrc12/

其中--gpus 0,1参数是指本次使用两个GPU进行训练,因为我这个服务器上有两台k40显卡,所以可以使用两个gpu,如果大家只要一个gpu的话,则参数改为--gpus 0,根据自己的服务器情况而定;--network inception-bn是指此次使用inception-bn网络进行训练,--data-dir data/ilsvrc12/是指训练集和数据集的存放路径,也就是在第一个步骤中生成的数据。执行结果如下:


这个训练过程也是比较长,需要大家耐心等待。

教程至此结束,大家可以试着也做做ilsvrc12的数据集并训练inception-bn网络,当然也可以制作其他数据集和训练其他网络,最近在着手研究MXNet,欢迎大家共同交流。


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Mxnet学习系列1----制作自己的数据

Mxnet是由国内大牛写的一个深度学习框架,听很多使用过的大神说,效果不错!速度比Caffe快,占用内存也比Caffe小,所以也打算玩玩!昨天成功调通了minist跑了下,确实挺快的。今天制作自己的数...

caffe学习笔记12 -- R-CNN detection

这是caffe文档中Notebook Examples的倒数第二个例子,链接地址http://nbviewer.jupyter.org/github/BVLC/caffe/blob/master/ex...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

caffe学习笔记(三)ImageNet实例

个人认为,相对于MNIST和CIFAR-10来说,ImageNet实例或许是caffe中最具有学习价值的实例。通过该实例的学习,你可以用caffe在自己的数据集上搭建自己的模型。当然,如果你没有那么多...

caffe学习笔记7--Image Classification and Filter Visualization

这是caffe文档中Notebook Examples的第一篇,链接地址http://nbviewer.jupyter.org/github/BVLC/caffe/blob/master/exampl...

【Caffe】训练ImageNet模型

Caffe训练ImageNet使用的是NIPS 2012 paper论文的算法。   1、准备数据。 假设已经下载好数据集和验证集,存储路径为: /path/to/imagenet/train...
  • pirage
  • pirage
  • 2013-12-25 13:41
  • 61932

我对C++指针的困惑……

C++指针问题

谷歌叫阵WINTEL阵营:云计算挑起两个时代战争

http://tech.sina.com.cn/i/2008-05-21/03382206881.shtml谷歌叫阵WINTEL阵营:云计算挑起两个时代战争http://www.sina.com.cn...

深度学习Imagenet caffe AlexNet 实验步骤

1       论文: ImageNet Classification with Deep Convolutional NeuralNetworks 2      &...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)