您的位置:首页 > 其它

利用Mxnet自带的工具,进行数据转化,读取图片文件

2015-12-11 14:54 447 查看
一、MXNet,不是直接处理原生数据比如图片之类的,而是处理的自定义的一种文件格式rec。而rec格式的文件由依赖于一个描述原生数据的列表文件格式lst。

数据集:caltech256,其中包含两个文件,一个test,一个train,每个文件里面又有很多个代表类标的文件,各个文件里存放了每一类的图片。



二.从原生数据生成lst文件

这个图像文件列表的格式如下:

integer_image_index \t label_index \t path_to_image



mxnet/tools/路径下运行make_list.py

python make_list.py /root/DATA/caltech256x256-256/train/ /root/DATA/train --recursive=True

第一个参数是图片所在的根目录

第二个参数是生成lst文件的前缀,这里我们可以把路径加进去从而保证test.lst是生成在~/data/下的。

第三个参数代表每读取一个目录,增加一个类标,因为/root/DATA/caltech256x256-256/train/文件下有很多类的文件,每个文件里面存放每类的图片。



三.从lst文件生成rec

在路径mxnet/bin/下有个文件:im2rec

直接在命令行使用这个文件就行。具体使用方法可以查看源码,这里我只举个最简单的栗子:

./im2rec /root/DATA/train.lst /root/DATA/caltech256x256-256/train/ /root/DATA/train.rec

第一个参数指明lst文件

第二个参数指明图片根目录,这样才能找到图片

第三个参数指明生成的rec文件



四.创建Data Iterator

参考mxnet/example/image-classification里面train_cifar10.py或者train_imagenet.py例子进行修改即可。

# data

def get_iterator(args, kv):

data_shape = (3, 256, 256)

train = mx.io.ImageRecordIter(

path_imgrec = args.data_dir + "train.rec",

mean_r = 123.68,

mean_g = 116.779,

mean_b = 103.939,

data_shape = data_shape,

batch_size = args.batch_size,

rand_crop = True,

rand_mirror = True,

num_parts = kv.num_workers,

part_index = kv.rank)

val = mx.io.ImageRecordIter(

path_imgrec = args.data_dir + "test.rec",

mean_r = 123.68,

mean_g = 116.779,

mean_b = 103.939,

rand_crop = False,

rand_mirror = False,

data_shape = data_shape,

batch_size = args.batch_size,

num_parts = kv.num_workers,

part_index = kv.rank)

return (train, val)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: