PyTorch入门教学——Transforms使用

news2024/12/19 6:50:49

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 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:对图像像素进行归一化计算,可理解为改变颜色。
    • 计算公式:
      • 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 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.coloradmin.cn/o/1121805.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot 程序设计优雅退出

一 springboot优雅退出 1.1 概述 在springboot2.3版本后,实现了优雅退出功能。当server.shutdowngraceful启用时,在 web 容器关闭时,web 服务器将不再接收新请求,并将剩余活动执行完成给设置一个缓冲期。缓冲期 timeout-per-shu…

Mysql数据库 2.SQL语言 数据类型与字段约束

Mysql数据类型 数据类型:指的是数据表中的列文件支持存放的数据类型 1.数值类型 Mysql当中有多种数据类型可以存放数值,不同的类型存放的数值的范围或者形式是不同的 注:前三种数字类型我们在实际研发中用的很少,一般整数类型…

2525.根据规则将箱子分类/并查集/动态规划

2525. 根据规则将箱子分类 - 力扣(LeetCode) 给你四个整数 length ,width ,height 和 mass ,分别表示一个箱子的三个维度和质量,请你返回一个表示箱子 类别 的字符串。 如果满足以下条件,那么…

AndroidStudio如何设置中文

AndroidStudio如何设置中文 文章目录 AndroidStudio如何设置中文一、前言二、如何安装中文插件参考资料💘 一、前言 Android Studio 是一个为 Android 平台开发程序的集成开发环境(IDE)。2013年5月16日在 Google I/O 上发布,可供…

springboot+vue开发的视频弹幕网站动漫网站

springbootvue开发的视频弹幕网站动漫网站 演示视频 https://www.bilibili.com/video/BV1MC4y137Qk/?share_sourcecopy_web&vd_source11344bb73ef9b33550b8202d07ae139b 功能: 前台: 首页(猜你喜欢视频推荐)、轮播图、分类…

四、网络请求与路由

一、网络请求 1、Axios请求 Axios是一个基于promise的网络请求库 (1)安装 npm install --save axios(2)引入 import axios from "axios"全局引入 import axios from "axios" import { createApp } from …

深度学习_3_实战_房价预测

梯度 实战 代码: # %matplotlib inline import random import torch import matplotlib.pyplot as plt # from d21 import torch as d21def synthetic_data(w, b, num_examples):"""生成 Y XW b 噪声。"""X torch.normal(0,…

面试知识储备--打包工具篇(webpack和vite)

1.vite常用配置 常用配置 1.preprocessorOptions 传递给 CSS 预处理器的配置选项 2.PostCSS 也是用来处理 CSS 的,只不过它更像是一个工具箱,可以添加各种插件来处理 CSS 3.resolve.extensions 导入时想要省略的扩展名列表。默认值为 [‘.mjs’, ‘.js’…

小团队之间有哪些好用免费的多人协同办公软件

在小团队协作中,选择适合的多人协同办公软件是提高工作效率和团队协作的重要一环。幸运的是,市场上有许多大多数功能都免费的多人协同办公软件,为小团队提供了强大的协作功能和便捷的工作环境。 在本文中,我将根据自己多年的在线…

2.2.C++项目:网络版五子棋对战之数据管理模块的设计

文章目录 一、数据管理模块实现(一)功能 二、设计(一)数据库设计(二)创建user_table类 一、数据管理模块实现 (一)功能 数据管理模块主要负责对于数据库中数据进行统一的增删改查管…

3ds Max2023安装教程(最新最详细)

目录 一.简介 二.安装步骤 软件:3ds Max版本:2023语言:简体中文大小:6.85G安装环境:Win11/Win10/Win8/Win7硬件要求:CPU3GHz 内存16G(或更高)下载通道①百度网盘丨64位下载链接: …

【蓝桥每日一题]-动态规划 (保姆级教程 篇10)#方格取数

高能预警:讲了这么久动态规划了,该上点有难度的题吧 目录 题目:方格取数 思路(解法一): 解法二: 题目:方格取数 思路(解法一): 如果只有两个方向…

openCV Cuda

下载 git clone https://github.com/opencv/opencv.git git clone https://github.com/opencv/opencv_contrib.git确保准备好以下内容 1: visual studio (不是vs code) 2:下载后的两个包裹会放在以下结构 这样放的原因是我Ub…

Java EE-使用Servlet搭建一个简单的前后端交互程序

上述前端和后端的代码如下&#xff1a; 前端&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"vie…

数据库笔记——SQL语言DQL语句

schema等于database 数据库 datagrip中使用控制台进行操作&#xff1a; 右键new QueryConsole 创建表格create table中&#xff1a; 1. 括号内不管是定义属性还是声明约束&#xff0c;都使用逗号分隔&#xff0c;最后一句不用逗号 2. 括号外使用分号 DDL&#xff1a;数据库定…

python接口自动化测试(单元测试方法)

一、环境搭建 python unittest requests实现http请求的接口自动化Python的优势&#xff1a;语法简洁优美, 功能强大, 标准库跟第三方库灰常强大&#xff0c;建议大家事先了解一下Python的基础;unittest是python的标准测试库&#xff0c;相比于其他测试框架是python目前使用最广…

思辨:移动开发的未来在哪?

前段时间在知乎看到关于移动开发未来的问题&#xff0c;就尝试回答了一下&#xff0c;也触发了我对移动开发未来的思考。 移动开发未来怎么样? - 知乎 https://www.zhihu.com/question/613842211 什么是移动开发&#xff1f; 我们口中说的移动开发是什么&#xff0c;从广义和…

项目管理实战总结(二)-沟通路径

在一个大型的项目管理中&#xff0c;不同的沟通路径&#xff0c;会对整个事情的进展形成不同的影响。从项目管理的视角来看&#xff0c;该如何驱动项目有效进展&#xff0c;失之毫厘谬以千里。 沟通路径&#xff1a;调查问卷的推动事宜 在项目进行到了后期&#xff0c;甲方希…

项目管理实战总结(一)

前言 主动申请参与到这个项目&#xff0c;是非常清楚工作强度大、难度大的情况的&#xff0c;明知山有虎偏向虎山行。我确信通过这个项目&#xff0c;一定有我需要的东西。目前项目已经完成了终验的专家评审&#xff0c;进入到运维阶段。对于个人而言&#xff0c;如果记忆中只…

全网超细,自动化测试-数据管理/实施落地问题,跟着直接上高速...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 自动化测试——测…