数据集处理

数据集的实时处理:如何实时处理你的数据集 1.背景介绍 在当今的数据驱动的世界中,数据集的实时处理已经成为了一种必要的技能。无论是在金融、电子商务、社交媒体还是物联网等领域,实时处理数据集都能帮助我们更好地理解和利用数据,从而做出更快、更准确的决策。然而,实时处理数据集并不是一件简单的事情,它需要我们理解一些核心的概念,掌握一些关键的技术,并且能够运用这些知识和技术来解决实际问题。本文将详细介 阅读详情

Cars196

import scipy.io
import os
import shutil

# 读取 cars_annos.mat 文件
mat = scipy.io.loadmat('cars/cars_annos.mat')
annotations = mat['annotations'][0]
class_names = mat['class_names'][0]

# 创建 train 和 test 目录
train_dir = 'cars/train'
test_dir = 'cars/test'
os.makedirs(train_dir, exist_ok=True)
os.makedirs(test_dir, exist_ok=True)

test_num = 0
train_num = 0
# 遍历每个 annotation
for anno in annotations:
    img_path = anno[0][0].split('/')[-1]  # car_ims/011204.jpg
    # print(img_path)
    class_id = int(anno[5][0][0])  # 获取类别ID
    is_test = int(anno[6][0][0])  # 获取是否为训练集 (0 是训练集, 1 是测试集)
    
    # 获取类别名称
    class_name = class_names[class_id - 1][0].replace(' ', '_').replace('/', '_')
    
    # 拼接新文件名 num_name
    new_class_name = f"{str(class_id).zfill(3)}_{class_name}"
    
    # 目标路径
    if not is_test:
        dst_dir = train_dir
        train_num += 1
    else:
        dst_dir = test_dir
        test_num += 1
    
    # 复制图像到目标目录
    src_img_path = os.path.join('cars/car_ims', img_path)
    dst_dir = os.path.join(dst_dir, new_class_name)
    os.makedirs(dst_dir, exist_ok=True)
    # Copying cars/car_ims/016185.jpg to cars/test/196_smart_fortwo_Convertible_2012
    print(f"Copying {src_img_path} to {dst_dir}")
    shutil.copy(src_img_path, dst_dir)

print(f"Train set: {train_num}, Test set: {test_num}")
print("Dataset split completed!")

PETs

import shutil
import os

# 训练集和测试集标签文件
train_val_file = "./annotations/trainval.txt"
test_file = "./annotations/test.txt"

# 创建训练集和测试集文件夹
processed_image_dir = "images"
train_dir = "train"
test_dir = "test"
os.makedirs(train_dir, exist_ok=True)
os.makedirs(test_dir, exist_ok=True)

# 读取训练集文件名
with open(train_val_file, 'r') as f:
    train_list = f.readlines()

# 读取测试集文件名
with open(test_file, 'r') as f:
    test_list = f.readlines()

# 处理训练集图像
for line in train_list:
    image_name = line.split()[0] + ".jpg"
    parts = image_name.split('_')
    category = "_".join(parts[:-1])
    category_dir = os.path.join(train_dir, category)
    os.makedirs(category_dir, exist_ok=True)
    src_path = os.path.join(processed_image_dir, image_name)
    dst_path = os.path.join(category_dir, image_name)
    if os.path.exists(src_path):
        shutil.copy(src_path, dst_path)
        # print(f"copy {src_path} to {dst_path}")
    else:
        print(f"Image {src_path} not found")

# 处理测试集图像
for line in test_list:
    image_name = line.split()[0] + ".jpg"
    parts = image_name.split('_')
    category = "_".join(parts[:-1])
    category_dir = os.path.join(test_dir, category)
    os.makedirs(category_dir, exist_ok=True)
    src_path = os.path.join(processed_image_dir, image_name)
    dst_path = os.path.join(category_dir, image_name)
    if os.path.exists(src_path):
        shutil.copy(src_path, dst_path)
    else:
        print(f"Image {src_path} not found")

Flowers102

随机分为train(0.8),test(0.2),并以class name命名。

import scipy.io as sio
import os

# class_names = [
    # "pink primrose", "hard-leaved pocket orchid", "canterbury bells", "sweet pea",
    # "english marigold", "tiger lily", "moon orchid", "bird of paradise", "monkshood",
    # "globe thistle", "snapdragon", "colt's foot", "king protea", "spear thistle",
    # "yellow iris", "globe-flower", "purple coneflower", "peruvian lily",
    # "balloon flower", "giant white arum lily", "fire lily", "pincushion flower",
    # "fritillary", "red ginger", "grape hyacinth", "corn poppy", "prince of wales feathers",
    # "stemless gentian", "artichoke", "sweet william", "carnation", "garden phlox",
    # "love in the mist", "mexican aster", "alpine sea holly", "ruby-lipped cattleya",
    # "cape flower", "great masterwort", "siam tulip", "lenten rose", "barbeton daisy",
    # "daffodil", "sword lily", "poinsettia", "bolero deep blue", "wallflower",
    # "marigold", "buttercup", "oxeye daisy", "common dandelion", "petunia", "wild pansy",
    # "primula", "sunflower", "pelargonium", "bishop of llandaff", "gaura", "geranium",
    # "orange dahlia", "pink-yellow dahlia?", "cautleya spicata", "japanese anemone",
    # "black-eyed susan", "silverbush", "californian poppy", "osteospermum", "spring crocus",
    # "bearded iris", "windflower", "tree poppy", "gazania", "azalea", "water lily",
    # "rose", "thorn apple", "morning glory", "passion flower", "lotus", "toad lily",
    # "anthurium", "frangipani", "clematis", "hibiscus", "columbine", "desert-rose",
    # "tree mallow", "magnolia", "cyclamen", "watercress", "canna lily", "hippeastrum",
    # "bee balm", "pink quill", "foxglove", "bougainvillea", "camellia", "mallow",
    # "mexican petunia", "bromelia", "blanket flower", "trumpet creeper", "blackberry lily"]

label2name = {'21': 'fire lily',
 '3': 'canterbury bells',
 '45': 'bolero deep blue',
 '1': 'pink primrose',
 '34': 'mexican aster',
 '27': 'prince of wales feathers',
 '7': 'moon orchid',
 '16': 'globe-flower',
 '25': 'grape hyacinth',
 '26': 'corn poppy',
 '79': 'toad lily',
 '39': 'siam tulip',
 '24': 'red ginger',
 '67': 'spring crocus',
 '35': 'alpine sea holly',
 '32': 'garden phlox',
 '10': 'globe thistle',
 '6': 'tiger lily',
 '93': 'ball moss',
 '33': 'love in the mist',
 '9': 'monkshood',
 '102': 'blackberry lily',
 '14': 'spear thistle',
 '19': 'balloon flower',
 '100': 'blanket flower',
 '13': 'king protea',
 '49': 'oxeye daisy',
 '15': 'yellow iris',
 '61': 'cautleya spicata',
 '31': 'carnation',
 '64': 'silverbush',
 '68': 'bearded iris',
 '63': 'black-eyed susan',
 '69': 'windflower',
 '62': 'japanese anemone',
 '20': 'giant white arum lily',
 '38': 'great masterwort',
 '4': 'sweet pea',
 '86': 'tree mallow',
 '101': 'trumpet creeper',
 '42': 'daffodil',
 '22': 'pincushion flower',
 '2': 'hard-leaved pocket orchid',
 '54': 'sunflower',
 '66': 'osteospermum',
 '70': 'tree poppy',
 '85': 'desert-rose',
 '99': 'bromelia',
 '87': 'magnolia',
 '5': 'english marigold',
 '92': 'bee balm',
 '28': 'stemless gentian',
 '97': 'mallow',
 '57': 'gaura',
 '40': 'lenten rose',
 '47': 'marigold',
 '59': 'orange dahlia',
 '48': 'buttercup',
 '55': 'pelargonium',
 '36': 'ruby-lipped cattleya',
 '91': 'hippeastrum',
 '29': 'artichoke',
 '71': 'gazania',
 '90': 'canna lily',
 '18': 'peruvian lily',
 '98': 'mexican petunia',
 '8': 'bird of paradise',
 '30': 'sweet william',
 '17': 'purple coneflower',
 '52': 'wild pansy',
 '84': 'columbine',
 '12': "colt's foot",
 '11': 'snapdragon',
 '96': 'camellia',
 '23': 'fritillary',
 '50': 'common dandelion',
 '44': 'poinsettia',
 '53': 'primula',
 '72': 'azalea',
 '65': 'californian poppy',
 '80': 'anthurium',
 '76': 'morning glory',
 '37': 'cape flower',
 '56': 'bishop of llandaff',
 '60': 'pink-yellow dahlia',
 '82': 'clematis',
 '58': 'geranium',
 '75': 'thorn apple',
 '41': 'barbeton daisy',
 '95': 'bougainvillea',
 '43': 'sword lily',
 '83': 'hibiscus',
 '78': 'lotus lotus',
 '88': 'cyclamen',
 '94': 'foxglove',
 '81': 'frangipani',
 '74': 'rose',
 '89': 'watercress',
 '73': 'water lily',
 '46': 'wallflower',
 '77': 'passion flower',
 '51': 'petunia'}

# print(len(label2name))
# 定义 .mat 文件的路径
mat_file_path = '/grp01/cs_hszhao/cs002u03/dataset/Flower102/imagelabels.mat'

# 加载 .mat 文件
mat_data = sio.loadmat(mat_file_path)

print(mat_data)
# 提取图像标签
image_labels = mat_data.get('labels', None)  # 使用 'labels' 作为键来访问数据

# 提取图像标签(MATLAB 数据通常是二维数组)
image_labels = image_labels[0]  # 提取为一维数组

# 输出前 10 个标签查看
print("前 10 个图像标签:", image_labels[:10])

# 输出标签信息
print(f"标签总数: {len(image_labels)}")
print(f"最小标签值: {min(image_labels)}")
print(f"最大标签值: {max(image_labels)}")
print("type: ", type(image_labels[0])) # <class 'numpy.uint8'>
# 将图像编号和标签以字典形式保存
image_label_dict = {f"image_{i+1:05d}.jpg": str(label) for i, label in enumerate(image_labels)} 
label_image_dict = {str(label): [] for label in set(image_labels)}
for img_name, label in image_label_dict.items():
    label_image_dict[label].append(img_name) # ['image_06734.jpg', 'image_06735.jpg',...]

# randomly split into train(0.8) and test(0.2) and save to file named by category name
import random
import shutil
import os
random.seed(0)

root = "/grp01/cs_hszhao/cs002u03/dataset/Flower102/jpg"
train_root = "/grp01/cs_hszhao/cs002u03/dataset/Flower102/train"
test_root = "/grp01/cs_hszhao/cs002u03/dataset/Flower102/test"

os.makedirs(train_root, exist_ok=True)
os.makedirs(test_root, exist_ok=True)

for label, images in label_image_dict.items():
    random.shuffle(images)
    train_num = int(len(images) * 0.8)
    train_images = images[:train_num]
    test_images = images[train_num:]
    train_root_perC = os.path.join(train_root, f"{label.zfill(2)}_{label2name[label].replace(' ', '_')}")
    test_root_perC = os.path.join(test_root, f"{label.zfill(2)}_{label2name[label].replace(' ', '_')}")
    os.makedirs(train_root_perC, exist_ok=True)
    os.makedirs(test_root_perC, exist_ok=True)
    for img in train_images:
        shutil.copy(os.path.join(root, img), os.path.join(train_root_perC, img))
    for img in test_images:
        shutil.copy(os.path.join(root, img), os.path.join(test_root_perC, img))



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

Caltech101

去除google background,留下101个类别。

import os
import shutil
import random
random.seed(0)

src_root = "/grp01/cs_hszhao/cs002u03/dataset/caltech-101/101_ObjectCategories"
dst_root = "/grp01/cs_hszhao/cs002u03/dataset/caltech-101/organize"

train_root = os.path.join(dst_root, "train")
test_root = os.path.join(dst_root, "test")
os.makedirs(train_root, exist_ok=True)
os.makedirs(test_root, exist_ok=True)

class_names = os.listdir(src_root)
for class_name in class_names:
    img_names = os.listdir(os.path.join(src_root, class_name))
    img_names = sorted(img_names)
    random.shuffle(img_names)
    train_length = 30
    train_paths = img_names[:train_length]
    test_paths = img_names[train_length:]
    os.makedirs(os.path.join(train_root, class_name), exist_ok=True)
    os.makedirs(os.path.join(test_root, class_name), exist_ok=True)

    for img_name in train_paths:
        src_path = os.path.join(src_root, class_name, img_name)
        dst_path = os.path.join(train_root, class_name, img_name)
        shutil.copy(src_path, dst_path)
    for img_name in test_paths:
        src_path = os.path.join(src_root, class_name, img_name)
        dst_path = os.path.join(test_root, class_name, img_name)
        shutil.copy(src_path, dst_path)

CUB

import os
import shutil

# 设置数据集路径
data_dir = "CUB_200_2011"
images_dir = os.path.join(data_dir, "images")
train_dir = os.path.join(data_dir, "train")
test_dir = os.path.join(data_dir, "test")

# 创建输出目录
os.makedirs(train_dir, exist_ok=True)
os.makedirs(test_dir, exist_ok=True)

# 读取图像文件和训练/测试分割信息
with open(os.path.join(data_dir, "images.txt"), "r") as f:
    images = [line.strip().split(" ")[1] for line in f.readlines()]

with open(os.path.join(data_dir, "train_test_split.txt"), "r") as f:
    train_test_split = [int(line.strip().split(" ")[1]) for line in f.readlines()]

# 遍历所有图像并按训练/测试分配到对应的文件夹中
for img, is_train in zip(images, train_test_split):
    source = os.path.join(images_dir, img)
    target_folder = train_dir if is_train == 1 else test_dir
    
    # 创建对应的类别文件夹
    category_folder = os.path.join(target_folder, img.split("/")[0])
    os.makedirs(category_folder, exist_ok=True)
    
    # 拷贝图像到目标文件夹
    shutil.copy(source, os.path.join(target_folder, img))

print("数据集整理完成!")

Cifar100

import os
import pickle
import numpy as np
from PIL import Image

# 定义源数据集文件路径
cifar_dir = 'cifar-100-python'     # 解压后的 CIFAR-100 数据集文件夹
train_file = os.path.join(cifar_dir, 'train')
test_file = os.path.join(cifar_dir, 'test')
meta_file = os.path.join(cifar_dir, 'meta')

# 定义目标路径
output_dir = 'cifar-100-python/data'  # 将整理后的数据集存储到这个目录
train_output_dir = os.path.join(output_dir, 'train')
test_output_dir = os.path.join(output_dir, 'test')

# 检查输出文件夹,不存在则创建
os.makedirs(train_output_dir, exist_ok=True)
os.makedirs(test_output_dir, exist_ok=True)

# 加载 CIFAR-100 的元数据(类别名称)
with open(meta_file, 'rb') as f:
    meta = pickle.load(f, encoding='bytes')
    fine_label_names = meta[b'fine_label_names']  # CIFAR-100 中的细粒度类别名称
    fine_label_names = [name.decode('utf-8') for name in fine_label_names]

# 辅助函数:将图像数据保存为 PNG 格式
def save_image(image_array, filename):
    image = Image.fromarray(image_array)  # 将 numpy 数组转换为图像
    image.save(filename)  # 保存图像文件

# 辅助函数:解码 CIFAR-100 数据并保存图像
def decode_and_save(data_file, output_dir):
    with open(data_file, 'rb') as f:
        data_dict = pickle.load(f, encoding='bytes')
        # 提取数据和标签
        images = data_dict[b'data']
        labels = data_dict[b'fine_labels']
        filenames = data_dict[b'filenames']

        # 遍历所有图像
        for i in range(len(images)):
            # 获取图像数据,并转换为 32x32x3 的格式
            img_array = np.reshape(images[i], (3, 32, 32)).transpose(1, 2, 0)
            label = labels[i]
            class_name = fine_label_names[label]  # 根据标签获取类别名称
            filename = filenames[i].decode('utf-8')  # 获取文件名并解码
            
            # 创建以类别命名的文件夹
            class_dir = os.path.join(output_dir, class_name)
            os.makedirs(class_dir, exist_ok=True)

            # 保存图像到类别文件夹中
            save_image(img_array, os.path.join(class_dir, filename))

# 处理训练集和测试集
print("开始处理训练集...")
decode_and_save(train_file, train_output_dir)

print("开始处理测试集...")
decode_and_save(test_file, test_output_dir)

print("CIFAR-100 数据集整理完成!")

IN200-S

import os
import shutil
import random
random.seed(0)

# 原始 ImageNet 数据集根目录
source_dir = '/grp01/cs_hszhao/cs002u03/dataset/ImageNet-1k/train'
source_val_dir = '/grp01/cs_hszhao/cs002u03/dataset/ImageNet-1k/val_1k'
train_dest_dir = '/grp01/cs_hszhao/cs002u03/dataset/IN200_S/train'
val_dest_dir = '/grp01/cs_hszhao/cs002u03/dataset/IN200_S/val'

num_images_per_class = 100
num_classes = 200

if not os.path.exists(train_dest_dir):
    os.makedirs(train_dest_dir)

# 获取所有类别(子文件夹名称)
all_classes = [d for d in os.listdir(source_dir) if os.path.isdir(os.path.join(source_dir, d))]

# 随机选择 200 个类别
selected_classes = random.sample(all_classes, num_classes)

# 遍历每个选择的类别
for class_name in selected_classes:
    # 获取该类别下的所有图片路径
    class_dir = os.path.join(source_dir, class_name)
    all_images = [f for f in os.listdir(class_dir) if os.path.isfile(os.path.join(class_dir, f))]

    # 随机选择 100 张图片
    selected_images = random.sample(all_images, num_images_per_class)

    # 创建目标类别文件夹
    train_class_dir = os.path.join(train_dest_dir, class_name)
    val_class_dir = os.path.join(val_dest_dir, class_name)
    os.makedirs(train_class_dir, exist_ok=True)
    os.makedirs(val_class_dir, exist_ok=True)

    # 将选择的图片移动到目标文件夹中
    for image_name in selected_images:
        source_image_path = os.path.join(class_dir, image_name)
        target_image_path = os.path.join(train_class_dir, image_name)
        shutil.copy(source_image_path, target_image_path)

    val_images = os.listdir(os.path.join(source_val_dir, class_name))
    for image_name in val_images:
        source_image_path = os.path.join(source_val_dir, class_name, image_name)
        target_image_path = os.path.join(val_dest_dir, class_name, image_name)
        shutil.copy(source_image_path, target_image_path)

    print(f'Copied {num_images_per_class} images for class {class_name} to {train_class_dir}')

print(f'Successfully copied {num_classes} classes with {num_images_per_class} images each to {source_dir}.')

IN100-S

生成train_100.json

wnids_IN100 = ['n01498041', 'n01514859', 'n01582220', 'n01608432', 'n01616318',
        'n01443537', 'n01776313', 'n01806567', 'n01833805', 'n01882714',
        'n01910747', 'n01944390', 'n01985128', 'n02007558', 'n02071294',
        'n02085620', 'n02114855', 'n02123045', 'n02128385', 'n02129165',
        'n02129604', 'n02165456', 'n02190166', 'n02219486', 'n02226429',
        'n02279972', 'n02317335', 'n02326432', 'n02342885', 'n02363005',
        'n02391049', 'n02395406', 'n02403003', 'n02422699', 'n02442845',
        'n02444819', 'n02480855', 'n02510455', 'n02640242', 'n02672831',
        'n02687172', 'n02701002', 'n02730930', 'n02769748', 'n02782093',
        'n02787622', 'n02793495', 'n02799071', 'n02802426', 'n02814860',
        'n02840245', 'n02906734', 'n02948072', 'n02980441', 'n02999410',
        'n03014705', 'n03028079', 'n03032252', 'n03125729', 'n03160309',
        'n03179701', 'n03220513', 'n03249569', 'n03291819', 'n03384352',
        'n03388043', 'n03450230', 'n03481172', 'n03594734', 'n03594945',
        'n03627232', 'n03642806', 'n03649909', 'n03661043', 'n03676483',
        'n03724870', 'n03733281', 'n03759954', 'n03761084', 'n03773504',
        'n03804744', 'n03916031', 'n03938244', 'n04004767', 'n04026417',
        'n04090263', 'n04133789', 'n04153751', 'n04296562', 'n04330267',
        'n04371774', 'n04404412', 'n04465501', 'n04485082', 'n04507155',
        'n04536866', 'n04579432', 'n04606251', 'n07714990', 'n07745940']
IN100_words = ['stingray', 'hen', 'magpie', 'kite', 'vulture',
        'goldfish',   'tick', 'quail', 'hummingbird', 'koala',
        'jellyfish', 'snail', 'crawfish', 'flamingo', 'orca',
        'chihuahua', 'coyote', 'tabby', 'leopard', 'lion',
        'tiger','ladybug', 'fly' , 'ant', 'grasshopper',
        'monarch', 'starfish', 'hare', 'hamster', 'beaver',
        'zebra', 'pig', 'ox', 'impala',  'mink',
        'otter', 'gorilla', 'panda', 'sturgeon', 'accordion',
        'carrier', 'ambulance', 'apron', 'backpack', 'balloon',
        'banjo','barn','baseball', 'basketball', 'beacon',
        'binder', 'broom', 'candle', 'castle', 'chain',
        'chest', 'church', 'cinema', 'cradle', 'dam',
        'desk', 'dome', 'drum','envelope', 'forklift',
        'fountain', 'gown', 'hammer','jean', 'jeep',
        'knot', 'laptop', 'mower', 'library','lipstick',
        'mask', 'maze', 'microphone','microwave','missile',
        'nail', 'perfume','pillow','printer','purse',
        'rifle', 'sandal', 'screw','stage','stove',
        'swing','television','tractor','tripod','umbrella',
        'violin','whistle','wreck', 'broccoli', 'strawberry'
        ]
wnids_IN100, IN100_words = zip(*sorted(zip(wnids_IN100, IN100_words)))

categories = []
for index, (wnid, word) in enumerate(sorted(zip(wnids_IN100, IN100_words))):
    categories.append((index, wnid, word))

print(categories[:5])

# generate train_100.json
root_dir = "/mnt/petrelfs/share/imagenet/images/train"
import os
import json

data = []
for item in categories:
    index, wnid, word = item
    category_dir = os.path.join(root_dir, wnid)
    images = os.listdir(category_dir)[:200]
    for image in images:
        data.append({
            "image_file": os.path.join(wnid, image),
            "label": index,
            "word": word
        })

with open("/mnt/petrelfs/yangshuo/IP-Adapter-main/data/ImageNet-1K/train_100.json", "w") as f:
    json.dump(data, f)

生成train文件夹,将train_100.json中的图片移动到train文件夹中

import json
import shutil
import os

root = "/grp01/cs_hszhao/cs002u03/dataset/IN100/train"
json_file = json.load(open('/grp01/cs_hszhao/cs002u03/dataset/IN100_sub/train_100.json'))
# print(json_file[:5])
for item in json_file:
    category = item['image_file'].split('/')[0]
    image_path = os.path.join(root, item['image_file'])
    os.makedirs('/grp01/cs_hszhao/cs002u03/dataset/IN100_sub/train/' + category, exist_ok=True)
    shutil.copy(image_path, '/grp01/cs_hszhao/cs002u03/dataset/IN100_sub/train/' + category)

print('done')

生成val文件夹,并将图片移动到val文件夹中

import os
import shutil

wnids = ['n01498041', 'n01514859', 'n01582220', 'n01608432', 'n01616318',
        'n01443537', 'n01776313', 'n01806567', 'n01833805', 'n01882714',
        'n01910747', 'n01944390', 'n01985128', 'n02007558', 'n02071294',
        'n02085620', 'n02114855', 'n02123045', 'n02128385', 'n02129165',
        'n02129604', 'n02165456', 'n02190166', 'n02219486', 'n02226429',
        'n02279972', 'n02317335', 'n02326432', 'n02342885', 'n02363005',
        'n02391049', 'n02395406', 'n02403003', 'n02422699', 'n02442845',
        'n02444819', 'n02480855', 'n02510455', 'n02640242', 'n02672831',
        'n02687172', 'n02701002', 'n02730930', 'n02769748', 'n02782093',
        'n02787622', 'n02793495', 'n02799071', 'n02802426', 'n02814860',
        'n02840245', 'n02906734', 'n02948072', 'n02980441', 'n02999410',
        'n03014705', 'n03028079', 'n03032252', 'n03125729', 'n03160309',
        'n03179701', 'n03220513', 'n03249569', 'n03291819', 'n03384352',
        'n03388043', 'n03450230', 'n03481172', 'n03594734', 'n03594945',
        'n03627232', 'n03642806', 'n03649909', 'n03661043', 'n03676483',
        'n03724870', 'n03733281', 'n03759954', 'n03761084', 'n03773504',
        'n03804744', 'n03916031', 'n03938244', 'n04004767', 'n04026417',
        'n04090263', 'n04133789', 'n04153751', 'n04296562', 'n04330267',
        'n04371774', 'n04404412', 'n04465501', 'n04485082', 'n04507155',
        'n04536866', 'n04579432', 'n04606251', 'n07714990', 'n07745940']

root = "/grp01/cs_hszhao/cs002u03/dataset/ImageNet-1k/val_1k"
output_path = "/grp01/cs_hszhao/cs002u03/dataset/IN100/val"

for wnid in wnids:
    output_dir = os.path.join(output_path, wnid)
    if os.path.isdir(output_dir):
        pass
    else:
        os.makedirs(output_dir, exist_ok=True)
    filenames = os.listdir(os.path.join(root, wnid))
    for filename in filenames:
        shutil.copy(os.path.join(os.path.join(root, wnid), filename), os.path.join(output_dir, filename))

MedMNIST

import os
import numpy as np
from PIL import Image

# 1. 加载 npz 文件
# data = np.load('breastmnist_224.npz')
data = np.load("pathmnist_224.npz")
# data = np.load("organsmnist_224.npz")

# 2. 提取训练、验证和测试数据
train_images, train_labels = data['train_images'], data['train_labels']
val_images, val_labels = data['val_images'], data['val_labels']
test_images, test_labels = data['test_images'], data['test_labels']

# 3. 定义保存图像的根目录
# output_dir = "MedMnist/breastmnist_224"
output_dir = 'MedMnist/pathmnist_224'
# output_dir = 'MedMnist/organsmnist_224'
os.makedirs(output_dir, exist_ok=True)

# 4. 创建不同数据集(train, val, test)对应的保存目录
data_splits = {
    # 'train': (train_images, train_labels),
    'val': (val_images, val_labels),
    'test': (test_images, test_labels)
}

# 5. 将图像按照标签保存到对应目录
for split_name, (images, labels) in data_splits.items():
    # 创建数据集对应的根目录 (如 train/, val/, test/)
    split_dir = os.path.join(output_dir, split_name)
    os.makedirs(split_dir, exist_ok=True)

    # 遍历图像和标签,将每张图像保存到相应的标签目录中
    for idx, (image, label) in enumerate(zip(images, labels)):
        # 创建以标签为名称的子目录 (如 train/0/, train/1/)
        label_dir = os.path.join(split_dir, str(int(label)))
        os.makedirs(label_dir, exist_ok=True)

        # 构建图像的保存路径 (如 train/0/00001.png)
        image_filename = os.path.join(label_dir, f"{idx:05d}.png")

        # if len(image.shape) == 2:
        #     image = np.expand_dims(image, axis=-1)
        if image.dtype != np.uint8:
            image = image.astype(np.uint8)

        # 如果图像有多个通道,则需要转换为 PIL 格式
        pil_image = Image.fromarray(image)

        # 保存图像
        pil_image.save(image_filename)

    print(f"{split_name} images saved to {split_dir}")

print("All images have been saved successfully!")

【数据集处理】DroneVehicle数据集处理方法 DroneVehicle数据集由无人机采集的56,878张图像组成,其中一半是RGB图像,其余为红外图像。作者为这五个类别制作了带有定向边界框的丰富注释。 阅读详情

相关推荐

点云深度学习之数据集处理(一)数据集的分类

前段时间在做点云深度学习网络课题时,随手在博客“ModelNet40 中加入自己的数据集”中放了两串代码,目的是方便自己的存取(当时不会GIT的菜鸟)。结果成了所写博客中访问最多,提问最多的博文(瑟瑟发抖)。近段时间在恶补语言基础知识,索性换换脑,将这部分的知识进行一个相对完整的整理。希望对那些想快速入手点云深度学习,用来做课设、毕设的小朋友一点点帮助。以下都是个人的所学所思所想,不一定正确,仅做...

SGL_LGS的博客 1万+

【机器学习 - 2】:数据集的处理

例如对于一个训练集,将其20%作为测试集,80%作为训练集,这20%的测试集是已经有目标值了的,将训练集进行拟合,获得模型,再通过测试集进行测试,获得最终结果,将最终结果和已知的目标值进行比对,可预测其训练模型的精确度。举个例子:在knn分类器中,即KNeighborsClassifier(n_neighbors=3),n_neighbors值的不同,会导致模型的准确率不同,我们需要不断调整参数,找到某个数更加拟合我们的数据,这就是。时,不考虑距离带来的权重问题。时,距离作为计算的权重。

Oh_Python的博客 3658

【YOLO】数据集处理训练自己的数据集

1. 数据集 只训练了一类hand 首先我们需要对自己的数据集进行处理得到类似于voc的数据集: 其中JPEGImages,labels名字不要更改哦,程序找不到就很麻烦了 find_replace(path, "dout", "labels", labelpath); find_replace(labelpath, "JPEGImages", "labels", labelpath...

shangpapa3的博客 7696

数据集处理篇

python实现cifar10数据集的可视化 (1)CIFAR-10数据集介绍 ① CIFAR-10数据集包含60000个3232的彩色图像,共有10类。有50000个训练图像和10000个测试图像。 数据集分为5个训练块和1个测试块,每个块有10000个图像。测试块包含从每类随机选择的1000个图像。训练块以随机的顺序包含这些图像,但一些训练块可能比其它类包含更多的图像。训练块每类包含5000个...

qzzzxiaosheng的博客 2503

ModelNet数据集下载及预处理

modelnet数据集下载及数据预处理

bueryi的博客 7405

CelebA数据集介绍以及预处理代码

数据地址: 官网地址:http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html 文件类别: 我是从官网的百度云连接里下载的,下载之后一共四个文件 下面我们一 一看过文件内容 Anno文件夹 第一个文件夹Anno,存放的是各类标签 比如第一个identity_CelebA.txt是图片与 所对应的身份id list_bbox标签,是人脸标注框坐标注释文件,包含每一张图片对应的bbox起点坐标及其宽高 list_landmarks_align_celeba

free_hard的博客 7834

机器学习之数据集处理

机器学习之数据集的处理

m0_43372960的博客 1101

数据集在Python中的处理和应用

在数据科学的领域中,数据集是进行分析、建立模型和机器学习过程的基础。数据集可以被定义为一个有结构的、能够代表特定现象的数据集合,它为研究者提供了一个具体的观察窗口。数据集的作用远远不止于提供原始信息,它还能够用于训练算法,验证模型假设,以及测试模型的泛化能力。本章节将深入探讨数据集的定义、特性及其在数据科学和机器学习中的关键角色。我们将从数据集的构建过程讲起,包括数据的采集、清洗、预处理等步骤,并分析这些步骤对于最终数据产品质量的重要性。

weixin_42466857的博客 756

UEA数据集和UCR数据集的处理

UEA数据集和UCR数据集,目前是时间序列挖掘领域重要的开源数据集资源,每个数据集样本都带有样本类别标签,为了方便处理,这里将其中的标签和数据分离出来,并转换为csv文件

qq_53644346的博客 1万+

StandFord Cars devkit.zip

包含cars_meta、cars_test_annos_withlabels等mat文件

UE4免费资产库新玩法:Quixel Bridge插件安装与Megascans资源导入全攻略

本文详细介绍了如何在UE4中安装Quixel Bridge插件并导入Megascans资源,帮助开发者快速获取高质量3D资产。通过分步教程和实用技巧,提升游戏或影视场景的制作效率,特别适合需要真实感环境的项目。

weixin_27729671的博客 365

UCI数据集详解及其数据处理(附148个数据集及处理代码)

摘要:本文对机器学习中的UCI数据集进行介绍,带你从UCI数据集官网出发一步步深入认识数据集,并就下载的原始数据详细讲解了不同类型的数据集整理如何通过程序进行整理。为了方便使用,博文中附上了包括数据集整理及数据预处理在内的所有代码及处理好的数据集,同时对代码进行了解释,其要点如下:UCI数据集介绍、不同数据集的整理程序、148个整理好的数据集与对应程序。

思绪无限的博客 11万+

Python+Selenium实战:5分钟搞定快手评论区数据采集(附完整代码)

本文详细介绍了如何使用Python和Selenium快速采集快手评论区数据,提供完整的代码实现和优化方案。通过动态加载处理和智能等待策略,5分钟内即可构建高效的评论采集工具,适用于用户行为分析和内容挖掘等场景。

weixin_30415113的博客 344

数据集的预处理

一图流介绍的比较详细,一般图像检测数据集格式为txt或者xml格式,在使用labelimg进行标注的时候,可以设置获得不同格式的数据集,以满足不同算法训练格式要求.

2303_80218362的博客 1606

MMORPG网络游戏开发之任务系统的架构与设计

在网路游戏中做任务已经成为游戏很重要的一个核心功能和玩法,如何做好一个灵活可扩展的任务系统的架构与设计,今天来给大家分享一些我们的设计经验。接下来我把整个的任务系统分成以下6个模块:对于单机游戏而言,这6个模块都放在客户端直接处理,对于网路游戏而言,模块1~5实现在服务端,模块6实现在客户端。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习unity的零基础小白,也有一些正在从事unity开发的技术大佬,欢迎你来交流学习。...

voidinit的专栏 3049

【Python】SUMO + Python 联合仿真平台

强化学习的核心思想是让智能体 (Agent) 通过与环境 (Environment) 的交互来学习如何做出最优决策,以最大化累积奖励 (Cumulative Reward)。在交通场景中,智能体可以是交通信号控制器、自动驾驶车辆或交通管理中心,环境则是 SUMO 模拟的交通路网,奖励则与交通效率、安全、环保等目标相关。交通系统本质上是动态的、随机的、高度复杂的系统,传统的基于规则或模型的优化方法在面对不断变化的需求和突发事件时,往往显得力不从心。强化学习的优势在于:在交通领域,强化学习已经被广泛应用于:为了

宅男很神经 1989

pytorch 数据集处理 目标检测(分类)数据集处理

前言 无论是在作分类任务或者是目标检测任务都需要数据集的处理,一种是txt文件保存标签的信息,另一种只有图片如下图的形式,这一步也是学会faster-rcnn的关键点 分为训练和验证的照片 | 每个分类的类别 一种是猫的照片,另一种是狗的照片,这种是自己的数据集,其实官方的数据集也是这样放置的,比如CIFAR10,其中的是有10个文件夹,每个文件夹下是很多张一种数字的照片,正常情况下我们引...

cp1314971的博客 7787

使用HART Server PC软件进行HART设备的组态、调试和分析的完整指南

HART协议是一种用于工业自动化中的双向通信协议,能够在4-20mA模拟信号的基础上叠加数字信号,从而实现设备的远程监控和管理。HART协议兼具模拟和数字通信的优点,被广泛应用于过程控制系统中。设备组态:通过软件可以对HART设备进行组态,配置设备参数。设备调试:支持设备的在线调试和故障诊断,方便快速解决问题。数据分析:提供设备运行数据的实时监控和历史数据分析功能。报表生成:支持生成各类报表,便于数据记录和管理。

qq_38334677的博客 2468

Imagenet数据集处理

Imagenet数据集处理前言Imagenet数据集简介Imagenet处理 前言 在学习pytorch时发现需要对imagenet数据集进行处理,搜了很久才找到处理方法,在这里记录一下。 Imagenet数据集简介 ImageNet图像数据集始于2009年,当时李飞飞教授等在CVPR2009上发表了一篇名为《ImageNet: A Large-Scale Hierarchical Image D...

koberonaldo24的博客 6301

Underactuated Robotics - 欠驱动机器人学(一)- 全驱动与欠驱动系统

根据牛顿的观点,机械系统的动力学是二阶的(其状态由位置向量 q(也称为配置向量)和速度向量以及(可能还有)时间给出。二阶控制动力系统的一般形式是:其中 u 是控制向量。定义 1.1 (欠驱动控制微分方程) 二阶控制微分方程描述如下:在状态和时间 t 中,如果所得到的映射是可射的:对于每一个,都存在一个能产生预期响应的,那么系统就是全驱动的。否则,就是欠驱动(状态在时间 t)。

机器人控制与仿真应用 3377

Go基础:一文掌握Go语言网络编程

Go语言凭借强大的标准库和原生并发支持,非常适合网络编程开发。文章介绍了Go语言在网络编程中的核心概念和应用场景,包括TCP、UDP和HTTP等协议的具体实现方法。主要内容包括:1)网络编程核心概念(Listener、Conn、Addr等);2)TCP服务器/客户端的实现流程与示例代码;3)UDP无连接通信的实现方式;4)利用net/http包构建HTTP服务。文章通过详细的代码示例展示了如何利用Go的Goroutine和Channel特性高效处理网络连接,并强调了连接管理的最佳实践。

数据知道的博客 5513

【sklearn】数据集的预处理和加载——以Adult数据集为例

1 打开数据集adult.data 这样的文件本质和csv文件一样,可以通过 pd.read_csv() 读取: adult = pd.read_csv("C://Users//54719//Desktop//adult.data") out: 我们可以看到,这是一个32561*15的数据集,读取出来的是DataFrame,最后一列income是这个句数据集的标签,这是一个二分类的数据集。 2 查看每一列的dtype 可以通过 adult.loc[:,列名].dtype 或者 adult[列名].dt

学渣的博客 2万+

人工智能之数学基础:弄懂数学本质,让我们不再害怕数学

数学的用途远远超过了人们的想象,甚至无处不在,任何领域都需要用到数学知识,人工智能也不例外。我将尽可能地将数学知识和机器学习算法相结合,让大家知道这些数学知识咋人工智能领域中的应用,使得数学的学习不会过于枯燥,同时也帮助大家扫清在学习算法过程中的数学障碍。除此之外,我还希望帮助大家建立一种不一样的数学思维,不再将数学看成是符号的演算、公式的推导,而是将数学看成是一种描述这个世界的工具,这样你就会发现这个世界处处有数学。当我们面对问题的时候,你是否会对问题进行抽象,然后通过数学来解决问题?

huanfeng_AI的博客 632

不平衡数据集处理方法

目录 1、不平衡(均衡)数据集 (1)不平衡数据集定义 (2)不平衡数据集举例 (3)不平衡数据集实例 (4)不平衡数据集导致的问题 (5)不平衡数据集的主要处理方法 2、不平衡(均衡)数据集常用的处理方法 (1)扩充数据集 (2)对数据集进行重采样 (3)人造数据 (4)改变分类算法 3、将数据集划分为训练数据集和测试数据集 4、使用K折交叉验证评估模型性能 (1)K...

分享实践与思考 5万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

UCI数据集预处理

UCI数据集,全称是UCI机器学习库(UCI Machine Learning Repository),是一个由加州大学欧文分校(University of California, Irvine)维护的公开数据集集合,广泛用于机器学习领域的学术研究和教育。这些数据集被设计来测试学习算法,包括数据挖掘和模式识别等任务。

需要远程指导仿真实验、代码有问题的,请后台私信或者关注公众号 4500

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

wangpy12321
博客等级 码龄4年 0粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值