PyTorch入门教学——Transforms使用

news/2024/7/24 9:31:03 标签: pytorch, 人工智能, python

1、Transforms简介

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

2、Tensor数据类型

  • 数据集只有转换为tensor数据类型才能被Transforms中的工具使用。这里使用到了ToTensor类,它可以将PIL Image、numpy.ndarray转换为tensor数据类型。
  • 代码案例——将PIL Image转换为tensor数据类型。
    • 首先在项目目录中准备好一张图片,并且新建一个python文件。
    • 在Transforms.py中输入如下代码,并运行。
      • python">from torchvision import transforms
        from PIL import Image
        
        img_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:对图像像素进行归一化计算,可理解为改变颜色。
    • 计算公式:
      • python">output[channel] = (input[channel] - mean[channel]) / std[channel]
        # 输出 = 输入 - 均值/ 标准差
  • Resize:重新设置PIL Image的大小,返回的也是PIL Image格式。
  • Compose:将不同的Transforms结合在一起。
  • 代码案例——先将图片大小进行调整,然后进行归一化计算。将ToTensor、Normalize、Resize返回的tensor数据类型,按顺序输入到Compose中。
    • 新建python文件,输入如下代码并运行。​​​​​​​
    • python">from PIL import Image
      from torch.utils.tensorboard import SummaryWriter
      from torchvision import transforms
      
      writer = 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

http://www.niftyadmin.cn/n/5112217.html

相关文章

LeetCode 1402. 做菜顺序【排序,动态规划;贪心,前缀和,递推】1679

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

还不知道光场相机吗?

1.什么是光场? 光场(light field):就是指光在每一个方向通过每一个点的光量。 从概念里,你至少可以得到两点信息: 光场包含光的方向光场包含一个点的光量 2.什么是光场相机 我们知道普通的相机拍照成像…

网安周报|OpenSSF 推出恶意软件包存储库

1.OpenSSF 推出恶意软件包存储库 为了应对恶意开源软件包日益增长的威胁,开源安全基金会 ( OpenSSF ) 推出了一项名为“恶意软件包存储库”的新计划。该存储库可能会成为打击恶意代码的主要参与者,旨在增强开源软件生态系统的安全性和完整性。该存储库已…

00TD时尚女童睡衣,蕾丝边+蝴蝶结太好看了

甜美又可爱的蕾丝花边加蝴蝶结 真的一下子戳中了我的心巴, 满满的少女风真的很好看, 妥妥的可爱小公主一枚 柔软又亲肤,厚厚的很保暖 睡觉真的很舒服 还有袖口和裤脚都做了松紧设计哟!

外网nat+nat server,内网做路由过滤,以及ppp CHAR认证 企业网搭建

作业 网络拓扑图如下所示: 要求:做适当的截图,表示完成相应的操作。 按照网络拓扑要求搭建网络结构,按照个人学号配置每个节点的IP地址,其中X为班级号,Y为学号末尾2位;Y1为学号末尾2位1&#…

LeetCode--176,177 第 N 高的薪水

文章目录 1 查询员工第二高的薪水1.1 题目描述1.2 解答1.2.1 使用 max() 函数1.2.2 使用 limit1.2.3 SQL知识点 2 查询员工第N高的薪水 1 查询员工第二高的薪水 1.1 题目描述 Employee 表: ------------------- | Column Name | Type | ------------------- | id…

spacy.load(“en_core_web_trf“)报错TypeError: issubclass() arg 1 must be a class

使用spacy时遇到的问题 写在最前面: 安装spacy和en_core_web_trf时需要保证二者版本一致 安装及查看对应spacy版本 安装 pip install spacy查看版本 import spacy spacy.__version__安装en_core_web_trf 直接安装(如果可以的话) pytho…

GB28181学习(十)——视音频文件下载

要求 SIP服务器接收到媒体接收者发送的视音频文件下载请求后向媒体流发送者发送媒体文件下载命令,媒体流发送者采用RTP将视频流传输给媒体流接收者,媒体流接收者直接将视频流保存为媒体文件;媒体流接收者或SIP服务器可通过配置查询等方式获取…