一、transforms的用法
transforms 是数据预处理与增强的核心工具,主要用于将原始图像转换为模型可接受的格式,并通过随机变换丰富数据集以提高模型泛化能力。
导入方式:
fromtorchvisionimporttransforms主要用法,按顺序
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类型
fromPILimportImagefromtorchvisionimporttransforms 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图
fromPILimportImagefromtorch.utils.tensorboardimportSummaryWriterfromtorchvisionimporttransforms 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) #CHWwriter=SummaryWriter('logs')writer.add_image('tensor_img',tensor_img,0)writer.close()
Normalize()归一化使用
fromPILimportImagefromtorch.utils.tensorboardimportSummaryWriterfromtorchvisionimporttransforms 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) #CHWwriter=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()调整大小的使用
fromPILimportImagefromtorch.utils.tensorboardimportSummaryWriterfromtorchvisionimporttransforms 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) #CHWwriter=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()