一、认识Transforms
transforms 是 torchvision 库中的一个模块,它提供了一系列的图像预处理功能。这些功能可以被用来对图像数据进行变换,以便它们能够被神经网络模型更好地处理。transforms 模块中的函数通常用于数据增强(data augmentation),这是机器学习中常用的技术,可以提高模型的泛化能力。
transforms常用的功能:
转换为Tensor : 将PIL图像或NumPy数组转换为FloatTensor,并且将图像像素值从[0, 255]缩放到[0.0, 1.0]。
标准化 : 根据提供的均值和标准差对图像进行标准化处理,这通常用于训练深度学习模型。
随机裁剪 : 从图像中随机裁剪出一个指定大小的区域。
随机水平翻转 : 以一定的概率水平翻转图像。
随机旋转: 随机旋转图像一定的角度。
中心裁剪 : 裁剪图像的中心区域到指定大小。
transforms的composes功能:将几个不同的transforms组合成一起。
transforms的ToTensor功能:将PIL Image或者numpy.ndarray数据类型转化成tensor.
transforms的Resize功能:对图片进行尺寸的变换。
transforms的CenterCrop功能:对图片进行中心的裁剪.
二、ToTensor方法使用
数据转换方法:
transform函数中集成的特殊方法之一
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)
这方法意思是接收一个pic变量,它是一个PIL图像(PIL是Python Imaging Library的缩写)或者一个NumPy数组。这个方法的目的是将输入的图像转换为一个PyTorch张量(Tensor)。
图片的相对路径:
绝对路径:C:\Users\Casey\AppData\Local\Python_learn\pythonProject1\Dataset\train\ants\0013035.jpg
相对路径:Dataset/train/ants/0013035.jpg
通常在Windows中, \ 会被当成转义符号,要想被计算机识别,应该用双斜杠\
也就是C:\\Users\\Casey\\AppData\\Local\\Python_learn\\pythonProject1\\Dataset\\train\\ants\\0013035.jpg
所以一般引用图片路径,都是使用相对路径。
代码:
from PIL import Image
from torchvision import transforms
img_path = "Dataset/train/ants/0013035.jpg"
img = Image.open(img_path)
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)
print(tensor_img)
通过ToTensor转换成tensor结果:
其中将指针放在tensor_img = tensor_trans()
的括号中,按下键盘的Ctrl+P,可以看到需要什么参数。如下图的pic
通过OpenCV读取图片的格式是numpy.ndarray形数据,同样可以用ToTensor进行格式转换。
报错语句可以通过Alt+空格查看默认的解决方案:
选择即可自动引用第三方库。
三、展示图片的方法
什么是SummaryWriter
torch.utils.tensorboard 模块中的 SummaryWriter 类来创建一个 TensorBoard 的日志写入器。其主要的作用也就是写入功能。TensorBoard 是 TensorFlow 提供的一个可视化工具,但它也支持 PyTorch。它可以帮助用户可视化训练过程中的各种指标,如损失、准确率,以及模型的计算图和激活分布等。
代码:
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
img_path = "Dataset/train/ants/0013035.jpg"
img = Image.open(img_path)
#writer只是一个新命名的存储变量,用来接收SummaryWriter("logs")的变量
writer = SummaryWriter("logs")
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)
print(tensor_img)
writer.add_image("Tensor_img",tensor_img)
writer.close()
写完代码后,在pycharm的Terminal终端中输入一下指令:
tensorboard --logdir=logs
回车即可得到下面这条连接:
打开连接就能看到图片