Transforms使用

文章目录

    • 一、认识Transforms
    • 二、ToTensor方法使用
    • 三、展示图片的方法

Transforms_1">一、认识Transforms

transforms 是 torchvision 库中的一个模块,它提供了一系列的图像预处理功能。这些功能可以被用来对图像数据进行变换,以便它们能够被神经网络模型更好地处理。transforms 模块中的函数通常用于数据增强(data augmentation),这是机器学习中常用的技术,可以提高模型的泛化能力。
transforms常用的功能:
转换为Tensor : 将PIL图像或NumPy数组转换为FloatTensor,并且将图像像素值从[0, 255]缩放到[0.0, 1.0]。
标准化 : 根据提供的均值和标准差对图像进行标准化处理,这通常用于训练深度学习模型。
随机裁剪 : 从图像中随机裁剪出一个指定大小的区域。
随机水平翻转 : 以一定的概率水平翻转图像。
随机旋转: 随机旋转图像一定的角度。
中心裁剪 : 裁剪图像的中心区域到指定大小。

transforms的composes功能:将几个不同的transforms组合成一起。
transforms的ToTensor功能:将PIL Image或者numpy.ndarray数据类型转化成tensor.
transforms的Resize功能:对图片进行尺寸的变换。
transforms的CenterCrop功能:对图片进行中心的裁剪.

在这里插入图片描述

二、ToTensor方法使用

数据转换方法:
transform函数中集成的特殊方法之一

python">    def __call__(self, pic):"""Args:pic (PIL Image or numpy.ndarray): Image to be converted to tensor.Returns:Tensor: Converted image."""return F.to_tensor(pic)

这方法意思是接收一个pic变量,它是一个PIL图像(PIL是Python Imaging Library的缩写)或者一个NumPy数组。这个方法的目的是将输入的图像转换为一个PyTorch张量(Tensor)。

图片的相对路径:

python">绝对路径:C:\Users\Casey\AppData\Local\Python_learn\pythonProject1\Dataset\train\ants\0013035.jpg
相对路径:Dataset/train/ants/0013035.jpg

通常在Windows中, \ 会被当成转义符号,要想被计算机识别,应该用双斜杠\
也就是C:\\Users\\Casey\\AppData\\Local\\Python_learn\\pythonProject1\\Dataset\\train\\ants\\0013035.jpg
所以一般引用图片路径,都是使用相对路径。

代码:

python">from PIL import Image
from torchvision import transforms
img_path = "Dataset/train/ants/0013035.jpg"
img = Image.open(img_path)
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)
print(tensor_img)

通过ToTensor转换成tensor结果:
在这里插入图片描述

其中将指针放在tensor_img = tensor_trans()的括号中,按下键盘的Ctrl+P,可以看到需要什么参数。如下图的pic
在这里插入图片描述

通过OpenCV读取图片的格式是numpy.ndarray形数据,同样可以用ToTensor进行格式转换。

报错语句可以通过Alt+空格查看默认的解决方案:
在这里插入图片描述
选择即可自动引用第三方库。

三、展示图片的方法

什么是SummaryWriter
torch.utils.tensorboard 模块中的 SummaryWriter 类来创建一个 TensorBoard 的日志写入器。其主要的作用也就是写入功能。TensorBoard 是 TensorFlow 提供的一个可视化工具,但它也支持 PyTorch。它可以帮助用户可视化训练过程中的各种指标,如损失、准确率,以及模型的计算图和激活分布等。

代码:

python">from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
img_path = "Dataset/train/ants/0013035.jpg"
img = Image.open(img_path)#writer只是一个新命名的存储变量,用来接收SummaryWriter("logs")的变量
writer = SummaryWriter("logs")tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)
print(tensor_img)writer.add_image("Tensor_img",tensor_img)writer.close()

写完代码后,在pycharm的Terminal终端中输入一下指令:

python"> tensorboard --logdir=logs

回车即可得到下面这条连接:
在这里插入图片描述

打开连接就能看到图片
在这里插入图片描述


http://www.ppmy.cn/news/1520318.html

相关文章

vulhub xxe靶机攻击教程

使用御剑目录扫描工具测试一下,发现有robots.txt文件 访问robots.txt文件,这个文件通常放的是一个网站的目录 我们得到两个目录,试着访问一下 xxe目录下是一个登录页面,xxe/admin.php目录下也是一个登录页面 我们先在xxe页面进行…

Spring Cloud Eureka与Kubernetes的集成:服务发现的混合方案

Spring Cloud Eureka与Kubernetes的集成:服务发现的混合方案 引言 随着微服务架构的流行,服务发现(Service Discovery)已经成为构建分布式系统的关键组件之一。在分布式系统中,服务实例的数量和位置是动态变化的&…

计算机网络: 第一章 概述_1

文章目录 1. 因特网概述1.1 网络、互联网与因特网的区别与关系1.2 因特网简介1.2.1 因特网发展的三个阶段1.2.2 因特网的组成 2. 电路交换 分组交换 报文交换2.1 电路交换2.2 分组交换2.3 报文交换2.4 三种交换方式的对比 3. 计算机网络的定义和分类3.1 计算机网络的定义3.2 计…

数论——拓展欧几里德算法复习

最近也是在备战比赛,所以也是来小小的复习了一下以前学的东西 最重要的是第一道题! 最重要的是第一道题! 最重要的是第一道题! 先放拓欧板子(不懂怎么推出了就发在评论区或者私聊) int exgcd(int a,i…

Docker 进阶构建:镜像与仓库管理

目录 三. docker镜像构建 1. docker镜像结构 2. 镜像运行的基本原理 3. 镜像获得方式 4. 镜像构建 5. Dockerfile实例 6. 镜像优化方案 6.1. 镜像优化策略 6.2. 镜像优化示例:缩减镜像层 6.3. 镜像优化示例:多阶段构建 6.4. 镜像优化示例:使用最精简镜像 四. docke…

渗透测试靶机----DC系列 DC-1

渗透测试靶机----DC系列 DC-1 开启靶机,依旧是登陆窗,平平无奇 扫描ip,扫描端口,服务等信息 可以看到这里存在80服务,访问看看 非常明显,这里存在一个Drupal 的cms 并且是一个登录框,思路打开 …

【日常记录-JS】HTML5中使用SVG元素

Author&#xff1a;赵志乾 Date&#xff1a;2024-08-28 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 1. 简介 在HTML5中使用SVG元素主要涉及到将SVG代码直接嵌入HTML文档&#xff0c;或者通过HTML元素&#xff08;如<img>、<obj…

协同过滤推荐算法:个性化推荐的基石

在信息爆炸的时代&#xff0c;个性化推荐系统成为帮助用户在海量数据中发现感兴趣的内容的关键工具。协同过滤推荐算法&#xff08;Collaborative Filtering, CF&#xff09;作为推荐系统中最重要的技术之一&#xff0c;它通过分析用户之间的行为模式来提供个性化推荐。本文将深…

大二必做项目贪吃蛇超详解之下篇游戏核心逻辑实现

贪吃蛇系列文章 上篇win32库介绍中篇设计与分析下篇游戏主逻辑 可以在Gitee上获取贪吃蛇代码。 文章目录 贪吃蛇系列文章5. 核心逻辑实现分析5. 3 GameRun5. 3. 1 PrintScore5. 3. 2 CheckVK5. 3. 3 BuyNewNode5. 3. 4 NextIsFood5. 3. 4 EatFood5. 3. 5 NotFood5. 3. 6 Chec…

STM32F401使用float浮点运算崩溃的一个解决实例

今天使用STM32F401开发大彩的串口屏通信&#xff0c;串口使用USART1,DMA通信&#xff0c;系统是FreeRTOS。 使用大彩提供的hmi_driver&#xff0c;执行到SetTextFloat这个函数时崩溃 该函数原型&#xff1a; void SetTextFloat(uint16 screen_id,uint16 control_id,float va…

dinput8.dll错误应该如何修复呢?五种快速修复dinput8.dll错误的问题

dinput8.dll文件是DirectInput库的一部分&#xff0c;主要负责处理游戏控制器的输入&#xff0c;如键盘、鼠标和游戏手柄等。这个文件通常位于Windows系统的System32文件夹中&#xff0c;是许多游戏和应用程序正常运行所必需的组件。它通过提供一个统一的接口来管理不同类型的输…

持续集成与持续部署(CI/CD)的深入探讨

在现代软件开发中&#xff0c;持续集成&#xff08;CI&#xff09;和持续部署&#xff08;CD&#xff09;已成为不可或缺的实践。这些方法旨在加快软件交付的速度&#xff0c;同时提高软件的质量和稳定性。通过CI/CD&#xff0c;开发团队可以频繁地将代码更改集成到主分支&…

集成电路学习:什么是ARM先进精简指令集计算机

ARM&#xff1a;先进精简指令集计算机 ARM先进精简指令集计算机&#xff08;Advanced RISC Machine&#xff0c;简称ARM&#xff09;是一种基于精简指令集计算机&#xff08;RISC&#xff09;原则的计算机处理器架构&#xff0c;由英国的ARM公司开发。这种架构以其低功耗和高性…

C++STL~~list

文章目录 一、list的概念二、list的使用三、list的练习四、与vector的对比五、总结 一、list的概念 list 是一种容器&#xff0c;实现了双向链表结构 它具有以下特点&#xff1a; 动态大小&#xff0c;可按需增减元素数量。高效的插入和删除操作&#xff0c;在任意位置插入和…

抽象和接口

a.抽象&#xff08;abstract&#xff09; 1. 定义 a. 抽象类&#xff1a;在普通类里增加了抽象方法。 b. 抽象方法&#xff1a;没有具体的执行方法&#xff0c;没有方法体的方法。 2. 总结 a. 因为抽象方法没有方法体&#xff0c;无法执行&#xff0c;所以不能…

Hackme靶机通关攻略

1.首先注册用户&#xff0c;登录 2.登录后&#xff0c;显示让我们查找自己喜欢的书&#xff0c;我们直接单击search&#xff0c;会列出很多书 3.随便选择一本书进行查询&#xff0c;与此同时进行抓包 4.放到重放器中&#xff0c;将数据改为1*&#xff0c;将数据包另存为1.txt&a…

c++11的学习

1.初始化列表 在C98中&#xff0c;标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定。 struct Fun {int x;int y; }; struct Date {Date(int _year, int _month, int _day):year( _year),month(_month),day(_day){}int year 2005;int month 01;int day …

Mac装机必备软件有哪些?苹果电脑实用软件推荐

刚刚入手MacBook或者苹果电脑需要安装哪些软件呢&#xff1f;越来越多的人使用 Mac&#xff0c;各种功能、各式各样的 Mac 软件也是五花八门。刚拿到 Mac 的小伙伴们可能会有点迷茫&#xff0c;今天就帮大家分类整理一些装机必备好用的 App&#xff0c;保证个个是神器&#xff…

区间的合并

区间合并的说明 业务中的区间合并是比较常见的需求&#xff0c;区间合并的核心有两点&#xff1a; 合并前排序&#xff0c;后面处理起来可以简单很多&#xff1b;两个区间合并&#xff0c;这是多个区间合并的基础。 完整代码 区间类 /*** 区间类&#xff08;left、right可…

udp可靠传输中ACK与NACK的选择

文章目录 介绍ACKNACK丢包触发常见问题包序号比较RTT&RTO估算乱序包UDP包乱序的原因乱序现象所说明的问题 乱序处理ACK与NACK结合使用数据包结构发送方策略接收方策略动态调整 介绍 在 UDP 可靠传输中&#xff0c;ACK&#xff08;Acknowledgment&#xff09;和 NACK&#x…