TorchVision的使用方法、更改默认路径

TorchVision的使用

1. 转换和增强图像

torchvision.transforms.v2

参数作用
Resize将输入调整为给定大小
RandomShortestSize随机调整输入的大小
RandomResize随机调整输入的大小
RandomCrop在随机位置裁剪输入
RandomResizedCrop裁剪输入的随机部分并将其调整为给定大小
RandomIoUCrop随机 IoU 裁剪转换
CenterCrop在中心裁剪输入
FiveCrop将图像或视频裁剪为四个角和中央裁剪
TenCrop将图像或视频裁剪为四个角,中央裁剪加上这些角的翻转版本(默认使用水平翻转)
RandomHorizontalFlip以给定的概率水平翻转输入
RandomVerticalFlip以给定的概率垂直翻转输入
Pad用给定的“pad”值填充所有侧面的输入
RandomRotation按角度旋转输入
RandomAffine随机仿射变换:输入保持中心不变
RandomPerspective以给定的概率对输入执行随机透视变换
ElasticTransform使用弹性变换来转换输入

2. 模型和预训练权重

该子包包含用于寻址的模型的定义 不同的任务,包括:图像分类、像素语义 分割, 对象检测, 实例分割, 人 关键点检测、视频分类和光流

TorchVision使用PyTorch torch.hub为每个提供的架构提供预先训练的权重。实例化预先训练的模型会将其权重下载到缓存目录中。可以使用TORCH_HOME环境变量设置此目录。

修改缓存目录方法:

  1. 设置TORCH_HOME环境变量

    变量名:TORCH_HOME

    变量值:自己定义的缓存路径

    image-20240202030650296

    保存后如果不生效请重启电脑尝试

  2. 临时改变环境变量(但是每次都要加上这部分代码)

    import os
    os.environ['TORCH_HOME']='路径'
    

在使用预训练模型之前,必须对图像进行预处理 (使用正确的分辨率/插值调整大小,应用推理变换, 重新调整值等)。没有标准方法可以做到这一点,因为它取决于 如何训练给定模型。它可能因型号系列、变体或 均匀重量版本。使用正确的预处理方法至关重要,并且 否则可能会导致精度降低或输出不正确。

列出和检索可用模型:

all_models = list_models()
classification_models = list_models(module=models)

初始化模型:

m1 = get_model("mobilenet_v3_large", weights=None)
m2 = get_model("quantized_mobilenet_v3_large", weights="DEFAULT")

获取权重:

weights = get_weight("MobileNet_V3_Large_QuantizedWeights.DEFAULT")weights_enum = get_model_weights("quantized_mobilenet_v3_large")weights_enum2 = get_model_weights(models.quantization.mobilenet_v3_large)

3. 使用 Hub 中的模型

大多数预训练模型都可以直接通过 PyTorch Hub 访问,而无需安装 TorchVision。

# Option 1: 将权重参数作为字符串传递
model = torch.hub.load("pytorch/vision", "resnet50", weights="IMAGENET1K_V2")# Option 2: 将权重参数作为枚举传递
weights = torch.hub.load("pytorch/vision", "get_weight", weights="ResNet50_Weights.IMAGENET1K_V2")
model = torch.hub.load("pytorch/vision", "resnet50", weights=weights)

通过 PyTorch Hub 检索特定模型的所有可用权重:

weight_enum = torch.hub.load("pytorch/vision", "get_model_weights", name="resnet50")
print([weight for weight in weight_enum])

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

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

相关文章

Java生成微信小程序二维码的方式有哪些?

大家好我是咕噜美乐蒂,很高兴又见面啦!今天我们来谈一下如何使用Java生成微信小程序二维码,有哪些方式方法呢? 生成微信小程序二维码是开发微信小程序时的常见需求之一。在Java中,我们可以使用多种方式来生成微信小程…

《最新出炉》系列初窥篇-Python+Playwright自动化测试-11-playwright操作iframe-上篇

1.简介 原估计宏哥这里就不对iframe这个知识点做介绍和讲解了,因为前边的窗口切换就为这种网页处理提供了思路,另一个原因就是虽然iframe很强大,但是现在很少有网站用它了。但是还是有小伙伴或者童鞋们私下问这个问题,那么宏哥就…

【后端开发】正向代理与反向代理

正向代理 正向代理(forward proxy):是一个位于客户端和目标服务器之间的服务器(代理服务器),为了从目标服务器取得内容,客户端向代理服务器发送一个请求并指定目标,然后代理服务器向目标服务器转交请求并将…

【日志记录】——主MCU 通过私有协议更新从MCU程序固件

一:需求分析 在一些系统较为复杂的嵌入式设备中,往往不止一片MCU或者处理模块,通常为一片主MCU负责应用逻辑处理和对外网络通信,其他从MCU负责实时采集处理高频数据,在设备运营过程中,往往伴随新需求或者bu…

动态内容推荐系统PHP代码

这个系统旨在根据用户行为和偏好,动态地向用户推荐内容。这样的系统可以应用于新闻网站、社交媒体平台、电子商务网站等多种场景,以提升用户体验和参与度。 ### 功能概述 系统将基于用户的浏览历史、点击行为和时间花费等数据来评估用户的兴趣点&#…

BUUCTF-Real-[ThinkPHP]2-Rce1

任意代码执行漏洞 ThinkPHP 2.x版本中,使用preg_replace的/e模式匹配路由: $res preg_replace((\w).$depr.([^.$depr.\/])e, $var[\\\1\]"\\2";, implode($depr,$paths)); 导致用户的输入参数被插入双引号中执行,造成任意代码执行…

Open CASCADE学习|拓扑变换

目录 平移变换 旋转变换 组合变换 通用变换 平移变换 TopoDS_Shape out;gp_Trsf theTransformation;gp_Vec theVectorOfTranslation(0., 0.125 / 2, 0.);theTransformation.SetTranslation(theVectorOfTranslation);BRepBuilderAPI_Transform myBRepTransformation(out, th…

go 中的范型

泛型是随着Go 1.18版本发布的。它基本上意味着参数化的类型,也就是说,它允许程序员在写代码时,类型可以稍后指定,因为类型在当时并不相关。换句话说,在编写一些代码时,你不提供数值的类型。这些类型的值会在…

Leetcode刷题笔记题解(C++):36. 有效的数独

思路一:暴力破解,两个二维数组记录行、列对应的数字出现的次数,比如rows[i][index]表示的数字index在i行出现的次数,三维数组记录每个块中对应数字出现的次数,比如boxes[i/3][j/3][index]表示的数字index在[i/3][j/3]个…

校园墙表白墙系统uniapp微信小程序

配置文件 (自动编号、配置参数名称、配置参数值); 前端开发:vue 语言:javapythonnodejsphp均支持 运行软件:idea/eclipse/vscode/pycharm/wamp均支持 框架支持:Ssm/django/flask/thinkphp/springboot/springcloud均支持 数据库 mysql 数据库工具&#x…

定时器 Timer(超详细模拟实现)

目录 一、定时器 1.定时器概述 2.Java标准库提供的定时器类 3.定时器代码样例 二、实现 1.实现思路 2.代码实现 2.1纯享版 2.2注释版 3.代码解析(超详细) 3.1描述类MyTimerTask ①构造:MyTimerTask(Runnable runnable, long delay&#xff…

如何使用本地私有NuGet服务器

写在前面 上一篇介绍了如何在本地搭建一个NuGet服务器, 本文将介绍如何使用本地私有NuGet服务器。 操作步骤 1.新建一个.Net类库项目 2.打包类库 操作后会生成一个.nupkg文件,当然也可以用dotnet pack命令来执行打包。 3.推送至本地NuGet服务器 打开命…

vue3 封装WebSocket(直接复制)

创建文件WebSocket.js 只有基本的功能 import { ref } from vue; import store from "/store";export default function useWebSocket(url) {const messagesData ref([]);// 创建WebSocket连接和相关方法const socket new WebSocket(url);socket.onopen () >…

《计算机网络简易速速上手小册》第6章:网络性能优化(2024 最新版)

文章目录 6.1 带宽管理与 QoS - 让你的网络不再拥堵6.1.1 基础知识6.1.2 重点案例:提高远程办公的视频会议质量实现步骤环境准备Python 脚本示例注意事项 6.1.3 拓展案例1:智能家居系统的网络优化实现思路Python 脚本示例 6.1.4 拓展案例2:提…

计算机网络_1.5 计算机网络的性能指标

1.5 计算机网络的性能指标 一、总览二、常用的八个计算机网络性能指标1、速率(1)数据量(2)速率(3)数据量与速率中K、M、G、T的数值辨析(4)【练习1】计算发送数据块的所需时间 2、带宽…

Unity引擎学习笔记之【角色动画器操作】

角色动画Character Animation 一、使用方法 1. 添加一个静态的角色模型,并确保这个角色模型绑定了Avatar 2. 创建一个动画器控制器 Animator Controller 3. 将动画器控制器拖动添加到Player的Animator控制器上 4. 双击即可打开控制器 5. 将带有动画的预设&#xf…

docker下nacos(1.2.0)的持久化

一、创建数据库 运行以下代码自动创建数据库和表 CREATE DATABASE IF NOT EXISTS nacos_config /*!40100 DEFAULT CHARACTER SET utf8 */; USE nacos_config;SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------------------------- -- Table structure for config_…

[Python] 如何在控制台进行输入输出

可莉今天带你来学习Python基础中在控制台的输入输出~ 接下来跟着可莉来学习吧~ 可莉将这篇博客收录在了:《Python》 可莉推荐的博主主页:Keven ’ s blog 目录 通过控制台输出 格式化输出 通过控制台输入 总结 通过控制台输出 我们通过print函数可以…

[VulnHub靶机渗透] WestWild 1.1

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏…

leetcode正则表达式匹配问题(困难)

1.题目描述 2.解题思路,这道题自己没做出来,看了官方的题解,感觉对自己来说确实是比较难想的。使用了动态规划的解决方案,这种方案看题解都不一定能看明白,不过有个评论画图讲解的非常明白。其实仔细看题解的话&#…