增加了数据增强离线的程序(可扩充数据集),将图片压缩从32*32,调整为224*224.
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import os
|
||||
import random
|
||||
from PIL import Image
|
||||
from torchvision import transforms
|
||||
|
||||
# 原始数据目录
|
||||
input_root = "../dataset/train"
|
||||
|
||||
# 增强后保存目录
|
||||
output_root = "../dataset/train_aug"
|
||||
|
||||
# 每类目标张数
|
||||
target_num = 500
|
||||
|
||||
# 定义数据增强
|
||||
transform = transforms.Compose([
|
||||
transforms.RandomHorizontalFlip(p=0.5),
|
||||
transforms.RandomRotation(15),
|
||||
transforms.ColorJitter(brightness=0.1, contrast=0.1, saturation=0.1, hue=0.02),
|
||||
transforms.RandomResizedCrop(size=(224, 224), scale=(0.8, 1.0)),
|
||||
])
|
||||
|
||||
os.makedirs(output_root, exist_ok=True)
|
||||
|
||||
# 遍历每个类别文件夹
|
||||
for class_name in os.listdir(input_root):
|
||||
input_dir = os.path.join(input_root, class_name)
|
||||
output_dir = os.path.join(output_root, class_name)
|
||||
os.makedirs(output_dir, exist_ok=True)
|
||||
|
||||
# 读取类别下所有图片路径
|
||||
img_files = [f for f in os.listdir(input_dir) if f.lower().endswith(('.jpg', '.png', '.jpeg'))]
|
||||
img_paths = [os.path.join(input_dir, f) for f in img_files]
|
||||
|
||||
print(f"类别 {class_name} 原始图片数: {len(img_paths)}")
|
||||
|
||||
count = 0
|
||||
while count < target_num:
|
||||
img_path = random.choice(img_paths)
|
||||
img = Image.open(img_path).convert("RGB")
|
||||
# 生成增强图
|
||||
aug_img = transform(img)
|
||||
# 保存
|
||||
save_path = os.path.join(output_dir, f"aug_{count:03d}.jpg")
|
||||
aug_img.save(save_path)
|
||||
count += 1
|
||||
|
||||
print(f"类别 {class_name} 已扩充到 {target_num} 张,保存于 {output_dir}")
|
||||
|
||||
print("✅ 数据增强完成!")
|
||||
Reference in New Issue
Block a user