transforms是 PyTorch 的 torchvision 库中用于图像处理的一个模块。它提供了一组工具,用于在图像数据集上进行常见的预处理和数据增强操作,以便更好地训练深度学习模型。以下是一些常用的torchvision.transforms转换:
基础图像转换:
transforms.ToTensor(): 将PIL图像或NumPy数组转换为PyTorch的张量,并将像素值范围从[0, 255]缩放到[0, 1]。
transforms.ToPILImage(): 将PyTorch张量转换为PIL图像对象。
transforms.Normalize(mean, std): 对输入数据进行归一化处理,即将每个像素值减去均值(mean)然后除以标准差(std)。这有助于模型的收敛和性能提升。
transforms.Grayscale(num_output_channels=1): 将输入数据转换为灰度图像。
图像增强:
transforms.RandomHorizontalFlip(p=0.5): 随机水平翻转图像,p 是翻转的概率。
transforms.RandomVerticalFlip(p=0.5): 随机垂直翻转图像。
transforms.RandomRotation(degrees): 随机旋转图像,degrees 表示旋转的角度范围。
transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0): 随机改变图像的亮度、对比度、饱和度和色调。
几何变换:
transforms.Resize(size): 调整图像的大小,size 可以是一个整数(统一缩放到相同的尺寸)或一个 (height, width) 元组。
transforms.CenterCrop(size): 从图像中心裁剪出一个大小为 size 的区域。
transforms.RandomCrop(size): 从图像中随机裁剪出一个大小为 size 的区域。
transforms.Pad(padding): 对图像进行填充,padding 可以是一个整数(统一填充)或一个 (left, top, right, bottom) 元组。
图像转换为不同的格式:
transforms.Lambda(lambda x: ...): 允许用户自定义转换操作,通过传入一个函数来实现。
组合多个转换:
transforms.Compose(transforms_list): 将多个转换操作组合成一个转换操作,其中 transforms_list 是一个转换操作的列表,图像将按顺序应用这些操作。
demo:多个转换的组合
from PIL import Image
from torchvision import transforms
image = Image.open('demo.png') # 读取图像文件
transforms = transforms.Compose([
transforms.ToTensor(), # 转换为张量
transforms.Grayscale(1), # 转换为灰度图
transforms.ToPILImage() # 转换为图像
])
show_image = transforms(image) # 应用转换,将张量转换为图像
show_image.show() # 显示图像
张量和图像的双向转换
from PIL import Image
from torchvision import transforms
# 读取图像文件
image = Image.open('demo.png') # 替换为你的图像路径
# 定义转换
transform = transforms.ToTensor()
# 应用转换,将图像转换为Tensor
image_tensor = transform(image)
# 定义一个转换,将Tensor转换为PIL图像
transform = transforms.ToPILImage()
# 使用转换函数
image = transform(image_tensor)
# 显示图像
image.show()