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 参考资料

相关推荐
STRUGGLE_xlf3 分钟前
产品经理的 Claude Code 免费教程——模块 3:Nano Banana(AI 图像生成)
人工智能·产品经理
却道天凉_好个秋3 分钟前
pytorch(一):张量
人工智能·pytorch·python·深度学习
搞科研的小刘选手5 分钟前
【高届数人文社科会议】第十二届人文学科和社会科学研究国际学术会议(ICHSSR 2026)
大数据·人工智能·电子信息·电子工程·学术会议·信息工程·电路工程
0xDevNull6 分钟前
现代AI系统架构全景解析
人工智能·系统架构
华清远见IT开放实验室8 分钟前
AI 算法核心知识清单(深度实战版1)
人工智能·python·深度学习·学习·算法·机器学习·ai
亚远景aspice10 分钟前
亚远景推出国内首款汽车研发合规AI全栈产品 填补和引领行业AI应用
大数据·人工智能
大囚长11 分钟前
大模型知识与逻辑推理能力的关系
人工智能
世优科技虚拟人12 分钟前
重庆合川发布陶行知AI数字人,世优科技提供数字人全栈技术支持
人工智能·科技·数字人·智能交互
云烟成雨TD16 分钟前
Spring AI 1.x 系列【27】Chat Memory API:让 LLM 拥有上下文记忆能力
java·人工智能·spring
kimi-22217 分钟前
如何让大语言模型稳定输出 JSON 的三层防御体系
人工智能·语言模型·json