您的位置:首页 > 其它

Mxnet学习系列2----如何制作image.rec(新版本)

2016-10-26 17:40 295 查看
看过我Mxnet学习系列1的同学,肯定有些疑惑,这个问题已经讲过了怎么还讲?对于这个问题我也很无奈。上篇博客已经是很久以前写的了,Mxnet的更新还是很快的,没办法只能在写一篇博客。

先说一下新版本(2016/10/26)较老版本的变化在于将老版本中的make_list.py和im2rec.py两个文件的功能合并到im2rec.py一个文件中去了,使用参数--list=True(make_list),默认是--list=False(im2rec.py).

OK!下面简单的说一下如何使用im2rec.py制作自己的数据。使用im2rec.py建议先看一下Mxnet学习系列0

1、下载lfw,解压

 http://pan.baidu.com/s/1eRZomxO

2、制作image_list,让这个折腾里一天,原来是im2rec.py的源码错了,我已经修改,可从此处下载:https://github.com/sunshineInmoon/mxnet/tree/master/tools

定位im2rec.py路径,我的在E:\Mxnet\mxnet\tools,

执行命令python im2rec.py --list=True --exts .jpg --exts .jpeg(也可以是--exts=[.jpg,.jpeg]或者--exts=.jpg
--exts=.jpeg) 

--recursive=True E:\lfw\imge E:\lfw\    

执行后屏幕会输出:

 


我们会在E:\lfw文件夹下发现多了三个文件imge_train.lst, imge_test.lst, imge_val.lst.这三个文件分别代表训练数据,测试数据,验证数据。
通过学习源码,了解了几个特别参数的作用和原理,这里给大家讲一讲:
Chunk----是把数据分成几块,每一个数据块都能单独生成各自的
train.lst,test.lst,
        Val.lst三个文件
N = len(image_list)
chunk_size = (N + args.chunks - 1) / args.chunks #计算每个块的大小
for i in xrange(args.chunks):#对于每一个块分别计算
chunk = image_list[i * chunk_size:(i + 1) * chunk_size]
if args.chunks > 1:
str_chunk = '_%d' % i
else:
str_chunk = ''
sep = int(chunk_size * args.train_ratio)
sep_test = int(chunk_size * args.test_ratio)
write_list(args.prefix + str_chunk + '_test.lst', chunk[:sep_test])
write_list(args.prefix + str_chunk + '_train.lst', chunk[sep_test:sep_test + sep])
write_list(args.prefix + str_chunk + '_val.lst', chunk[sep_test + sep:])
通过上面的源码我们可以看到每一个块的数据按照顺序分层test,train,val三部分比如1,2,3,4,5,6,7,8,9为数据,test_ratio=0.1,train_ratio=0.7,则test=[1],

train=[2,3,4,5,6,7,8],val=[9];

 

3、将image_list转换成image.rec

真是一波未平一波又起,这一步又出错了。感觉原来挺顺利的,不知为什么新版本这么多问题,还好已经解决了。

如果我们直接使用im2rec.py
在windows会报错,如下:

 


网上的朋友说是multiprocessing不兼容,我已经改成im2rec_Windows.py,OK!

也可以将im2rec.cc
编译成im2rec.exe,也能成功。在此强烈建议使用im2rec.exe,因为im2rec_Windows.py,不保证百分之百正确,有待验证。需要注意的是im2rec_Windows.py
和 im2rec.exe的参数格式不同

Im2rec.exe E:\lfw\image_train.lst E:\lfw image.rec

Im2rec_Windows.py E:\lfw\image E:\lfw 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: