当前位置:   article > 正文

PyTorch入门教学——Transforms使用_pytorch transform

pytorch transform

1、Transforms简介

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

2、Tensor数据类型

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

3、常见的Transforms

  • ToTensor:将PIL Image、numpy.ndarray转换为tensor数据类型。
  • Normalize:对图像像素进行归一化计算,可理解为改变颜色。
    • 计算公式:
        1. output[channel] = (input[channel] - mean[channel]) / std[channel]
        2. # 输出 = 输入 - 均值/ 标准差
  • Resize:重新设置PIL Image的大小,返回的也是PIL Image格式。
  • Compose:将不同的Transforms结合在一起。
  • 代码案例——先将图片大小进行调整,然后进行归一化计算。将ToTensor、Normalize、Resize返回的tensor数据类型,按顺序输入到Compose中。
    • 新建python文件,输入如下代码并运行。​​​​​​​
      1. from PIL import Image
      2. from torch.utils.tensorboard import SummaryWriter
      3. from torchvision import transforms
      4. writer = SummaryWriter("logs")
      5. img_path = "images/热巴1.jpg"
      6. img = Image.open(img_path)
      7. # ToTensor 转换类型
      8. trans_totensor = transforms.ToTensor()
      9. img_tensor = trans_totensor(img)
      10. writer.add_image("热巴", img_tensor)
      11. # Normalize 归一化
      12. print(img_tensor[0][0][0]) # 0层0行0列的像素
      13. trans_norm = transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5]) # 参数:均值,标准差
      14. img_norm = trans_norm(img_tensor)
      15. print(img_norm[0][0][0]) # 改变后,0层0行0列的像素
      16. writer.add_image("Normalize", img_norm)
      17. # Resize 设置大小
      18. print(img.size) # 图片大小
      19. trans_resize = transforms.Resize((512, 512))
      20. img_resize = trans_resize(img) # 返回的还是PIL image
      21. print(img.resize)
      22. img_resize = trans_totensor(img_resize) # 转化为totensor
      23. writer.add_image("Resize", img_resize)
      24. # Compose - resize第二种用法
      25. trans_resize_2 = transforms.Resize(512) # 等比缩放
      26. tran_compose = transforms.Compose([trans_resize_2, trans_totensor]) # 参数为数列,进行两种变换
      27. img_resize2 = tran_compose(img)
      28. writer.add_image("Compose", img_resize2)
      29. writer.close()
    • 打开TensorBoard,显示如下。
      • ToTensor
        •  
      • Normalize
      • Resize
      • Compose
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/838791
推荐阅读
相关标签
  

闽ICP备14008679号