八、TorchVision中Transforms的使用

本文详细介绍了PyTorch torchvision库中的Transforms模块,包括其功能、常用类如ToTensor、ToPILImage、Normalize、Resize和CenterCrop等。通过实例展示了如何使用ToTensor将图片转换为tensor类型,并解释了为何在神经网络中需要tensor数据类型。此外,还演示了如何利用tensorboard显示tensor类型的图片。
摘要由CSDN通过智能技术生成

一、Transforms结构

1、功能

    对图片进行一些变换

2、引入库

from torchvision import transforms

3、结构

按住Ctrl,点击transforms,出现__init__.py,再按住Ctrl,点击trasforms,出现transforms.py,里面有各种类及各种方法。

transforms其实是一个.py文件,当作一个工具箱的话,里面还有很多分隔区和工具等。Traansforms.py文件中包含许多class,class内又有许多方法。

(1)最常用的是Totensor类,作用是把一个PIL/Numpy.ndarray类型的图片转化为tensor类型

(2)ToPILImage(object)方法:把一个图片转化为PILImage类型

(3)Normalize (object)正则化

(4)Resize(object):进行尺寸的变换

(5)CenterCrop(object):对图片进行中心的裁剪

二、Transform如何使用:以ToTensor()类为例

1、使用步骤

2、代码实战 

用PIL Image打开一个图片,然后转变为tensor类型进行输出。

from torchvision import transforms
from PIL import Image
#python中的用法->tensor的数据类型
#通过Transforms.ToTensor解决两个问题:transforms该如何使用?为什么我们需要Tensor的数据类型?
#绝对路径:E:\pytorch pycharm\data\train\ants_image\0013035.jpg
#相对路径:data/train/ants_image/0013035.jpg
#注意绝对和相对路径斜杠不一样,绝对路径中需要两个\,添加的一个起转义符的作用
img_path="data/train/ants_image/0013035.jpg"
img_path_abs="E:\\pytorch pycharm\\data\\train\\ants_image\\0013035.jpg"
img=Image.open(img_path_abs)
#1、如何使用Transforms:选择其中一个类创建实例对象,调用其中的方法,并添加方法所需要的参数
tensor_trans=transforms.ToTensor()#创建具体的工具:创建ToTensor类的实例对象
tensor_img=tensor_trans(img)#使用工具,输入img,输出tensor_img:传入object,Python自动调用函数返回tensor类型的图片
print(tensor_img)

三、为什么需要Tensor数据类型

tensor数据类型包含了神经网络所需要的一些参数

控制台运行以上代码可以看到:

右侧tensor_img是tensor数据类型,其中data是图片的具体数据,grad是梯度,grad_fn是梯度的方法,等等,都是反向传播所需要的一些参数 ,在神经网络中一般都会变为tensor类型进训练。

四、结合tensorboard显示tansforms的使用

1、teasorboead显示teasor类型的图片

import cv2
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
img_path="E:\\pytorch pycharm\\data\\train\\ants_image\\0013035.jpg"#图片路径
img_cv=cv2.imread(img_path)  #cv读取图片
tensor_trans=transforms.ToTensor()#创建ToTensor类的实例对象
img_tensor=tensor_trans(img_cv)#将cv2读取的numpy类型的图片转化为tensor类
write=SummaryWriter("logs")#创建SummaryWriter实例对象
write.add_image("tensor01",img_tensor)#调用add_image方法在tensorboard中显示图片
write.close()#千万别忘记,否则tensoeboard打不开

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值