pytorch初学笔记(三)Tranforms的使用
创始人
2024-04-01 05:09:40

目录

一、transform的用法

1. tranforms的结构 

2. transforms的使用步骤

二、 transforms.ToTensor()的使用 

1. 内置__call__方法简介

2. ToTensor()使用

2.1 将PIL类型图像转换为tensor型 

2.2 将numpy类型图像转换为tensor型 

2.3 使用tensorboard显示tensor型图片

三、使用Tensor数据类型的原因


一、transform的用法

transforms在计算机视觉工具包torchvision下,torchvision.transforms是常用的图像预处理方法,对图像进行变换。

1. tranforms的结构 

transforms为工具箱,其中的class为不同的工具,可以使用帮助手册进行具体每个类以及其使用的查看。

点击pycharm左下角的structure可以看到transforms中个各类的具体结构。

transforms中有许多不同的类,分别对应不同的作用,比如最常用的ToTensor类,可以把PIL图片类型或者numpy类型转换为tensor型。

2. transforms的使用步骤

需要创建transforms工具箱中具体的工具进行使用。 

  1. 首先冲transforms中选择想要使用的类,如选择ToTensor类,transforms.ToTensor()
  2. 为这个类的使用来创建具体的工具 ( 实例化对象 ),tool = transforms.ToTensor()
  3. 将想要输入的图形使用刚刚创建的tool进行变换操作,result_image=tool(input_image)
  4. 得到结果

二、 transforms.ToTensor()的使用 

1. 内置__call__方法简介

Python __call__()方法(详解版) (biancheng.net)

call()方法是Python中一个很特殊的方法。凡是可调用对象,都可以通过调用__call__()方法来调用该对象。如果类中定义了__call__()方法,那么该类的实例对象也将成为可调用对象。该对象被调用时,将执行__call__()方法中的代码。

 该方法的功能类似于在类中重载 () 运算符,使得类实例对象可以像调用普通函数那样,以“对象名()”的形式使用。

因此当我们实例化ToTensor对象为tool时,tool = transforms.ToTensor(),则可以使用tool( )的形式来使用call函数。

如下所示为ToTensor中call函数所需的参数,为pic,即为PIL或numpy类型图像。所以可以在tool中传入pic参数来调用该方法,即 tool(pic)

    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)

2. ToTensor()使用

2.1 将PIL类型图像转换为tensor型 

  1. 创建PIL类型图像img_PIL
  2. 实例化ToTensor类的对象,起名为totensor_tool
  3.  隐式调用call方法,把img_PIL传入totensor_tool()中,生成tensor类型图像
  4. 输出tensor类型对象
from PIL import Image
from torchvision import transforms
#创建PIL图像
img_path = "datasets2/train/ants_image/0013035.jpg"
img_PIL = Image.open(img_path)
#创建ToTensor对象,实例化工具
totensor_tool = transforms.ToTensor()
#接收tensor类型图像
img_tensor = totensor_tool(img_PIL)
print(img_tensor)

2.2 将numpy类型图像转换为tensor型 

1. 使用pip命令安装OpenCV(OpenCV创建的图形都是numpy类型)

2. 创建numpy类型图像

import cv2
img_cv = cv2.imread(img_path)

 可以看到创建出来的img_cv类型是numpy型。

2.3 使用tensorboard显示tensor型图片

 创建两个图片对象,一个为PIL型,一个为numpy型,都使用ToTensor转换为tensor型,然后使用tensorboard可视化图片。

#tensor数据类型的使用
#通过transform.ToTensor解决两个问题
#1. transform如何使用      2. tensorimport cv2
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transformsimg_path1 = "datasets2/train/ants_image/0013035.jpg"
#创建PIL图像
img_PIL = Image.open(img_path1)
#创建ToTensor对象,实例化工具
totensor_tool = transforms.ToTensor()
#接收tensor类型图像1
img_tensor1 = totensor_tool(img_PIL)img_path2 = "datasets2/train/bees_image/16838648_415acd9e3f.jpg"
#创建numpy类型对象
img_cv = cv2.imread(img_path2)
#接收tensor类型图像2
img_tensor2 = totensor_tool(img_cv)#使用tensorboard显示图片
writer = SummaryWriter("logs")
writer.add_image("Tensor_img1",img_tensor1)
writer.add_image("Tensor_img2",img_tensor2)writer.close()

可以看到两张图片都进行了显示。 

三、使用Tensor数据类型的原因

张量(Tensor)是神经网络中使用的主要数据结构,在网络的输入、转换和输出都涉及到张量。在深度学习和神经网络中,张量是n维数组,我们用张量这个词来表示所有的n值,比如标量是零维张量、矢量是一维张量、矩阵是二维张量、n维数组是n维张量。

在pytorch中使用tensor是因为tensor型可以给我们提供深度学习和神经网络训练过程中需要的重要参数,非常方便。

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...