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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/464737.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何检查雷池社区版 WAF 是否安装成功?

容器运行状态检查: 使用命令行检查:打开终端,连接到安装雷池的服务器。运行 docker ps 命令,查看是否有与雷池相关的容器正在运行。 如果能看到类似 safeline-mgt、safeline-tengine 等相关容器,并且状态为 Up&#x…

【AI开源项目】Botpress - 开源智能聊天机器人平台及其部署方案

文章目录 Botpress 概述Botpress 的定位 Botpress 的主要特点1. OpenAI 集成2. 易于使用3. 定制和扩展性4. 多平台支持5. 集成和扩展 API6. 活跃的社区和详尽的文档 部署方案集成集成开发集成部署机器人示例开发工具代理本地开发先决条件从源代码构建 Botpress 如何解决常见问题…

Rust 力扣 - 1652. 拆炸弹

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们只需要遍历长度长度为k的窗口&#xff0c;然后把窗口内数字之和填充到结果数组中的对应位置即可 题解代码 impl Solution {pub fn decrypt(code: Vec<i32>, k: i32) -> Vec<i32> {let n c…

HTMLCSS:打造酷炫下载安装模拟按钮

效果演示 这段代码通过HTML和CSS创建了一个具有交互效果的下载按钮&#xff0c;当复选框被选中时&#xff0c;会触发一系列动画和样式变化&#xff0c;模拟了一个下载和安装的过程&#xff0c;包括圆形的动画、文本的显示和隐藏等。 HTML <div class"container&quo…

【C++、数据结构】哈希表——散列表(一)(概念/总结)

「前言」 &#x1f308;个人主页&#xff1a; 代码探秘者 &#x1f308;C语言专栏&#xff1a;C语言 &#x1f308;C专栏&#xff1a; C / STL使用以及模拟实现 &#x1f308;数据结构专栏&#xff1a; 数据结构 / 十大排序算法 &#x1f308;Linux专栏&#xff1a; Linux系统编…

WindowsDocker安装到D盘,C盘太占用空间了。

Windows安装 Docker Desktop的时候,默认位置是安装在C盘,使用Docker下载的镜像文件也是保存在C盘,如果对Docker使用评率比较高的小伙伴,可能C盘空间,会被耗尽,有没有一种办法可以将Docker安装到其它磁盘,同时Docker的数据文件也保存在其他磁盘呢? 答案是有的,我们可以…

mac|安装redis及RedisDesk可视化软件

一、安装 通过Homebrew安装 brew install redis 在安装过程可以得到以下信息&#xff1a; 1、启动redis或重新登陆redis brew services start redis 如果只想在前端运行&#xff0c;而不是在后端&#xff0c;则使用以下命令 /opt/homebrew/opt/redis/bin/redis-server /opt…

程序中怎样用最简单方法实现写excel文档

很多开发语言都能找到excel文档读写的库&#xff0c;但是在资源极其受限的环境下开发&#xff0c;引入这些库会带来兼容性问题。因为一个小功能引入一堆库&#xff0c;我始终觉得划不来。看到有项目引用的jar包有一百多个&#xff0c;看着头麻&#xff0c;根本搞不清谁依赖谁。…

重读《人月神话》(12)-未雨绸缪(Plan to Throw One Away)

对程序员而言&#xff0c;一个不容忽视的事实是&#xff1a;任何系统都将经历变更&#xff0c;最初精心设计的软件也可能因不断的修补而变得面目全非。无论设计多么完美&#xff0c;随着时间推移&#xff0c;系统难免陷入混乱&#xff0c;只是程度和速度有所不同。因此&#xf…

(附项目源码)python开发语言,基于python Web的高校毕业论文管理系统 51,计算机毕设程序开发+文案(LW+PPT)

摘 要 随着信息化技术的迅速发展&#xff0c;人类信息化文明的到来&#xff0c;为人类的日常生活以及日常生产活动提供了非常大的便利&#xff0c;有效地解决了很多曾经无法解决的问题。本次基于python Web的高校毕业论文管理系统的开发是针对我国传统的高校毕业论文管理模式沟…

计算机网络:网络层 —— 网络地址转换 NAT

文章目录 网络地址转换 NAT 概述最基本的 NAT 方法NAT 转换表的作用 网络地址与端口号转换 NAPTNAT 和 NAPT 的缺陷 网络地址转换 NAT 概述 尽管因特网采用了无分类编址方法来减缓 IPv4 地址空间耗尽的速度&#xff0c;但由于因特网用户数量的急剧增长&#xff0c;特别是大量小…

C++进阶:unordered_map和unordered_set的使用

目录 一.unordered_set系列 1.1unordered_set类的介绍 1.2unordered_set与set的差异 二.unordered_map的系列 三.unordered_multimap/unordered_multiset 一.unordered_set系列 1.1unordered_set类的介绍 • unordered_set的声明如下&#xff0c;Key就是unordered_set底层…

【6G 需求与定义】ITU(国际电联)对全球6G标准的愿景

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G技术研究。 博客内容主要围绕…

java:题目:用Java实现简单的自取取款操作

import java.util.Scanner; public class ATM {public static void main(String[] args){//自主取款主类Scanner scnew Scanner(System.in);System.out.println("请输入账户号码&#xff1a;");String BankAccoutsrsc.nextLine();/BankAccout3 newBankAccoutnew Bank…

Windows 部署非安装版Redis

1.下载Redis https://github.com/microsoftarchive/redis/releases 选择下载zip包&#xff0c;如Redis-x64-3.0.504.zip&#xff0c;并解压 2.启动非安装版redis服务 进入到redis目录&#xff0c;打开cmd 执行命令 redis-server.exe redis.windows.conf 3.登录redis客户端…

【连续多届检索,ACM出版】第四届大数据、人工智能与风险管理国际学术会议 (ICBAR 2024,11月15-17)--冬季主会场

第四届大数据、人工智能与风险管理国际学术会议 (ICBAR 2024)--冬季主会场 2024 4th International Conference on Big Data, Artificial Intelligence and Risk Management 会议官网&#xff1a;www.icbar.net 2024 4th International Conference on Big Data, Artificial I…

HTML 基础概念:什么是 HTML ? HTML 的构成 与 HTML 基本文档结构

文章目录 什么是 HTML &#xff1f;HTML 的构成 &#xff1f;什么是 HTML 元素&#xff1f;HTML 元素的组成部分HTML 元素的特点 HTML 基本文档结构如何打开新建的 HTML 文件代码查看 什么是 HTML &#xff1f; HTML&#xff08;超文本标记语言&#xff0c;HyperText Markup L…

网络编程 TCP编程 Linux环境 C语言实现

所有基于数据传输通信的程序&#xff0c;都会被分成两种角色&#xff1a; 1. 服务端&#xff1a;又称为服务器 server 提供一种通信服务的进程 基本工作过程是&#xff1a;1> 接收请求数据 2> 处理请求数据 3> 发送处理结果 2. 客户端&#xff1a;client 使用一种通…

第二十九章 Vue之插槽

目录 一、引言 二、默认插槽 2.1. 默认插槽基本语法 2.2. 完整代码 2.2.1. main.js 2.2.2. App.vue 2.2.3. MyDialog.vue 2.3. 运行效果 三、插槽后备内容&#xff08;默认值&#xff09; 3.1. 插槽后备内容基本语法 3.2. 完整代码 3.2.1. main.js 3.2.2. App.vu…