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

     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

Mxnet学习系列(1)----制作自己的数据_第1张图片

第一步:制作image list

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

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

Mxnet学习系列(1)----制作自己的数据_第2张图片

    肯定有人会说,难道我们要手动一行一行的输入吗?别担心,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

python make_list.py --exts=.jpg --recursive=True F:\lfw\ F:\lfw\image
执行完这个命令会生成以image.lst文件,这就是我们需要的文件!

第二步:制作二进制文件

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

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

一个简单的命令:

im2rec image.lst image_root_dir output.bin resize=256
实例:

im2rec F:\lfw\image_list.lst F:\lfw\ F:\lfw\output_lfw.rec resize=128
resize 是个可选参数,还有几个可选参数,具体的可以看im2rec.cpp.


你可能感兴趣的:(Mxnet学习系列(1)----制作自己的数据)