Day4 transforms(一)
前言
torchvision 中的 transforms ,主要是对目标图像进行变换(预处理),它就是一个.py的模块,里面有很多工具,可以理解为一个工具箱。
一、通过transforms.ToTensor去看两个问题
1.transforms该如何使用(python)
可以把transforms视为一个工具箱,里面包含了例如totensor等工具,需要这个类中某个方法的操作时,只需要从工具箱中找到对应方法实例化创建出具体工具,并使用创建好的工具对特定格式的数据进行操作。
ToTensor: Convert a
PIL Image
ornumpy.ndarray
totensor
以totensor
“工具”为例:
(其中img是一个指定过路径的PILImage型图片,以Image.open方式打开)
from torchvision import transforms
tensor_trans=transforms.ToTensor() # 创建具体的工具"tensor_trans"
img_tensor=tensor_trans(img)
图示:
2.为什么需要Tensor数据类型
因为在tensor
中封装了许多训练神经网络中会用到的参数,例如requires_grad等。并且有些特定的方法要求参数类型为tensor,例如add_image等。
二、PILImage型和numpy.ndarray型的读取
1.PILImage
代码如下:
from PIL import Image
path="dataset/train/ants_imge/Ant_1.jpg"
img=Image.open(path)
print(img)
2.numpy.ndarray
代码如下:(安装opencv:pip install opencv-python
)
import cv2
cv_img=cv2.imread(img_path)
print(cv_img)
三、ToTensor与Tensorboard配合使用
单纯是因为tensorboard中的
add_image
方法要求传入的参数类型为numpy
或tensor
型
关键细节在Day3中已经写的够详细,直接上代码:
import numpy as np
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
from PIL import Image
image_path='dataset/train/ants_image/0013035.jpg'
image=Image.open(image_path)
tensor_trans=transforms.ToTensor()
tensor_img=tensor_trans(image)
print(np.array(image).shape)
print(tensor_img.shape)
writer=SummaryWriter('logs') # 写入tensorboard
writer.add_image('tag', tensor_img, 1)
writer.close()
四、目前学到的三种类型转换关系及其读取(手绘)
(方便自己复盘用 ^ _ ^)