Transforms使用

文章目录

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

一、认识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函数中集成的特殊方法之一

    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)。

图片的相对路径:

绝对路径: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
所以一般引用图片路径,都是使用相对路径。

代码:

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。它可以帮助用户可视化训练过程中的各种指标,如损失、准确率,以及模型的计算图和激活分布等。

代码:

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终端中输入一下指令:

 tensorboard --logdir=logs

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1522694.html

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

相关文章

24:【stm32】DMA数据搬运

DMA数据搬运 1、DMA的简介2、STM32中的DMA结构3、案列3.1、将数组DataA中的数据搬运到DataB中3.2、ADC扫描模式DMA 1、DMA的简介 DMA是直接存储器存取,它可以提供外设寄存器和存储器,存储器与存储器之间的高速数据的传输,无需CPU的干预&…

24数学建模国赛提供助攻(13——灰色系统理论)

需要资料和助攻的小伙伴可以看文章末尾链接加入企鹅!!!! 点击链接获取资料以及国赛助攻https://qm.qq.com/q/NGl6WD0Bky

手撕Python之散列类型

1.字典 思考:如果有多个数据,例如:“凯子”,“男”,19,如何快速存储这些数据 多数我们是通过列表进行存储的 li[凯子,男,19] 在定义完这个列表之后我们如何来找到数据凯子呢? 我们可以通过…

嵌入式全栈开发学习笔记---Linux系统编程(进程间通信)

目录 进程间通信概述 进程通信目的 进程间通信的发展 进程间通信分类 管道通信 无名管道 有名管道mkfifo() 信号 发送信号kill & raise 忽略信号signal() 发送信号alarm() 消息队列 消息队列使用的步骤 创建消息队列msgget() 读写消息队列msgrcv()/msgsnd()…

Your connection to this site is not secure

chrome 打开某一个网站的网页地址栏提示Your connection to this site is not secure,同一个网站的其它地址栏打开不会 无效的方案 浏览器地址栏输入: chrome://flags 找到下边的选项,从Default改为Disabled即可成功解决 亲测这个方法不行 解决方案 点击右上角的3个…

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

渗透测试靶机— DC系列 DC-6 开启靶机,登录页面,平平无奇 扫描ip,端口,服务等信息 访问80,发现这里是WordPress站点 直接wpscan扫描一下用户名wpscan --url http://wordy -e u 这里可以将扫出来的五个用户名保存&…

64位Office API声明语句第001讲

跟我学VBA,我这里专注VBA, 授人以渔。我98年开始,从源码接触VBA已经20余年了,随着年龄的增长,越来越觉得有必要把这项技能传递给需要这项技术的职场人员。希望职场和数据打交道的朋友,都来学习VBA,利用VBA,起码可以提高…

数理天地杂志数理天地杂志社数理天地编辑部2024年第12期目录

基础精讲 “瓜豆模型”与动点问题探析 明倩妤; 2-3 二次函数参数取值范围常见题型分析 邹纯; 4-5 基于数形结合思想的初中数学解题实践——以初中函数问题为例 李玉平; 6-7 旋转思想在构造全等三角形中的渗透 赵兴燕; 8-9 初中数学“一元一次方程”试题设计…

传统CV算法——特征匹配算法

Brute-Force蛮力匹配 Brute-Force蛮力匹配是一种简单直接的模式识别方法,经常用于计算机视觉和数字图像处理领域中的特征匹配。该方法通过逐一比较目标图像中的所有特征点与源图像中的特征点来寻找最佳匹配。这种方法的主要步骤包括: 特征提取&#xff…

实现进程间通信的几种方式

实现进程间通信的几种方式 一. 传统的进程间通信 - 管道文件 管道是 UNIX 系统中最古老的进程间通信技术。早期的管道是半双工通信,现有的系统管道是全双工通信。管道是一种特殊的文件,数据在文件中是流动的,读取之后自动消失,如…

【重学 MySQL】二、MySQL 介绍

【重学 MySQL】二、MySQL 介绍 MySQL 概述MySQL 的主要特点MySQL 的应用场景结论 MySQL 发展史初始创建与发布开源与快速成长重要版本发布收购与变革分支与竞争持续发展与现代应用 关于 MySQL8.0主要新特性和改进兼容性和迁移应用场景总结 为什么选择 MySQLOracle VS MySQL基本…

Java-线程的生命周期7大状态

在 Java 中,线程的生命周期可以分为多个状态,这些状态描述了线程从创建到终止的整个过程。Java 线程的生命周期主要包括以下七大状态: 1.新建状态(New) 当一个线程对象被创建但尚未调用 start() 方法时,线…

mysql高级sql

一,查询 1.按关键字排序 1.1用 **ORDER BY** 语句来实现排序: - ORDER BY 语句用于对查询结果进行排序。可以根据一个或多个字段的值进行升序(ASC)或降序(DESC)排序。1.2排序可针对一个或多个字段&#…

终于有人把数据中台讲明白了

在大数据发展的黄金期,几乎所有的高科技企业都在思考一个问题:海量数据作为大多数企业发展不可避免的一个趋势之后,企业该怎么去应用这部分数据资产,会对其商业产生什么影响,如何使数据对企业产生正面的推动而不是成为…

mysql高级知识之集群

一、安装 源码编译MySQL,若需要MySQLtar包可私信我 #创建数据目录 mkdir /data/mysql -p#安装相关依赖 yum install libtirpc-devel-0.2.4-0.16.el7.x86_64.rpm yum install cmake gcc-c++ openssl-devel ncurses-devel.x86_64 libtirpc-devel-1.3.3-8.el9_4.x86_64.rpm rpcgen…

安防视频综合管理系统EasyCVR视频汇聚平台集群部署出现状态不同步的情况是什么原因?

随着视频监控技术的快速发展,各类视频资源的整合、管理与分发成为了安防行业的重要挑战。视频综合管理系统EasyCVR视频汇聚平台通过集群部署,实现了视频资源的高效整合与管理。集群部署不仅能够提升系统的处理能力和稳定性,还能有效避免单点故…

JVM面试(四)类加载器和双亲委派机制

什么是类加载器? 简单来说的话,是用于实现“类加载动作”的加载器 “通过一个类的全限定名来获取描述该类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需的类。实现这个动作的代码被称为“类加载器…

Ollama拉起本地模型以及rag系统部署。

什么是 Ollama ? Ollama 是一个简明易用的本地大模型运行框架。能在本地启动并运行 Llama、qwen、Gemma 及其他大语言模型,没有GPU资源照样可以拉起模型,和LocalAI 比较类似,但是加载模型更容易。 1.安装 安装后运行&#xff0c…

解剖学上合理的分割:通过先验变形显式保持拓扑结构|文献速递--基于深度学习的医学影像病灶分割

Title 题目 Anatomically plausible segmentations: Explicitly preserving topology through prior deformations 解剖学上合理的分割:通过先验变形显式保持拓扑结构 01 文献速递介绍 进行环向应变或壁厚度的计算,这些测量通常用于诊断肥厚性心肌病…

Vue前端路由详解——以Ruoyi框架为案例学习

Vue路由 Vue路由详解_vue 页面路由-CSDN博客 路由模式 Vue 的路由模式:hash 模式和 history 模式的区别_vue路由history和hash的区别-CSDN博客 URL格式: Hash模式:URL中包含#号,用于区分页面部分,实际请求的页面地址…