AI开发-三方库-torch-torchvision

1 需求

  • 数据集:torchvision.datasets
    • torchvision.datasets.MNIST
  • 数据变换:torchvision.transforms
    • torchvision.transforms.Compose
    • torchvision.transforms.ToTensor
    • torchvision.transforms.Normalize
  • 模型:torchvision.models
  • 可视化工具:torchvision.utils

2.1 torchvision.datasets

  • torchvision.datasets.MNIST

CLASS torchvision.datasets.MNIST(root: Union[str, Path], train: bool = True, transform: Optional[Callable] = None, target_transform: Optional[Callable] = None, download: bool = False)

  • root
  • train
  • transform
  • download

MNIST --- Torchvision 0.20 documentation


2.2 torchvision.transforms

  • torchvision.transforms
  • torchvision.transforms.Compose
  • torchvision.transforms.ToTensor
  • torchvision.transforms.Normalize

torchvision.transforms

torchvision.transforms --- Torchvision 0.11.0 documentation

Transforming and augmenting images --- Torchvision 0.20 documentation


CLASS torchvision.transforms.Compose(transforms)

Compose --- Torchvision 0.20 documentation


CLASS torchvision.transforms.ToTensor

ToTensor --- Torchvision 0.20 documentation


CLASS torchvision.transforms.Normalize(mean, std, inplace=False)

Normalize --- Torchvision 0.20 documentation


3 示例

import torchvision.transforms as transforms
from PIL import Image

transforms = transforms.Compose([
    transforms.ToTensor()
])

image = Image.open("./Data/1.png")

tensor_image = transforms(image)

print(tensor_image)

torchvision 是一个基于 PyTorch 的用于计算机视觉任务的库,它提供了诸多便捷的工具、数据集和模型等资源,极大地简化了计算机视觉相关深度学习项目的开发流程。以下是对它的详细介绍:

3.1 数据集(Datasets)

  • torchvision.datasets 模块包含了许多常见的计算机视觉数据集的加载器,比如:
    • MNIST:这是一个手写数字识别数据集,包含了大量的手写数字图像(0 - 9)以及对应的标签,常用于图像分类任务的入门练习和研究。
    • CIFAR - 10:由 10 个不同类别的 60000 张彩色小图像组成,每类有 6000 张图像,图像尺寸较小(32×32 像素),同样广泛应用于图像分类任务的实验和模型评估等。
    • CIFAR - 100:与 CIFAR - 10 类似,但包含 100 个不同的类别,图像数量和尺寸与 CIFAR - 10 相同,可用于更具挑战性的分类任务。
    • ImageNet:一个非常大规模的图像数据集,涵盖了众多的类别(超过 1000 个)和大量的图像,是许多先进的计算机视觉模型训练和评估的重要基础数据集,不过其完整数据集体积庞大,使用时可能需要根据具体需求进行部分下载或采用其预训练模型。

这些数据集加载器使得获取和预处理这些常用数据集变得十分容易,只需简单设置参数(如是否下载、数据集根目录、数据变换等)就可以将数据集加载到内存并转换为适合模型训练的格式(通常是张量格式)。

3.2 数据变换(Transforms)

  • torchvision.transforms 模块提供了一系列用于对图像进行变换的操作,主要用于数据增强和数据预处理,具体如下:
    • 几何变换 :包括裁剪(如中心裁剪 CenterCrop、随机裁剪 RandomCrop)、翻转(如水平翻转 RandomHorizontalFlip、垂直翻转 RandomVerticalFlip)、旋转(RandomRotation)等操作,这些操作可以改变图像的几何形状,有助于模型学习到图像不同位置和姿态下的特征,同时也是数据增强的重要手段。
    • 颜色变换 :例如通过 ColorJitter 可以对图像的亮度、对比度、饱和度和色调进行随机调整,让模型能够适应不同颜色状态下的图像,提高模型的鲁棒性。
    • 归一化(Normalize):对图像的像素值进行归一化处理,通常是将像素值转换为均值为 0、标准差为 1 的分布,这样可以使数据分布更加符合模型训练的假设,有助于模型更快地收敛,避免梯度消失或梯度爆炸等问题。
    • 类型转换(ToTensor) :将图像数据从常见的格式(如 PIL 图像或者 numpy 数组)转换为 torch 中的张量格式,并且在转换过程中会自动将像素值范围从 [0, 255] 转换为 [0, 1](对于单通道图像)或者 [0, 1] 区间内的浮点数张量(对于多通道图像),这是使用 torchvision 数据集和模型的基本前提,因为 torch 中的模型需要以张量作为输入。

可以通过 torchvision.transforms.Compose 将多个变换操作组合在一起,形成一个完整的数据预处理流程。

3.3 模型(Models)

  • torchvision.models 模块提供了许多预训练好的计算机视觉模型,这些模型都是基于 PyTorch 构建的,常见的有:
    • AlexNet:早期具有开创性意义的深度学习模型之一,在图像分类任务上取得了显著的成果,为后续模型的发展奠定了基础。
    • VGG 系列:如 VGG16、VGG19 等,具有较深的网络结构,通过堆叠多个小卷积核的卷积层来实现较好的图像特征提取效果,在图像分类等任务中表现出色。
    • ResNet 系列:包括 ResNet18、ResNet34、ResNet51 等,引入了残差连接的概念,有效解决了随着网络深度增加而出现的梯度消失或梯度爆炸问题,在图像分类、目标检测等多个计算机视觉任务中广泛应用。
    • DenseNet 系列:采用了密集连接的方式,使得网络中的每个层都与前面的所有层直接相连,进一步提高了特征提取的效率和效果,在一些计算机视觉任务中也有很好的表现。

这些预训练模型可以直接用于预测任务,或者在其基础上进行微调(fine - tuning)以适应特定的视觉任务,如目标分类、目标检测等。通过简单设置参数就可以加载这些模型,并利用其已有的知识(即预训练的参数)来加速新任务的学习过程。

3.4 可视化工具(Utils)

  • torchvision.utils 模块提供了一些工具来帮助可视化图像数据和模型输出。例如:
    • make_grid:可以将一批图像整理成一个网格形式的张量,便于在训练过程中查看图像批次的情况,了解数据的分布和变化。
    • save_image:用于保存可视化后的图像,方便记录和分析训练过程中的各种图像相关结果。

这些可视化工具对于理解模型的行为和性能很有帮助,能够让开发者更直观地观察到模型在训练过程中的表现以及数据的处理情况。

总的来说,torchvision 是 PyTorch 生态系统中不可或缺的一部分,为计算机视觉领域的深度学习项目提供了全方位的支持。


4 参考资料

相关推荐
果冻人工智能36 分钟前
2025 年将颠覆商业的 8 大 AI 应用场景
人工智能·ai员工
代码不行的搬运工37 分钟前
神经网络12-Time-Series Transformer (TST)模型
人工智能·神经网络·transformer
石小石Orz39 分钟前
Three.js + AI:AI 算法生成 3D 萤火虫飞舞效果~
javascript·人工智能·算法
孤独且没人爱的纸鹤1 小时前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai
阿_旭1 小时前
TensorFlow构建CNN卷积神经网络模型的基本步骤:数据处理、模型构建、模型训练
人工智能·深度学习·cnn·tensorflow
羊小猪~~1 小时前
tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建
人工智能·python·深度学习·机器学习·cnn·tensorflow·neo4j
极客代码1 小时前
【Python TensorFlow】进阶指南(续篇三)
开发语言·人工智能·python·深度学习·tensorflow
zhangfeng11331 小时前
pytorch 的交叉熵函数,多分类,二分类
人工智能·pytorch·分类
Seeklike1 小时前
11.22 深度学习-pytorch自动微分
人工智能·pytorch·深度学习
庞传奇1 小时前
TensorFlow 的基本概念和使用场景
人工智能·python·tensorflow