首页 > 其他分享 >深度学习入门笔记——Transform的使用

深度学习入门笔记——Transform的使用

时间:2024-10-28 10:58:23浏览次数:5  
标签:__ tensor image Transform 笔记 transform 图像 格式 入门

Transfrom是什么?

可以看作是一个图像处理的工具箱,通过查看Transform类可以找到不同的图像处理方法

更准确的说,Transform中有各种类的的定义,我们可以通过继承或者构造这些类,然后调用里面的方法来实现相应的功能

可以通过结构来便捷的查看transform中的类和方法,然后实现对应的对象即可。其中__call__函数的作用就是在调用这个对象的时候自动调用的函数比如这是Totensor类的定义,可以看到就是将其他格式的图像转化为tensor格式的图像
具体的代码如下,输出的就是tensor类型的图像

from torchvision import transforms
from PIL import Image

image_path="dataset/hymenoptera_data/train/ants_image/7759525_1363d24e88.jpg"
image=Image.open(image_path)

transform_class = transforms.ToTensor() # 构造transform中的ToTensor类
image_tensor =transform_class(image) # 调用类将图像转化为tensor格式(__call__函数)
print(type(image_tensor))

Tensor格式有什么用

相较于PIL的image格式和numpy的array格式,tensor图像格式的作用在于它包含了用于神经网络的一些属性,比如反向传递、使用的是CPU还是GPU进行训练等等,所以tensor图像格式更适合用来进行神经网络的训练

from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
from PIL import Image


image_path="dataset/hymenoptera_data/train/ants_image/7759525_1363d24e88.jpg"
image=Image.open(image_path)

transform_class = transforms.ToTensor() # 构造transform中的ToTensor类
image_tensor =transform_class(image) # 调用类将图像转化为tensor格式(__call__函数)

writer = SummaryWriter("logs")
writer.add_image("tensor_image",image_tensor,1) # 用tensor格式显示图像
writer.close()

此外,我们可以看到,使用PIL处理的图像格式是Jpeg格式,opencv处理的图像是numpy的array格式,transform处理的图像是tensor格式,三者是不相同的

各种格式以及对应的调用方法如下:

标签:__,tensor,image,Transform,笔记,transform,图像,格式,入门
From: https://www.cnblogs.com/cyMessi/p/18509826

相关文章

  • eBay自养号测评详解:从入门到精通
    随着全球电子商务的蓬勃发展,eBay平台作为行业的重要一员,日益吸引着众多卖家的目光。其庞大的用户群体、顺畅的交易流程以及高效的物流体系,共同营造了一个既活跃又可靠的在线市场。然而,随着电商行业的不断进步,传统运营模式在应对市场快速变化时面临挑战,特别是在创新营销策略和应......
  • 操作系统笔记整理
    操作系统笔记整理第一章操作系统引论1、OS是配置在计算机硬件上的第一层软件。(P1)2、OS的目标:在计算机系统上配置OS,其主要目的是实现:方便性、有效性、可扩充性、开放性。(P2)3、OS的作用:可以从人机交互、资源管理及资源抽象等不同方面分析OS在计算机系统中所起的作用。(P3)......
  • JavaWeb知识点总结 我的学习笔记
    JavaWeb我的学习笔记一、动态网页开发1.动态网页2.系统架构C/S架构B/S架构B/S与C/S的比较3.URL通信三要素4.Tomcat服务器二、Servlet1.Servlet简介2.Servlet快速入门入门样例执行原理3.Servlet的体系结构4.servlet的十大方法5.Servlet生命周期6.在web.xml中配置servl......
  • CodeQL学习笔记(2)-QL语法(递归)
    最近在学习CodeQL,对于CodeQL就不介绍了,目前网上一搜一大把。本系列是学习CodeQL的个人学习笔记,根据个人知识库笔记修改整理而来的,分享出来共同学习。个人觉得QL的语法比较反人类,至少与目前主流的这些OOP语言相比,还是有一定难度的。与现在网上的大多数所谓CodeQL教程不同,本系列基于......
  • 阅读笔记1
    在《程序员修炼之道:从小工到专家》中,作者首先强调了编程基础的重要性。这不仅仅是对语言语法的熟悉,更是对计算机科学原理的深入理解。我深刻体会到,无论技术如何更新迭代,扎实的基础都是解决问题的关键。书中提到的“代码即文档”的理念让我印象深刻。这意味着,我们应该编写清晰、易......
  • 《代码大全2》第二部分阅读笔记(1)
    日常编写代码时,要注重变量的命名与使用。变量的命名应该具有清晰的语义,能够准确反映其代表的含义,并且要遵循一定的命名规范。同时,在使用变量时要注意其作用域和生命周期的合理控制,以避免错误和提高代码的可读性与可维护性。作者通过实际代码示例指出,不清晰的变量命名会导致代码理......
  • 《代码大全2》第二部分阅读笔记(2)
    编写高质量的函数:函数应该具有单一的明确功能,函数体要短小精悍,避免过长和复杂。同时,要注意函数的参数设计合理,返回值清晰明确,并且函数之间的耦合度要低,内聚性要高。如一个函数承担了过多不同的任务,导致函数逻辑混乱,难以理解和维护。而高质量的函数,如计算两个数之和的简单函数,功能......
  • 深入理解Docker,从入门到精通-Part1(基础使用)
    一、Docker基本概念Docker架构基本组件的介绍DockerClient是用户界面,它支持用户与DockerDaemon之间通信DockerDaemonDocker最核心的后台进程,运行于主机上,处理服务请求Dockerregistry是中央registry,支持拥有公有与私有访问权限的Docker容器镜像的备份DockerConta......
  • 力扣前1500道非会员题刷题笔记
    Problem:1.两数之和思路首先定义一个unordered_map<int,int>heap,用来记录数组nums中对应的数的下标然后在一个for循环里遍历nums数组用r记录target与当前数组的值的差值,再从当前数的前面找有没有这个差值,也就是heap.count(r),如果有则返回{heap[r],i},如果没有就把当......
  • WPF入门_06资源和样式
    目录1、资源基础介绍2、静态资源和动态资源区别3、资源字典4、共享资源的方法5、在CustomControlLibrary中定义和使用共享资源6、样式7、样式触发器1、资源基础介绍尽管每个元素都提供了Resources属性,但通常在窗口级别上定义资源,如下定义一个字符串资源  <Wi......