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

本文详细介绍了如何使用MXNet的im2rec.py工具生成lst和recidx文件,适用于任意数量的标签,包括自定义lst文件的创建过程和recidx文件的生成方法。此外,还提供了创建训练和验证集lst文件的代码示例,以及如何处理语义分割的标签。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

 

 

### 使用 `im2rec` 工具及其路径 为了使用 `im2rec.py` 文件来处理图像并生成 `.rec` 和 `.idx` 数据文件,需先定位该脚本的位置。通常情况下,此工具位于 MXNet 安装目录下的 `tools` 子文件夹内,例如 `/home/username/mxnet/tools/im2rec.py`[^1]。 一旦找到了 `im2rec.py` 的确切位置,则可以通过命令行界面执行它以创建所需的数据集。具体来说,可以采用如下方式调用: ```bash python /path/to/im2rec.py --list --recursive --no-shuffle mydata ../mydata ``` 上述命令中的参数解释如下: - `--list`: 表明当前操作是为了生成列表文件(即 .lst 文件),其作用在于记录每张图片对应的 ID、类别以及文件名称等信息[^3]。 - `--recursive`: 启用递归遍历指定根目录内的子文件夹,从而收集所有符合条件的图像资源。 - `--no-shuffle`: 不打乱样本顺序;如果希望随机化排列则可省略此项。 - `mydata`: 输出文件名前缀,后续会据此形成实际的目标文件。 - `../mydata`: 图像源所在的基础路径。 另外一种场景是在已有的 .lst 文件基础上进一步构建二进制格式存储形式——`.rec` 及索引文件 `.idx`。此时应按照下面的形式发出请求: ```bash python /path/to/im2rec.py mydata.lst --encoding='.jpg' --quality=95 ./output_directory/ ``` 这里额外引入了一些选项用于控制编码类型及压缩质量等级,并指定了最终产物存放的具体地址[^5]。 #### 示例代码片段展示如何通过 Python 调用 im2rec.py 来准备训练所需的视觉素材集合 假设环境变量已经配置好指向 Anaconda 下特定本的 MXNet 库安装点,那么完整的 shell 命令可能看起来像是这样: ```bash python D:\anaconda\anaconda\envs\DL\Lib\site-packages\mxnet\tools\im2rec.py \ --list LIST 0516train \ --recursive RECURSIVE \ E:\signal_processing\model\Face_Transformer_main\Data0516\0516train ``` 以上实例展示了当工作区设于 Windows 平台且依赖 Conda 环境管理器时的操作方法[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值