PyTorch入门教学——Transforms使用

编程入门 行业动态 更新时间:2024-10-28 06:34:46

PyTorch<a href=https://www.elefans.com/category/jswz/34/1770026.html style=入门教学——Transforms使用"/>

PyTorch入门教学——Transforms使用

1、Transforms简介

  • Transforms在是计算机视觉工具包torchvision下的包,常用于对图像进行预处理,提高泛化能力。具体有:
    • 数据中心化、数据标准化、缩放、裁剪、旋转、翻转、填充、噪声添加、灰度变换、线性变换、仿射变换和亮度、饱和度及对比度变换。
  • Transforms的使用结构:

2、Tensor数据类型

  • 数据集只有转换为tensor数据类型才能被Transforms中的工具使用。这里使用到了ToTensor类,它可以将PIL Image、numpy.ndarray转换为tensor数据类型。
  • 代码案例——将PIL Image转换为tensor数据类型。
    • 首先在项目目录中准备好一张图片,并且新建一个python文件。
    • 在Transforms.py中输入如下代码,并运行。
      • from torchvision import transforms
        from PIL import Imageimg_path = "images/热巴1.jpg"  # 相对路径
        img = Image.open(img_path)
        print(img)  # PIL Image数据类型
        tensor_trans = transforms.ToTensor()  # 实例化
        tensor_img = tensor_trans(img)  # 在括号中按ctrl+p可以查看需要传入什么参数
        print(tensor_img)  # tensor数据类型
      • 可以看到PIL Image已经转换成了tensor数据类型。

3、常见的Transforms

  • ToTensor:将PIL Image、numpy.ndarray转换为tensor数据类型。
  • Normalize:对图像像素进行归一化计算,可理解为改变颜色。
    • 计算公式:
      • output[channel] = (input[channel] - mean[channel]) / std[channel]
        # 输出 = 输入 - 均值/ 标准差
  • Resize:重新设置PIL Image的大小,返回的也是PIL Image格式。
  • Compose:将不同的Transforms结合在一起。
  • 代码案例——先将图片大小进行调整,然后进行归一化计算。将ToTensor、Normalize、Resize返回的tensor数据类型,按顺序输入到Compose中。
    • 新建python文件,输入如下代码并运行。​​​​​​​
    • from PIL import Image
      from torch.utils.tensorboard import SummaryWriter
      from torchvision import transformswriter = SummaryWriter("logs")
      img_path = "images/热巴1.jpg"
      img = Image.open(img_path)
      # ToTensor 转换类型
      trans_totensor = transforms.ToTensor()
      img_tensor = trans_totensor(img)
      writer.add_image("热巴", img_tensor)
      # Normalize 归一化
      print(img_tensor[0][0][0])  # 0层0行0列的像素
      trans_norm = transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])  # 参数:均值,标准差
      img_norm = trans_norm(img_tensor)
      print(img_norm[0][0][0])  # 改变后,0层0行0列的像素
      writer.add_image("Normalize", img_norm)
      # Resize 设置大小
      print(img.size)  # 图片大小
      trans_resize = transforms.Resize((512, 512))
      img_resize = trans_resize(img)  # 返回的还是PIL image
      print(img.resize)
      img_resize = trans_totensor(img_resize)  # 转化为totensor
      writer.add_image("Resize", img_resize)
      # Compose - resize第二种用法
      trans_resize_2 = transforms.Resize(512)  # 等比缩放
      tran_compose = transforms.Compose([trans_resize_2, trans_totensor])  # 参数为数列,进行两种变换
      img_resize2 = tran_compose(img)
      writer.add_image("Compose", img_resize2)writer.close()
      
    • 打开TensorBoard,显示如下。
      • ToTensor
        •  
      • Normalize
      • Resize
      • Compose

更多推荐

PyTorch入门教学——Transforms使用

本文发布于:2023-12-05 08:39:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1663697.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:入门   PyTorch   Transforms

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!