mxnet制作.lst和.rec文件

mxnet读数据的其中一种方式就是读取.rec文件,实际上.rec文件的制作流程并不复杂,分为两个步骤:

1.制作.lst文件,这里是一种灵活度比较高的方法

mxnet制作.lst和.rec文件_第1张图片

       上图是一个简单的lst文件,第一列是index列,第二列是标签列,第三列是图片目录列,中间的空隙是制表符'\t'。其中标签列可能是多标签也可能是一个标签,在制作rec文件的时候会略有不同,图片的目录列我认为最好是写一个比较完整的路径,这样在生成rec文件的时候只需要写一个根目录即可,不用再精确到图片的位置。

       制作lst文件就像写一个txt文件一样,这里做一个示例,就写一个像上图一样的lst

test_lst = r'/users/pywin/data/test.lst'
with open(test_lst, 'w') as f:
    for idx in range(10):
        f.writelines(str(idx) + '\t' + str(idx+1) + '\t' + 'image{}.jpg'.format(idx) + '\n')

2.制作.rec文件

制作rec文件就简单多了,运行一下run.sh文件即可

recpath=/users/pywin/.conda/envs/pywin/lib/python3.6/site-packages/mxnet/tools/im2rec.py
lst=/users/pywin/data/test.lst
imgpath=/users/pywin
#多标签方法,这里注释了,如果需要生成多标签就把单标签的命令注释掉
#python "$recpath" --num-thread=4 --pack-label "$lst" "$imgpath"
#单标签方法
python "$recpath" --num-thread=4  "$lst" "$imgpath"

写好run.sh文件后,在命令行执行bash run.sh即可,就会在当前目录生成包含.rec  .idx文件。

recpath可以使用下面命令找到:

import mxnet as mx
import os
print(os.path.join(mx.__path__[0], 'tools/im2rec.py'))

 

你可能感兴趣的:(MXNET)