生成数据集train/val/test.txt文件列表

 生成数据集train/val/test.txt文件列表(前提是train/val/test数据图片是已经分好的)

import numpy as np

import os

 

base = './dataset/road/'

 

with open('dataset/road/labels.txt', 'w') as f:

    for i in range(20):

        f.write(str(i)+'\n')

 

imgs = os.listdir(base+'train_pic/')

np.random.seed(42)

np.random.shuffle(imgs)

val_num = int(0.1 * len(imgs))

 

with open(os.path.join('dataset/road/train_list.txt'), 'w') as f:

    for pt in imgs[:-val_num]:

        img = 'train_pic/'+pt

        ann = 'train_tag/'+pt.replace('.jpg', '.png')

        info = img + ' ' + ann + '\n'

        crop_data(os.path.join(base,img), os.path.join(base,img))

        crop_data(os.path.join(base,ann), os.path.join(base,ann))

        f.write(info)

 

with open(os.path.join('dataset/road/val_list.txt'), 'w') as f:

    for pt in imgs[-val_num:]:

        img = 'train_pic/'+pt

        ann = 'train_tag/'+pt.replace('.jpg', '.png')

        info = img + ' ' + ann + '\n'

        crop_data(os.path.join(base,img), os.path.join(base,img))

        crop_data(os.path.join(base,ann), os.path.join(base,ann))

        f.write(info)

 

with open(os.path.join('dataset/road/test_list.txt'), 'w') as f:

    for pt in os.listdir(base+'test_pic/'):

        img = 'test_pic/'+pt

        ann = 'test_tag/'+pt.replace('.jpg', '.png')

        info = img + ' ' + ann + '\n'

        f.write(info)

MiniImageNet数据集通常用于小样本学习任务,比如迁移学习或元学习。将这个数据集划分为训练、验证和测试三个部分,并将其转化为JSON格式,可以使用Python的`json`模块以及一些基本的数据处理操作。以下是一个简化的示例,假设你已经有了原始的数据目录结构: ```python import os import json # 假设data_dir是包含miniImageNet的数据根目录,里面有个images和categories子目录 data_dir = 'path/to/miniImageNet' def load_data(data_dir): base_classes = os.listdir(os.path.join(data_dir, 'images')) # 获取所有类别 train_val_test_split = [50, 10, 40] # 划分比例:train:val:test base_json = { 'train': [], 'val': [], 'test': [] } for split, num_classes in enumerate(train_val_test_split): class_list = random.sample(base_classes, num_classes) # 随机选择类别 for cls in class_list: images_path = os.path.join(data_dir, 'images', cls) img_files = os.listdir(images_path) samples = [{'image': f'{cls}/{img}', 'label': split} for img in img_files] base_json[f'train{split+1}'].extend(samples) with open('base.json', 'w') as f: json.dump(base_json, f) val_json = {k: v[:num_classes] for k, v in base_json.items()} # 提取前num_classes到val test_json = {k: v[num_classes:] for k, v in base_json.items()} # 提取剩余的作为test with open('val.json', 'w') as f: json.dump(val_json, f) with open('test.json', 'w') as f: json.dump(test_json, f) # 注意这只是一个基本示例,实际应用中可能需要更复杂的逻辑处理,例如保证每个类别都有足够的图片,随机性控制等 ``` 运行这段代码后,你会得到`base.json`, `val.json`, 和 `test.json` 文件,其中包含了对应的数据划分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值