比torchvision更强大,从timm库引用预训练模型和本地加载的方法

1,介绍

torchvision是大家最常用的预训练模型来源,但是其包含的预训练模型种类很少,往往并不能满足研究者们的需求。

而timm库提供了一个更强大的替代选项。

利用如下代码查询

import timmprint(len(timm.list_models()))

输出

1032

可知,timm内置了1032个预训练模型权重。

例如ghostnet、caformer、crossvit等模型都是不在torchvision内的。

2,利用timm创建带预训练权重的模型

model = timm.create_model('ghostnetv2_100.in1k', pretrained=True)

其中权重的名称可以到hugging face hub上查询。

https://huggingface.co/

比如说如ghostnet,就会出现以下可选的权重,对应不同版本和超参数的ghostnet模型,选择自己需要的就可以。

3,不加载分类头,输出特征图

输出的卷积层特征

model = timm.create_model('ghostnet_100.in1k',pretrained=True,features_only=True,
)

4,获取图像的嵌入

所谓图像嵌入,也就是不包含最后一层分类层,但是包含了之前的其他线性变换层

model = timm.create_model('ghostnet_100.in1k',pretrained=True,num_classes=0,  # remove classifier nn.Linear
)

另一种等效的方式是:

在创建模型时不需要移除分类层,但是用forward_features()方法来获取图像嵌入。

model = timm.create_model('ghostnetv2_100.in1k', pretrained=True)#获取的是(b, c, h, w)形状的tensor
output = model.forward_features(transforms(img).unsqueeze(0))#获取的是(b,c x h x w)形状的tensor
output = model.forward_head(output, pre_logits=True)

forward_head方法一般来说返回是是最后一个分类层之前的输出,如果你的模型在分类头里包含了全局池化层,那么forward_head方法返回的就是分类层之前最后一个全局池化层的结果。

但是具体返回结果需要结合你使用的模型来确认。

5,使用预下载到本地的权重创建模型

由于某些众所周知的原因,timm的模型下载经常无法连接。所以,我们可以实现从hugging face hub上把模型权重文件下载到本地。然后用如下代码创建

model = timm.create_model('ghostnet_100.in1k', pretrained=True,pretrained_cfg_overlay=dict(file='D:/pytorch_model.bin'))

只需要把pretrained_cfg_overlay=dict(file='D:/pytorch_model.bin')中的路径替换成你自己保存模型的路径即可。

6,秒杀torchvision,对非三通道图像的神奇处理能力

如果是使用的是torchvision内的预训练模型来处理非三通道图像,那么会报错。只能通过将自己的数据集预处理,转换成三通道图才可以运行。

但是利用timm创建的模型可以直接输入非三通道图进行训练或者预测。

例如,单通道图

m = timm.create_model('resnet34', pretrained=True, in_chans=1)

或者25通道图

m = timm.create_model('resnet34', pretrained=True, in_chans=25)

我们只需要在创建模型时制定in_chans这个参数就可以了。

剩下的操作,timm都会自动帮你完成。其内部已经实现了对通道数的变换。

7,查看预训练模型的配置

from timm.models.resnet import default_cfgsresnet34_default_cfg = default_cfgs['resnet34']print(resnet34_default_cfg)

输出结果太长就不贴了,自行查看。

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

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

相关文章

c++编译出来的程序a,当在linux 系统终端执行./a 发生了哪些事情?

路径解析: 用户输入 ./a 并按下回车。终端中的 shell(如 bash、zsh 等)开始解析这个命令,确认 a 是一个可执行文件并且存在于当前目录中。权限检查: Shell 检查 a 文件是否具有执行权限。如果没有执行权限,…

FastAPI+React全栈开发14 FastAPI如何开发REST接口

Chapter03 Getting Started with FastAPI 14 How does FastAPI speak REST FastAPIReact全栈开发14 FastAPI如何开发REST接口 Let’s create a minial FastAPI application, a classic Hello World example, and start examining how FastAPI structures the endpoints. I u…

Android Studio 2023.2.1版本 kotlin编译报错踩坑

1、需求 由于最近在整理项目,做一些公共基础组件Maven仓库封装,由于之前项目jar包和kotlin版本很老,kotlin版本1.3.72版本 Gradle使用5.4.1 Android Studio版本是2023.2.1,分别依次顺序如下图所示。 如下图所示 2、分析编译报错…

如何利用大模型LLM辅助,使用Python完成将CSV快速导入MySQL数据库

目录 一、适合场景 二、开发过程说明 三、功能使用流程 四、代码 1、安装python依赖库 2、完整代码段 一、适合场景 无废话,CSV中有少量不合规数据需要手工处理可利用此方法,适合有点经验的程序员,可以不熟Python,思路还是要…

第三十七章 管理和监控Web网关 - Web 网关缓存表

文章目录 第三十七章 管理和监控Web网关 - Web 网关缓存表Web 网关缓存表手动关闭连接清除缓存测试服务器连接 第三十七章 管理和监控Web网关 - Web 网关缓存表 Web 网关缓存表 第四个状态表列出了 Web Gateway 响应缓存中保存的表单。 Cached Forms - 缓存表单的名称&#x…

图像旋转算法双线性插值法详解

双线性插值法是一种常用的插值算法,用于在图像旋转、缩放等操作中估计目标像素的灰度值。它基于近邻像素之间的灰度变化趋势进行推断,从而提供更平滑和精确的结果。 双线性插值算法的基本思想如下: 首先,根据旋转角度确定旋转中心…

vue2完结

笔记 关于不同版本的Vue: 1.vue.js与vue.runtime.xxx.js的区别:(1)vue.js是完整版的Vue,包含:核心功能模板解析器(2)vue.runtime.xxx.js是运行版本的Vue,只包含核心功能,没有模板解析器 2.因为…

docker快速安装单节点和多点MongoDB副本集

文章目录 概要一、单节点副本集二、多节点副本集三、参考 概要 最近项目的MongoDB版本终于升级到了MongoDB4.4了,可以使用使用事务了,但MongoDB的不支持单节点事务,至少是副本集。 测试环境没必要搭建复杂的副本集,还好官方给出了…

【动手学深度学习-pytorch】-9.3深度循环神经网络

到目前为止,我们只讨论了具有一个单向隐藏层的循环神经网络。 其中,隐变量和观测值与具体的函数形式的交互方式是相当随意的。 只要交互类型建模具有足够的灵活性,这就不是一个大问题。 然而,对一个单层来说,这可能具有…

量化交易入门(二十七)回撤、收益率、夏普比率

回撤 一、回撤的定义与计算 回撤是指投资组合或交易账户从历史最高点下跌到后来最低点的幅度,通常用百分比表示。计算公式为: 回撤 (历史最高净值 - 当前净值) / 历史最高净值 100% 例如,某策略历史最高净值为150万,当前净值跌到了100万,则回撤为:(150-100)/150100%33.33%…

synchronized 和 ReentrantLock 的区别是什么

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:synchronized 和 ReentrantLock 的区别是什么 1. 获取锁的方式 synchronized:synchronized的锁获取是隐式的。当线程进入synchronized修饰的代码…

探索SOCKS5代理、代理IP与跨界电商、游戏技术的网络安全实践

介绍数字时代跨境业务的兴起,特别是跨界电商和全球游戏市场的扩张。 简述网络安全在支持跨境业务扩展中的核心作用,特别是SOCKS5代理和代理IP技术的重要性。 第一章:出海业务概述 跨界电商与全球化挑战:介绍跨界电商的基本模式&am…

Oracle 19C RAC集群补丁升级

文章目录 一、补丁包概述二、OPatch检查和更新Grid用户更新OPatchOracle用户更新OPatch 三、验证Oracle Inventory的有效性四、运行 OPatch 冲突检查五、运行opatch命令检查GI HOME下是否有足够的空间六、补丁冲突检测与解决(修补程序)七、使用root用户应…

Linux - 第三节

改变用户类型 su 仅单纯的进行身份变化 依旧处于普通用户里面 su - 进行重新登录更改身份 退出用exit / ctrld su 用户名 改成成其他身份 对一条命令进行提权 sudo command r:可读 w:可写 x:可执行 -:对应的权限位置,没有权限 去掉所有权限 chmod u…

MongoDB聚合运算符:$linearFill

文章目录 MongoDB聚合运算符:$linearFill语法使用对比$fill和$linearFill 举例使用线性插值填充缺失值在单个阶段中使用多种填充方法 MongoDB聚合运算符:$linearFill $linearFill聚合运算符在一个窗口中基于附近字段的值使用线性插值填充null和缺失字段…

Kafka开机自启脚本

1.虚拟机编辑定时任务 crontab -e reboot /usr/local/startShell.sh 2.编辑自定义启动脚本 #!/bin/sh# 进入kafka安装目录 cd /usr/local/kafka_2.12-3.7.0# 初始化java变量 export JAVA_HOME/usr/local/jdk1.8.0_401 export JRE_HOME${JAVA_HOME}/jre export PATH$PATH:${J…

多视图三维重建-SFM简介

背景 掌握传统的多视图三维重建基本流程 总体流程 多视图三维重建的Pipieline如下图,总共分为四个步骤: 拍摄场景多视角的图像建立这些图像之间的联系(Data Association)SFM稀疏重建MVS稠密重建 Data Association 建立图像…

向开发板上移植ip工具:将ip工具移植到开发板系统中

一. 简介 前面一篇文章对 ip工具源码进行了交叉编译,生成了ip工具。文章如下: 向开发板上移植ip工具:交叉编译 ip工具-CSDN博客 本文对生成的 ip工具进行移植,即移植到开发板系统中,并确定是否可用。 二. 向开发板…

Nagios工具

一 nagios 相关概念 Nagios 是一款开源的免费网络监视工具,能有效监控 Windows、Linux 和 Unix 的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第 一时间通知网站运维人员,在状态恢复后…

CY2300相位对齐时钟乘法器

这份文件是关于Cypress Semiconductor Corporation生产的CY2300型号的Phase-Aligned Clock Multiplier(相位对齐时钟乘法器)的技术手册。以下是该文件的核心内容概述: 产品特性: 4倍频输出配置。单一锁相环(PLL&#x…