1.数据增强
import os
import random
from PIL import Image
import torchvision.transforms as transforms
from tqdm import tqdm
import shutil
import torch
from to_pseudo import process_folder
# 自定义的转换函数
class RandomHorizontalFlipBoth:
def __init__(self, p=0.5):
self.transform = transforms.RandomHorizontalFlip(p)
def __call__(self, img, mask):
if random.random() < self.transform.p:
return self.transform(img), self.transform(mask)
else:
return img, mask
class RandomVerticalFlipBoth:
def __init__(self, p=0.5):
self.transform = transforms.RandomVerticalFlip(p)
def __call__(self, img, mask):
if random.random() < self.transform.p:
return self.transform(img), self.transform(mask)
else:
return img, mask
class RandomRotationBoth:
def __init__(self, degrees, p=0.5):
self.transform = transforms.RandomRotation(degrees)
self.p = p
def __call__(self, img, mask):
if random.random() < self.p:
return self.transform(img), self.transform(mask)
else:
return img, mask
class ColorJitterBoth:
def __init__(self, brightness_range, contrast_range, saturation_range, hue_range, p=0.5):
self.brightness_range = brightness_range
self.contrast_range = contrast_range
self.saturation_range = saturation_range
self.hue_range = hue_range
self.p = p
def __call__(self, img, mask):
if random.random() < self.p:
brightness = random.uniform(*self.brightness_range)
contrast = random.uniform(*self.contrast_range)
saturation = random.uniform(*self.saturation_range)
hue = random.uniform(*self.hue_range)
if hue < -0.5:
hue += 0.5
elif hue > 0.5:
hue -= 0.5
transform = transforms.ColorJitter(brightness, contrast, saturation, hue)
r