深度学习(小土堆)

transforms.ToTensor()

在 PyTorch 中,transforms.ToTensor() 是一个常用的图像转换操作之一。它的作用是将 PIL 图像或 NumPy 数组转换成 PyTorch 的 Tensor 对象。

Tensor 对象是 PyTorch 中表示多维数组的数据类型,类似于 NumPy 数组。相比于 PIL 图像和 NumPy 数组,Tensor 对象更适合在深度学习模型中使用。

transforms.ToTensor() 的具体功能包括:

将 PIL 图像从范围为 [0, 255] 的整数转换为范围为 [0, 1] 的浮点数。
如果输入是多通道的图像(例如 RGB 图像),则会对每个通道进行相同的转换。
深度学习(小土堆)_第1张图片

PIL

PIL(Python Imaging Library)是一个用于处理图像的常用 Python 库。它提供了一套丰富的图像处理功能,可以打开、保存、创建和编辑各种常见的图像格式,如 JPEG、PNG、BMP 等。

在 PIL 中,图像被表示为 Image 对象。通过使用 PIL 库中的函数和方法,我们可以对图像进行各种操作,如调整大小、裁剪、旋转、滤镜应用、像素操作等。

PIL 图像对象具有一些常见的属性和方法,例如:

size 属性:返回图像的大小(宽度和高度)。
mode 属性:返回图像的色彩模式(例如,“RGB” 表示彩色图像)。
resize() 方法:调整图像的尺寸。
crop() 方法:裁剪图像。
rotate() 方法:旋转图像。
save() 方法:将图像保存到文件中。
使用 PIL,我们可以轻松地加载图像、进行基本的图像处理和图像增强,并将其用于深度学习、计算机视觉和图像处理任务中。
深度学习(小土堆)_第2张图片
深度学习(小土堆)_第3张图片
深度学习(小土堆)_第4张图片

transform

在深度学习中,数据预处理是非常重要的一步。在 PyTorch 中,transform 模块为我们提供许多常见的图像数据预处理方法,以便于我们将其应用于数据集。transform 模块提供的数据预处理方法包括:

transforms.Compose(transforms):将多个数据预处理方法合并成一个组合预处理方法。
transforms.Resize(size):改变图像的大小。
transforms.CenterCrop(size):对图像进行中心裁剪。
transforms.RandomCrop(size):对图像进行随机裁剪。
transforms.RandomHorizontalFlip():对图像进行随机水平翻转。
transforms.RandomRotation(degrees):对图像进行随机旋转。
transforms.Normalize(mean, std):对图像进行归一化。

import torchvision.transforms as transforms

# 定义数据预处理方法
transform = transforms.Compose([
    transforms.Resize(256),
    transforms.CenterCrop(224),
    transforms.RandomHorizontalFlip(),
    transforms.RandomRotation(10),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])

# 应用数据预处理
dataset = torchvision.datasets.ImageFolder('path/to/data', transform=transform)

该示例将图像大小调整为 256×256,然后对其进行中心裁剪为 224×224,并应用随机水平翻转、随机旋转、将图像转换成 Tensor 对象和归一化等数据预处理操作。transforms.Compose() 函数将所有预处理操作合并到一个预处理方法中。
使用 transform 模块可以方便地对图像进行多种预处理操作,从而提高深度学习模型的性能。
在 PyTorch 的 transforms 模块中,我们可以首先创建数据预处理方法的实例,然后将这些实例作为函数来使用,传递需要预处理的数据作为参数。
例如,transform.ToTensor() 是将图像转换为 Tensor 对象的预处理方法。首先创建一个 ToTensor 的实例,然后将该实例作为函数调用并传递需要转换的图像作为参数。
深度学习(小土堆)_第5张图片
深度学习(小土堆)_第6张图片
SummaryWriter 是 PyTorch 的 TensorBoard 模块中的一个类,用于创建和记录 TensorBoard 事件文件。
使用 SummaryWriter 创建、记录和关闭事件文件,并使用 add_image 方法添加图片数据:

from tensorboardX import SummaryWriter
import numpy as np
import torch

# 创建 SummaryWriter 实例
writer = SummaryWriter()

# 添加图片数据
image_np = np.random.randn(3, 32, 32)  # 示例中使用随机生成的图像数据
image_tensor = torch.from_numpy(image_np)
writer.add_image('Image', image_tensor, global_step=0)  # global_step 为可选参数,用于指定写入的步骤数

# 关闭 SummaryWriter
writer.close()

①导入了 SummaryWriter 类,并创建了一个实例 writer。②然后,生成了一个随机的图像数据 image_np,并将其转换为 PyTorch 的 Tensor 对象 image_tensor。③接下来,使用 writer.add_image 方法将图像数据添加到事件文件中。‘Image’ 是用于标识图像数据的名称,image_tensor 是添加的图像数据,global_step 是可选参数,用于指定写入的步骤数。④最后,使用 writer.close() 关闭 SummaryWriter。使用 SummaryWriter 将各种类型的数据记录到事件文件中,然后使用 TensorBoard 来可视化这些数据,以帮助您分析和理解模型的训练过程。

常见的transform

深度学习(小土堆)_第7张图片

normalize

深度学习(小土堆)_第8张图片
深度学习(小土堆)_第9张图片
深度学习(小土堆)_第10张图片
深度学习(小土堆)_第11张图片
深度学习(小土堆)_第12张图片

深度学习(小土堆)_第13张图片

transforms.Resize(512)

transforms.Resize(512) 是 PyTorch 中的图像预处理操作之一,用于将图像调整为指定尺寸。
具体来说,这个操作会将输入图像的较短边调整为 512 个像素,同时保持图像的纵横比不变。如果图像的宽度小于高度,则它的宽度将被调整为 512,并将高度等比例缩放。如果图像的高度小于宽度,则它的高度将被调整为 512,并将宽度等比例缩放。如果图像的宽度和高度都大于 512,则图像将被缩小,以便它的较短边等于 512。
需要注意的是,transforms.Resize 操作对于大多数图像分类任务来说都是必需的,因为它可以使所有输入图像都具有相同的尺寸,从而便于将它们传递到深度学习模型中进行训练和推理。如果输入图像的大小不同,那么它们需要通过一些额外的操作才能被传递到模型中,这可能会增加模型的计算负担和复杂度,并影响模型的精度和效果。
总之,transforms.Resize(512) 是一种将输入图像调整为指定尺寸的操作,用于图像分类模型的预处理和数据增强中。
深度学习(小土堆)_第14张图片
transforms.Resize((512, 512)) 是一种非等比例缩放操作,而 transforms.Resize(512) 是一种等比例缩放操作。非等比例缩放会导致图像的宽高比发生改变,而等比例缩放会保持纵横比不变。

你可能感兴趣的:(深度学习,机器学习,深度学习,人工智能)