1、简单介绍Transforms
在PyTorch中,Transforms是一个用于图像处理的工具包,它是torchvision模块下的一个类的集合。这些类提供了丰富的功能,可以对图像或数据进行格式变换、裁剪、缩放、旋转等操作。在进行深度学习项目时,特别是在图像处理任务中,Transforms的使用非常广泛。下面结合着小土堆pytorch的课程和自己的理解,进行一些实际使用。
2、导入相关包
导入torchvision库中的transforms模块
from torchvision import transforms
3、常见的Transforms类
ToTensor:将其他图像数据类型(如PIL Image或ndarray)转换为tensor类型,并归一化至[0,1]范围。
transform = transforms.ToTensor()
Resize:将输入的图像转换成不同的大小。
transform = transforms.Resize((256, 256))
CenterCrop:对输入的图像进行中心裁剪,得到给定大小的图像。
transform = transforms.CenterCrop(100)
RandomCrop:随机裁剪图像为给定大小。
transform = transforms.RandomCrop((224, 224))
RandomHorizontalFlip:随机水平翻转图像。
RandomSizedCrop:随机大小和比例裁剪图像。
Pad:对图像进行填充。
transform = transforms.Pad(padding=10, fill=0)
Normalize:标准化图像张量,通常用于减去均值并除以标准差。
transform = transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5])
ToPILImage:将tensor或ndarray类型的图像转换成PIL类型的图像。
4、Compose类的使用
将多个图像变换步骤整合到一起,可以使用Compose函数,方便操作
# 图像首先被调整到256x256的大小,然后随机裁剪为224x224,接着转换为张量类型,最后进行标准化
transform = transforms.Compose([
transforms.Resize((256, 256)),
transforms.RandomCrop((224, 224)),
transforms.ToTensor(),
transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])
])
5、应用Transforms
简单应用,将图片转化为Tensor张量
from torchvision import transforms
from PIL import Image
# 相对路径
img_path = "dataset/train/ants_image/0013035.jpg"
# 绝对路径
img_path_abs = "D:\PycharmProjects\learn_pytorch\dataset\train\ants_image\0013035.jpg"
# 打开图片,使用相对路径
img = Image.open(img_path)
print(img)
# 转为tensor张量 返回为Tensor类型图片
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)
print(tensor_img)
输出结果如下,是一个Tensor向量
tensor([[[0.3137, 0.3137, 0.3137, ..., 0.3176, 0.3098, 0.2980],
[0.3176, 0.3176, 0.3176, ..., 0.3176, 0.3098, 0.2980],
[0.3216, 0.3216, 0.3216, ..., 0.3137, 0.3098, 0.3020],
...,
[0.3412, 0.3412, 0.3373, ..., 0.1725, 0.3725, 0.3529],
[0.3412, 0.3412, 0.3373, ..., 0.3294, 0.3529, 0.3294],
[0.3412, 0.3412, 0.3373, ..., 0.3098, 0.3059, 0.3294]],
[[0.5922, 0.5922, 0.5922, ..., 0.5961, 0.5882, 0.5765],
[0.5961, 0.5961, 0.5961, ..., 0.5961, 0.5882, 0.5765],
[0.6000, 0.6000, 0.6000, ..., 0.5922, 0.5882, 0.5804],
...,
[0.6275, 0.6275, 0.6235, ..., 0.3608, 0.6196, 0.6157],
[0.6275, 0.6275, 0.6235, ..., 0.5765, 0.6275, 0.5961],
[0.6275, 0.6275, 0.6235, ..., 0.6275, 0.6235, 0.6314]],
[[0.9137, 0.9137, 0.9137, ..., 0.9176, 0.9098, 0.8980],
[0.9176, 0.9176, 0.9176, ..., 0.9176, 0.9098, 0.8980],
[0.9216, 0.9216, 0.9216, ..., 0.9137, 0.9098, 0.9020],
...,
[0.9294, 0.9294, 0.9255, ..., 0.5529, 0.9216, 0.8941],
[0.9294, 0.9294, 0.9255, ..., 0.8863, 1.0000, 0.9137],
[0.9294, 0.9294, 0.9255, ..., 0.9490, 0.9804, 0.9137]]])