一、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打不开