一、transforms的用法
transforms 是数据预处理与增强的核心工具,主要用于将原始图像转换为模型可接受的格式,并通过随机变换丰富数据集以提高模型泛化能力。
导入方式:
python
from torchvision import transforms
主要用法,按顺序
python
transform_pipeline = transforms.Compose([
transforms.Resize(256), # 调整图像大小至256x256(保持宽高比)
transforms.CenterCrop(224), # 从中心裁剪224x224区域(常用预训练模型输入尺寸)
transforms.RandomHorizontalFlip(p=0.5), # 以50%概率水平翻转(数据增强)
transforms.ToTensor(), # 将PIL图像转换为Tensor(像素值缩放至[0,1])
transforms.Normalize( # 标准化(使用ImageNet均值/方差)
mean=[0.485, 0.456, 0.406], # RGB通道均值
std=[0.229, 0.224, 0.225] # RGB通道标准差
)
])
二、transform的使用
将PIL图像转换成Tensor类型
python
from PIL import Image
from torchvision import transforms
img_path = r'data/train/ants_image/0013035.jpg'
img = Image.open(img_path)
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)
print(tensor_img.shape) #CHW

通过tensor()类型的数据生成tensorboard图
python
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
img_path = r'data/train/ants_image/0013035.jpg'
img = Image.open(img_path)
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)
# print(tensor_img.shape) #CHW
writer = SummaryWriter('logs')
writer.add_image('tensor_img', tensor_img, 0)
writer.close()

Normalize()归一化使用
python
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
img_path = r'data/train/ants_image/0013035.jpg'
img = Image.open(img_path)
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)
# print(tensor_img.shape) #CHW
writer = SummaryWriter('logs')
norm_trans = transforms.Normalize([0.485, 0.456, 0.406], [0.5, 0.5, 0.5])
norm_img = norm_trans(tensor_img)
writer.add_image('tensor_img', tensor_img, 0)
writer.add_image('norm_img', norm_img, 1)
writer.close()
归一化后的图片和未归一化的图片

Resize()调整大小的使用
python
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
img_path = r'data/train/ants_image/0013035.jpg'
img = Image.open(img_path)
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)
# print(tensor_img.shape) #CHW
writer = SummaryWriter('logs')
norm_trans = transforms.Normalize([0.485, 0.456, 0.406], [0.5, 0.5, 0.5])
norm_img = norm_trans(tensor_img)
# print(img.size)
resize_trans = transforms.Resize((256, 256))
resize_img = resize_trans(tensor_img)
writer.add_image('resize_img', resize_img, 0)
# print(resize_img.size)
#Compose用法
trans_resize_2 = transforms.Compose([transforms.Resize((512)), transforms.ToTensor()])
img_resize_2 = trans_resize_2(img)
writer.add_image('tensor_img', tensor_img, 0)
writer.add_image('norm_img', norm_img, 1)
writer.add_image('img_resize_2', img_resize_2, 2)
writer.close()
