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 参考资料
相关文章:
AI开发-三方库-torch-torchvision
1 需求 数据集:torchvision.datasets torchvision.datasets.MNIST数据变换:torchvision.transforms torchvision.transforms.Composetorchvision.transforms.ToTensortorchvision.transforms.Normalize模型:torchvision.models可视化工具&…...
解析 MySQL 数据库容量统计、存储限制与优化技巧
管理 MySQL 数据库时,了解数据库中的数据量和存储占用情况是非常重要的,尤其是在面对大规模数据时。无论是为了优化数据库性能,还是为了进行容量规划,准确地统计数据库的容量可以帮助我们做出更好的决策。mysql的客户端工具是Navi…...
智能工厂的软件设计 思维进阶与数学程序
本文要点 讨论 “智能工厂的软件设计”中的“数学程序”。 这里 “数学程序” 是指能“格物致知”来理解“相续”一词。 完整的表述是: 思想素养提升的 思维进阶法(三种 数学程序 : 格物致知 )之思维导图: 二叉树及其…...
技术速递|GitHub Copilot upgrade assistant for Java 技术预览发布!
作者:Nick Zhu - Senior Program Manager 排版:Alan Wang 随着人工智能和大型语言模型(LLMs)的不断发展,Agent(“智能代理”)和智能代理化工作流程正在迅速成为AI领域的下一个前沿。这些自主系统…...
淘宝有哪些API是用来获取商品列表的?(商品id列表)
淘宝商品详情接口item_get是通过商品id或者商品链接来获取商品详情数据的,但是不少客户是没有商品id的,这时需要通过接口来拿到商品id。 可以获取商品id的API有: item_search 通过关键字搜索商品列表 item_search_shop 获取店铺所有商品列…...
D59【python 接口自动化学习】- python基础之异常
day59 捕获异常常见问题 学习日期:20241105 学习目标:异常 -- 75 避坑指南:编写捕获异常程序时经常出现的问题 学习笔记: 捕获位置设置不当 设置范围不当 捕获处理设置不当 嵌套try-except语法错误 总结 位置,范围…...
解决 Spring 异步处理中的 JDK 动态代理问题及相关错误分析
解决 Spring 异步处理中的 JDK 动态代理问题及相关错误分析 遇到的问题: 在使用 Spring 的 Async 注解开启异步处理时,遇到以下错误: The bean ServiceImplChannel could not be injected as a com.wn.order.pay.recharge.controller.Serv…...
从xss到任意文件读取
xss一直是一种非常常见且具有威胁性的攻击方式。然而,除了可能导致用户受到恶意脚本的攻击外,xss在特定条件下还会造成ssrf和文件读取,本文主要讲述在一次漏洞挖掘过程中从xss到文件读取的过程,以及其造成的成因。 0x01 前言 xss一…...
nuiapp vue3 uni-ui uni.uploadFile 图片上传
<div style"position: relative;margin-top: 0.8em;"> <div style"position: absolute;left: 1.5em;top: 2em;">施工图片</div> <div style"position: absolute; left: 7em;top: 0em;right: 0em;bottom…...
【计算机科学】位运算:揭开二进制世界的奥秘
位运算是计算机运算的一种基础操作,直接作用于数据的二进制位(bit),在计算机中具有极高的效率。无论是编写高效算法,还是进行底层开发,位运算都扮演着重要角色。本文将从位运算的起源、常见操作符、应用场景…...
弹性裸金属服务器和传统裸金属服务器有什么区别?
弹性裸金属服务器是一种结合了传统裸金属服务器和云计算资源两种特点的服务器,是一种云计算服务,下面我们就来了解一下弹性裸金属服务器和传统裸金属服务器之间有什么区别吧! 弹性裸金属服务器能够支持企业快速部署新的硬件和软件系统&#x…...
shodan(五)连接Mongodb数据库Jenkinsorg、net、查看waf命令
声明:学习素材来自b站up【泷羽Sec】,侵删,若阅读过程中有相关方面的不足,还请指正,本文只做相关技术分享,切莫从事违法等相关行为,本人一律不承担一切后果 引言: 1.Shodan 是一个专门用于搜索连…...
ThingsBoard规则链节点:Push to Edge节点详解
引言 1. Push to Edge 节点简介 2. 节点配置 2.1 基本配置示例 3. 使用场景 3.1 边缘计算 3.2 本地数据处理 3.3 实时响应 4. 实际项目中的应用 4.1 项目背景 4.2 项目需求 4.3 实现步骤 5. 总结 引言 ThingsBoard 是一个开源的物联网平台,提供了设备管…...
基于 EventBridge + DashVector 打造 RAG 全链路动态语义检索能力
作者:肯梦 本文将演示如何使用事件总线(EventBridge),向量检索服务(DashVector),函数计算(FunctionCompute)结合灵积模型服务 [ 1] 上的 Embedding API [ 2] ࿰…...
【golang/navmesh】使用recast navigation进行寻路
目录 说在前面安装使用可视化 说在前面 go version:1.20.2 linux/amd64操作系统:wsl2detour-go版本:v0.2.0github:这里,求star! 安装 使用go mod安装即可go get github.com/o0olele/detour-go使用 使用场景模型构建n…...
【软考】Redis不同的数据类型和应用场景。
Redis的不同数据类型和对应的应用场景: Redis 数据类型及其应用场景 String(字符串) 特点:简单的值存储,支持二进制数据。应用场景: 缓存用户会话。缓存小的配置文件。缓存计数器。文章浏览量࿰…...
java 对人名和电话 脱敏-replaceAll
学习了《正则匹配人名》和《正则匹配电话号码》,如果要一起进行脱敏处理,改怎么做? 脱敏的,考虑配置规则,进行匹配的方式进行处理: 脱敏规则: DesensitizationRules Data public class Desens…...
计算机网络:网络层 —— 网络地址转换 NAT
文章目录 网络地址转换 NAT 概述最基本的 NAT 方法NAT 转换表的作用 网络地址与端口号转换 NAPTNAT 和 NAPT 的缺陷 网络地址转换 NAT 概述 尽管因特网采用了无分类编址方法来减缓 IPv4 地址空间耗尽的速度,但由于因特网用户数量的急剧增长,特别是大量小…...
【Pikachu靶场:XSS系列】xss之过滤,xss之htmlspecialchars,xss之herf输出,xss之js输出通关啦
一、xss之过滤 <svg onloadalert("过关啦")> 二、xss之htmlspecialchars javascript:alert(123) 原理:输入测试文本为herf的属性值和内容值,所以转换思路直接变为js代码OK了 三、xss之href输出 JavaScript:alert(假客套) 原理&#x…...
面向制造和装配的产品设计指南(二):面向装配的设计指南
参考引用 面向制造和装配的产品设计指南 1. 概述 1.1 装配的概念 装配是指把多个零件组装成产品,使得产品能够实现相应的功能并体现产品的质量,装配包含三层含义 把零件组装在一起实现相应的功能体现产品的质量 1.2 最好和最差的装配工序 1.3 面向装…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
Spring AOP代理对象生成原理
代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】,这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...
基于开源AI智能名片链动2 + 1模式S2B2C商城小程序的沉浸式体验营销研究
摘要:在消费市场竞争日益激烈的当下,传统体验营销方式存在诸多局限。本文聚焦开源AI智能名片链动2 1模式S2B2C商城小程序,探讨其在沉浸式体验营销中的应用。通过对比传统品鉴、工厂参观等初级体验方式,分析沉浸式体验的优势与价值…...
