关于Detectron库预训练模型的权重转换

news2024/11/28 14:54:16

关于Detectron库预训练模型的权重转换

最近在调试代码的过程中涉及到detectron库的使用,在模型训练前,主干网络的部分需要加载预训练模型,但是原始的预训练模型在detron库中的代码是不能直接使用的,需要通过转换工具对模型的键值对做一下转换才可以使用,具体的使用流程见:MaskFormer/MODEL_ZOO.md at main · facebookresearch/MaskFormer (github.com)

常见的resnet系列的模型就不在这里举例了,以swin-transformer为例,说明如何使用转换工具。

convert-pretrained-swin-model-to-d2.py文件是转换swin_transformer模型的代码,具体的代码内容如下:

#!/usr/bin/env python
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved

import pickle as pkl
import sys

import torch

"""
Usage:
  # download pretrained swin model:
  wget https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_tiny_patch4_window7_224.pth
  # run the conversion
  ./convert-pretrained-model-to-d2.py swin_tiny_patch4_window7_224.pth swin_tiny_patch4_window7_224.pkl
  # Then, use swin_tiny_patch4_window7_224.pkl with the following changes in config:
MODEL:
  WEIGHTS: "/path/to/swin_tiny_patch4_window7_224.pkl"
INPUT:
  FORMAT: "RGB"
"""

if __name__ == "__main__":
    input = sys.argv[1]

    obj = torch.load(input, map_location="cpu")["model"]

    res = {"model": obj, "__author__": "third_party", "matching_heuristics": True}

    with open(sys.argv[2], "wb") as f:
        pkl.dump(res, f)

使用方式如下(以ubuntu系统为例):

pip install timm

wget https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_tiny_patch4_window7_224.pth
python tools/convert-pretrained-swin-model-to-d2.py swin_tiny_patch4_window7_224.pth swin_tiny_patch4_window7_224.pkl

wget https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_small_patch4_window7_224.pth
python tools/convert-pretrained-swin-model-to-d2.py swin_small_patch4_window7_224.pth swin_small_patch4_window7_224.pkl

wget https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_base_patch4_window12_384_22k.pth
python tools/convert-pretrained-swin-model-to-d2.py swin_base_patch4_window12_384_22k.pth swin_base_patch4_window12_384_22k.pkl

wget https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_large_patch4_window12_384_22k.pth
python tools/convert-pretrained-swin-model-to-d2.py swin_large_patch4_window12_384_22k.pth swin_large_patch4_window12_384_22k.pkl

转换之后的结果如下图,即pickle格式的新文件。

image-20221213144738224
附swin transformer系列模型下载地址
microsoft/Swin-Transformer: This is an official implementation for “Swin Transformer: Hierarchical Vision Transformer using Shifted Windows”. (github.com)

ImageNet-1K and ImageNet-22K Pretrained Swin-V1 Models

namepretrainresolutionacc@1acc@5#paramsFLOPsFPS22K model1K model
Swin-TImageNet-1K224x22481.295.528M4.5G755-github/baidu/config/log
Swin-SImageNet-1K224x22483.296.250M8.7G437-github/baidu/config/log
Swin-BImageNet-1K224x22483.596.588M15.4G278-github/baidu/config/log
Swin-BImageNet-1K384x38484.597.088M47.1G85-github/baidu/config
Swin-TImageNet-22K224x22480.996.028M4.5G755github/baidu/configgithub/baidu/config
Swin-SImageNet-22K224x22483.297.050M8.7G437github/baidu/configgithub/baidu/config
Swin-BImageNet-22K224x22485.297.588M15.4G278github/baidu/configgithub/baidu/config
Swin-BImageNet-22K384x38486.498.088M47.1G85github/baidugithub/baidu/config
Swin-LImageNet-22K224x22486.397.9197M34.5G141github/baidu/configgithub/baidu/config
Swin-LImageNet-22K384x38487.398.2197M103.9G42github/baidugithub/baidu/config

ImageNet-1K and ImageNet-22K Pretrained Swin-V2 Models

namepretrainresolutionwindowacc@1acc@5#paramsFLOPsFPS22K model1K model
SwinV2-TImageNet-1K256x2568x881.895.928M5.9G572-github/baidu/config
SwinV2-SImageNet-1K256x2568x883.796.650M11.5G327-github/baidu/config
SwinV2-BImageNet-1K256x2568x884.296.988M20.3G217-github/baidu/config
SwinV2-TImageNet-1K256x25616x1682.896.228M6.6G437-github/baidu/config
SwinV2-SImageNet-1K256x25616x1684.196.850M12.6G257-github/baidu/config
SwinV2-BImageNet-1K256x25616x1684.697.088M21.8G174-github/baidu/config
SwinV2-B*ImageNet-22K256x25616x1686.297.988M21.8G174github/baidu/configgithub/baidu/config
SwinV2-B*ImageNet-22K384x38424x2487.198.288M54.7G57github/baidu/configgithub/baidu/config
SwinV2-L*ImageNet-22K256x25616x1686.998.0197M47.5G95github/baidu/configgithub/baidu/config
SwinV2-L*ImageNet-22K384x38424x2487.698.3197M115.4G33github/baidu/configgithub/baidu/config

Note:

  • SwinV2-B* (SwinV2-L*) with input resolution of 256x256 and 384x384 both fine-tuned from the same pre-training model using a smaller input resolution of 192x192.
  • SwinV2-B* (384x384) achieves 78.08 acc@1 on ImageNet-1K-V2 while SwinV2-L* (384x384) achieves 78.31.

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

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

相关文章

Sentinel服务熔断降级

除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。一个服务常常会调用别的模块,可能是另外的一个远程服务、数据库,或者第三方 API 等。例如,支付的时候,可能需要远程调用银联提供…

Redis Lua脚本 Debug

Redis 编程接口之Lua脚本 Redis 使用Lua脚本和Redis Functions扩展其功能。Redis提供编程接口,允许开发者在服务器执行自定义的脚本,对于不同的版本,实现的方式略有不同 Redis 7 及以上版本 使用Redis Functions 管理、运行脚本Redis 6.2及…

【20天快速掌握Python】day02-数据类型转换及运算符

1、数据类型转换 函数说明int(x [,base ])将x转换为一个整数float(x)将x转换为一个浮点数str(x)将对象 x 转换为字符串bool(x)将对象x转换成为布尔值转换成为整数 print(int("123")) # 123 将字符串转换成为整数 print(int(123.78)) # 123 将浮点数转换成为整数 …

腾讯云存储产品全线升级,满足更多高性能存储场景

数字经济时代,诞生了海量数据资源,促使数据存储技术也在不断推陈出新。12月1日,在2022腾讯全球数字生态大会存储专场上,腾讯云发布了多款云存储产品能力上新,并对分布式存储、高性能存储、日志大数据、云原生数据湖等产…

CMSIS hal库 标准库 pack(芯片支持包)

ARM Cortex™ 微控制器软件接口标准(CMSIS:Cortex Microcontroller Software Interface Standard) 是 Cortex-M 处理器系列的与供应商无关的硬件抽象层 CMSIS英文全称Common Microcontroller Software Interface Standard,☞通用微控制器软件接口标准&a…

OAuth2.0介绍

1. OAuth2.0介绍 OAuth(开放授权)是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方应用或分享他们数据的所有内容。OAuth2.0是OAuth协议的延续版本&#xff0…

【蓝桥杯选拔赛真题51】Scratch赛车训练 少儿编程scratch图形化编程 蓝桥杯选拔赛真题讲解

目录 scratch赛车训练 一、题目要求 编程实现 二、案例分析 1、角色分析

python解决 某文库禁用文段批量下载 并保存到文档

嗨害大家好鸭! 我是小熊猫鸭~ 大家是不是在写毕业论文的时候 需要参考某一段的内容 要用到复制粘贴,但是吧,某文库就需要付费, 就老难受了… 我们今天就来解决这个"老难受" 源码、资料点击此处 环境使用&#xff1…

项目实战案例丨教辅机构信息化平台跟着这个做

一. 基本简介 最近正值计算机专业的小伙伴忙着整理毕业设计,有不少童靴问辉哥,有没有合适的项目作为毕业设计项目。恰好辉哥这里就有一个适合作为毕设的项目,那么辉哥就写一篇文章,聊聊这个项目,希望可以对有需要的你…

照片怎么制作动态照片?这篇文章教会你如何制作

大家不知道有没有在网上刷到过一些本来是静态的照片,可照片里的局部却能够动起来的动态图片,我看完后觉得这种特效很神奇,既有趣又不会有违和感。那你想知道动态照片怎么制作吗?今天我就来给大家介绍一下制作动态图片的具体方法&a…

基于JWT用户认证分析

在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个request请求时它就把刚刚的资料忘了。 于是我们的程序就不知道谁是谁,就要再验证一…

Spring Security 认证授权(一)

1.基本概念1.1.什么是认证 进入移动互联网时代,大家每天都在刷手机,常用的软件有微信、支付宝、头条等,下边拿微信来举例子说明认证相关的基本概念,在初次使用微信前需要注册成为微信用户,然后输入账号和密码即可登录微…

大二毕设.1-学生信息管理系统

目录 技术选型: 功能概括: 可扩展性良好,添加其余操作无非是多加点信息,重复编码改数据罢 版本: 基本演示 功能实现讲解 登录校验 可调整每页条数的分页显示与增删查改 不会造成偷窃的部分web代码 技术选型: 前端: Vue Element UI后端: Spring…

喜报|众享链网荣获第二届中国可信区块链安全攻防大赛优秀案例奖

近日,第二届中国可信区块链安全攻防大赛决赛在成都成功举办并圆满落幕。经过预赛初审、预赛复审的层层选拔,众享链网脱颖而出,成功进入赛道三“原创自主区块链平台优秀应用案例评选比赛”总决赛环节,荣获优秀案例奖,入…

[附源码]计算机毕业设计的桌游信息管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis MavenVue等等组成,B/S模式…

弗洛伊德算法(Floyd)的实现与可视化其最短路径

弗洛伊德算法Floyd是针对多源路径找出最短的路径,其中数据结构会使用到前面介绍过的邻接矩阵,有兴趣的可以先查阅:图数据结构之邻接矩阵Adjacency Matrix(Python版) 先了解这个邻接矩阵然后再回看本文章也可以。 区别在于这里我们介绍的是带…

浅撸一下spring源码---大致内容实现

手写spring-模拟spring 1,普及一个小知识 UserService.class Component public class UserService{public void test(){ System.out.println("test") }}Test.classpublic class Test{public static void main(String[] args){AnnotationConfigApplicati…

什么软件可以将录音转写为文字?这几款好用软件不容错过

录音实时转写软件有哪些 (百)录音实时转写软件有哪些?这些录音转文字软件推荐给你 (搜)音频转文字工具有哪些?推荐三个实用转写软件 (企)哪些软件可以把录音转写为文字?这…

微信小程序|系统配送员如何登陆抢单?同城配送、预约服务

系统中有多个功能有有配送端,最主要的是同城配送,和预约服务两个功能,首先介绍一下同城配送的配送员登录(扩展的同城配送需要开启) 第一步,设置模板消息,配送员通过微信模板消息接收配送信息&am…

离婚数据可视化,经济越发达的地区离婚率越高,但为何天津离婚率最高?

这几年我国的离婚率持续走高,2021年全国各个省份平均离婚率在2.1‰,离婚率高于和低于全国平均水平的省份各有15个。 离婚率高于平均水平2.1‰有9个是北方地区,分别是天津、北京、新疆和内蒙古以及黑吉辽三省;南方地区有6个省份高…