Pytorch深度学习_Transforms的使用

 在深度学习和计算机视觉中,Transforms 是一个用于图像预处理的库,它通常与数据加载库一起使用,比如 PyTorch 的 torchvision 库。Transforms 能够让你对图像数据进行各种操作,如调整大小、裁剪、归一化等,这对于训练机器学习模型来说非常重要。

问题一:我们应该如何使用Transforms?

                                             下面是transforms结构及用法的示意图

以下是一些常用的 Transforms 工具及其功能:

  1. 调整大小:

    • Resize(size): 将图像调整到指定的大小。
    • Scale(size): 缩放图像到指定的大小。
  2. 裁剪:

    • Crop(size): 在中心裁剪图像到指定大小。
    • RandomCrop(size): 随机裁剪图像到指定大小。
    • CenterCrop(size): 在图像中心裁剪出指定大小的区域。
  3. 翻转和旋转:

    • RandomHorizontalFlip(): 随机水平翻转图像。
    • RandomVerticalFlip(): 随机垂直翻转图像。
    • RandomRotation(degrees): 随机旋转图像指定的角度。
  4. 颜色调整:

    • ColorJitter(brightness, contrast, saturation, hue): 随机变化图像的亮度、对比度、饱和度和色调。
  5. 仿射变换:

    • RandomAffine(degrees, translate, scale, shear): 对图像进行随机仿射变换。
  6. 滤波:

    • GaussianBlur(): 对图像应用高斯模糊。
  7. 转换为张量:

    • ToTensor(): 将 PIL 图像或 Numpy 数组转换为 FloatTensor,并将数值范围从 [0, 255] 转换到 [0.0, 1.0]。
  8. 归一化:

    • Normalize(mean, std): 使用均值和标准差对图像进行归一化。
  9. Lambda 函数:

    • Lambda(lambd): 应用一个 lambda 函数作为转换。
  10. 组合转换:

    • Compose(): 组合多个转换操作,按顺序执行。
  11. 其他:

    • Grayscale(): 将图像转换为灰度。
    • RandomGrayscale(p): 以概率 p 将图像转换为灰度。
    • RandomErasing(): 随机擦除图像的一部分。
    • Pad(padding): 填充图像边缘。

 实战使用示例:

#导入Python Imaging Library (PIL)库,这是Python中处理图像的主要库之一。
from PIL import Image 
#导入PyTorch库中的TensorBoard SummaryWriter类。
# TensorBoard是TensorFlow的可视化工具,而PyTorch提供了一个接口可以使其与TensorBoard兼容。SummaryWriter类是这个接口的一部分,可以将信息写入TensorBoard可以读取的日志中。
from torch.utils.tensorboard import SummaryWriter
# 导入PyTorch的视觉库中的transforms模块。transforms模块提供了许多常见的图像转换,例如裁剪、旋转、缩放等。
from torchvision import transforms


# 定义要打开的图像的路径
img_path = "E:\program1-Classified Protection Assessment\data_set\hymenoptera_data\val\ants\800px-Meat_eater_ant_qeen_excavating_hole.jpg"
# 使用PIL库打开图像
img = Image.open(img_path)
# 创建一个SummaryWriter对象,并指定日志将被写入的目录(在这里是"logs"目录)。
writer = SummaryWriter("logs")


# 创建一个转换对象,用于将PIL图像或NumPy ndarray转换为PyTorch张量
tensor_trans = transforms.ToTensor()
# 使用上述转换对象将图像转换为张量
tensor_img = tensor_trans(img)


# 使用SummaryWriter对象的add_image方法将图像张量添加到日志中。"Tensor_img"是图像的标签,tensor_img是要添加的图像张量。
writer.add_image("Tensor_img",tensor_img)
# 关闭SummaryWriter对象。
writer.close(),writer.close()

之后我们在pycharm终端中输入:

tensorboard --logdir=logs

 即可得到图像

拓展:

不过在生成图像时出现了错误,一直找方法解决了一天,具体错误和解决方法我后续文章会补充

问题二:为什么需要tensor数据类型?

张量是深度学习中数据和计算的基础,它们提供了一种高效、灵活且强大的方式,用于表示数据、执行计算和构建复杂的神经网络模型。

  1. 数据表示: 张量(Tensor)是多维数组的通用形式,可以表示各种形式的数据,如图像、音频、文本等。在深度学习中,数据通常以张量的形式输入到模型中。

  2. 计算图: 深度学习框架(如PyTorch和TensorFlow)使用计算图来执行操作和自动微分。张量是计算图中的节点,它们之间的边代表操作或函数。

  3. 自动微分: 张量类型允许框架自动计算导数,这对于训练神经网络至关重要。在反向传播过程中,梯度(即导数)以张量的形式传播。

  4. GPU加速: 张量可以在GPU上高效地进行操作,这大大加快了计算速度。深度学习模型通常包含大量的矩阵运算,而GPU对这类运算有天然的加速优势。

  5. 灵活性: 张量类型提供了灵活性,允许研究人员和开发人员构建复杂的模型结构和算法。

  6. 库支持: 深度学习框架提供了大量的库函数和操作,这些函数和操作都是针对张量设计的。使用张量可以方便地调用这些函数,执行如卷积、池化、归一化等操作。

  7. 数据结构: 张量是深度学习中数据结构的基础,它们可以很容易地与神经网络层和优化器等其他组件集成。

  8. 批处理: 在实际应用中,通常需要同时处理多个数据点(批处理),张量类型可以自然地表示这种批处理数据。

  9. 节省内存: 张量允许框架优化内存使用,因为它们可以共享数据和内存空间,这在构建深度神经网络时尤其重要。

  10. 跨框架兼容性: 张量类型在不同的深度学习框架之间具有相似性,使得从一个框架迁移到另一个框架变得更加容易。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值