mxnet静态版 创建rec idx lst文件教程

mxnet灵活的创建rec lst idx教程

mxnet version >= 1.3

'''
MXNet lst rec idx 文件生成 [适合任意的标签数量,自定义生成最灵活合适]
1. lst文件自定义创建,格式: index label_1 label_n image_abs_path_name; 
                eg: 0 2 3 /mnt/data/my.jpg [label需要从0开始]

2. rec idx文件创建,使用mxnet/tools/im2rec.py ,命令行执行 python im2rec.py lst_path image_data_root --pack-label
                eg: python im2rec.py /mnt/data/train.lst /mnt/data/image --pack-label  生成train.rec train.idx
val.lst val.rec val.idx 同理;
'''

1. 创建lst文件,无论分类,还是目标检测都可以使用 多标签

code:

def create_lst_train_val_file(img_root_path, train_lst_file_save_path, val_lst_file_save_path):
    '''
    :param img_root_path:  所有图片均放在一个文件夹;若分开放在不同的文件夹,只需写入相对路径即可
    :param train_lst_file_save_path: 
    :param val_lst_file_save_path:
    :return:  创建人脸-gender-age训练测试集lst文件, 区分 trian/val = 4:1
    '''
    name_list = [f for f in os.listdir(img_root_path) if f.endswith('jpg')]
    random.shuffle(name_list)
    num = len(name_list)
    # trian.lst
    with open(train_lst_file_save_path, 'w+') as f:
        for i, img_name in enumerate(name_list[:int(num*0.8)]):
            lis = img_name.split('_')
            age, gender = lis[0], lis[1]
            f.write(str(i) + '\t' +
                    str(1-int(gender)) + '\t' + age + '\t' +
                    img_name + '\n')
    f.close()
    # val.lst
    with open(val_lst_file_save_path, 'w+') as f:
        for i, img_name in enumerate(name_list[int(num*0.8):]):
            lis = img_name.split('_')
            # 要求 age需要在[1,100]之间,大于100的,网络会处理成100;gender需要male=1,female=0;而数据集正相反
            age, gender = lis[0], lis[1]
            f.write(str(i) + '\t' +
                    str(1-int(gender)) + '\t' + age + '\t' +
                    img_name + '\n')
    f.close()
    return

2. 调用 im2rec.py 生成train.rec train.idx / val.rec val.idx [按照教程即可]

 

#########################################

后续补充如何写入语义分割的标签; 但是还是觉得pytorch好用,我也会用tensorflow的语义分割标签,暂时不会mxnet的语义分割标签  后续继续更新 mxnet的教程,主要是看 官方接口API,model.fit()等。 gulon基本上和pytorch很接近

#########################################

mxnet symbol 语义分割标签制作:

制作lst文件,格式:index label_img_name image_name

自定义数据读取类,继承自mxnet.io.DataIter

可参考代码链接:https://github.com/gengyanlei/MXNet-Deep-Learning-in-Action/blob/master/chapter10-segmentation/data/voc.py

 

 

 

你可能感兴趣的:(mxnet)