Pytorch学习笔记——Transforms的使用

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]]])

相关推荐

  1. Pytorch学习笔记——Transforms使用

    2024-05-03 13:32:10       13 阅读
  2. block-recurrent-transformer-pytorch 学习笔记

    2024-05-03 13:32:10       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-03 13:32:10       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-03 13:32:10       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-03 13:32:10       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-03 13:32:10       20 阅读

热门阅读

  1. 区块链 | IPFS:Merkle DAG

    2024-05-03 13:32:10       14 阅读
  2. ES常用查询方式

    2024-05-03 13:32:10       14 阅读
  3. 服务器分类

    2024-05-03 13:32:10       10 阅读
  4. Android 编译文件简述(Android.mk)

    2024-05-03 13:32:10       12 阅读
  5. c++自定义数据结构适配std::sort

    2024-05-03 13:32:10       14 阅读
  6. 21-ESP32-S3实时时钟(RTC)

    2024-05-03 13:32:10       13 阅读
  7. LeetCode刷题笔记第168题:Excel表列名称

    2024-05-03 13:32:10       13 阅读
  8. LinkedList常考面试题

    2024-05-03 13:32:10       12 阅读
  9. 【手撕Promise.all】

    2024-05-03 13:32:10       12 阅读