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

来源:互联网 发布:bat转换成exe 知乎 编辑:程序博客网 时间:2024/05/22 16:02

     Mxnet是由国内大牛写的一个深度学习框架,听很多使用过的大神说,效果不错!速度比Caffe快,占用内存也比Caffe小,所以也打算玩玩!昨天成功调通了minist跑了下,确实挺快的。今天制作自己的数据,其实挺简单的,不过刚开始,走了不少弯路!特写下此篇博客与大家分享!

Mxnet:http://mxnet.readthedocs.org/en/latest/

Data Loading API:https://mxnet.readthedocs.org/en/latest/python/io.html#module-mxnet.io

第一步:制作image list

下载数据后,我们首先要制作一个image.lst文件,文件里的内容格式如:

integer_image_index \t label_index \t path_to_image
一个简单的实例如下:

    肯定有人会说,难道我们要手动一行一行的输入吗?别担心,Mxnet已经给我们提供了一个脚本来完成这个任务。我们可以在mxnet-master->tools 文件夹中找到一个make_list.py脚本,利用他就可以生成这个文件了。下面我们打开这个脚本看看,

def main():    parser = argparse.ArgumentParser(        formatter_class=argparse.ArgumentDefaultsHelpFormatter,        description='Make image list files that are\        required by im2rec')    parser.add_argument('root', help='path to folder that contain images.')    parser.add_argument('prefix', help='prefix of output list files.')    parser.add_argument('--exts', type=list, default=['.jpeg','.jpg'],        help='list of acceptable image extensions.')    parser.add_argument('--chunks', type=int, default=1, help='number of chunks.')    parser.add_argument('--train_ratio', type=float, default=1.0,        help='Percent of images to use for training.')    parser.add_argument('--recursive', type=bool, default=False,        help='If true recursively walk through subdirs and assign an unique label\        to images in each folder. Otherwise only include images in the root folder\        and give them label 0.')    args = parser.parse_args()        make_list(args.prefix, args.root, args.recursive,        args.exts, args.chunks, args.train_ratio)
如果不想了解细节,我们只要看看需要的参数就可以了

root  :图片保存路径(如F:\lfw\  注意最后一个斜杠不能省略

prefix:输出文件的名字,至于后缀我们不用关心,默认是.lst

-----------------------------------------------------------------------------------------

--exts :我们需要搜索的图片格式(如:.jpg)

--chunks: 没太弄明白这个参数的作用(???以后补充)

--train_ration :这个脚本可以把数据的一本转换成训练集,这个参数设置的就比例(默认1.0)

--recursive    :我们下载的数据库,一般都是把一个人的图片放在一个文件夹里,因此数据库一般都是有很多子文件夹,如果我们想访问这样的放在子文件夹里的图片,这个参数必须设置成True

注意:使用以上四个参数是要注意格式 --exts = .jpg

<span style="font-size:18px;">python make_list.py --exts=.jpg --recursive=True F:\lfw\ F:\lfw\image</span>
执行完这个命令会生成以image.lst文件,这就是我们需要的文件!

修改于2016/10/26 

如果你使用上面的命令发现使用--exts参数后,并不能输出正确的结果,

一种可能是你正在使用新版本Mxnet,这样你可以看看我的Mxnet学习系列2这篇博客。

另一种可能是你的make_list.py源码问题,具体怎样修改,可以参考我的Mxnet学习系列0中问题1

第二步:制作二进制文件

Mxnet给我提供了im2rec.cpp文件,使用这个工具必须首先编译im2rec.cpp成im2rec.exe。

有了im2rec.exe后就可以制作我们数据了

一个简单的命令:

<span style="font-size:18px;">im2rec image.lst image_root_dir output.bin resize=256</span>
实例:

<span style="font-size:18px;">im2rec F:\lfw\image_list.lst F:\lfw\ F:\lfw\output_lfw.rec resize=128</span>
resize 是个可选参数,还有几个可选参数,具体的可以看im2rec.cpp.


0 0
原创粉丝点击