Pytorch中的torch.save()文件保存格式探索以及mmdetection加载预训练模型参数对不齐和收到意外参数报错解决方案

使用mmdetection时遇到的问题比较多,首先要对自己要使用的预训练模型有一定的了解,并且懂得使用各种分类模型时不同的模型不同任务执行阶段需要参数上的对其。(比如mask-rcnn和它的三个头之间的参数)。

首先,谈谈torch.save()方法保存和加载的.ph文件的格式:

import torch
pretrained_weights = torch.load("C:\\Users\\username\\Downloads\\mask_rcnn_x101_32x8d_fpn_mstrain-poly_1x_coco_20220630_170346-b4637974.pth")
# 11 是指 数据类别 + 1
print(pretrained_weights)

如上可以得到:

这个meta所保存的是各种类别名、mmdet版本

巴拉巴拉,往下翻还有一个键值对

这里保存的是各个层的参数。

然后,谈一下遇到的两个问题:

1.

The model and loaded state dict do not match exactly

size mismatch for roi_head.bbox_head.fc_cls.weight: copying a param with shape torch.Size([81, 1024]) from checkpoint, the shape in current model is torch.Size([2, 1024]).

还有五个这种参数,笔者较为仔细地看了mask-rcnn文章和另一位博主使用这个商汤的框架去跑DETR时候遇到的类似的问题,得出解决方案。

先说原因:预训练模型在coco上预训练,而coco本身类别是80,所以它的主干网络送到其他的三个头(分类头、mask回归头、bbox头的参数种类对不上),我这个是个1个类别,加上背景。六个错误维数对不上,刚好对应w、b和三个头。(几个头之间权重是不共享的)

解决方案:把load_from中的权重下载下来,resize然后重新保存,即可。

import torch
pretrained_weights = torch.load("C:\\Users\\user\\Downloads\\mask_rcnn_x101_32x8d_fpn_mstrain-poly_1x_coco_20220630_170346-b4637974.pth")pretrained_weights['state_dict']['roi_head.bbox_head.fc_cls.weight'].resize_(2, 1024)
pretrained_weights['state_dict']['roi_head.bbox_head.fc_cls.bias'].resize_(2)
pretrained_weights['state_dict']['roi_head.bbox_head.fc_reg.weight'].resize_(4, 1024)
pretrained_weights['state_dict']['roi_head.bbox_head.fc_reg.bias'].resize_(4)
pretrained_weights['state_dict']['roi_head.mask_head.conv_logits.weight'].resize_(1, 256, 1, 1)
pretrained_weights['state_dict']['roi_head.mask_head.conv_logits.bias'].resize_(1)
torch.save(pretrained_weights, "mask_rcnn_x101_32x8d_fpn_mstrain-poly_1x_coco_20220630_170346-b4637974_changed.pth")

笔者做的是一个实例分割任务,加载的权重是从mask-rcnn官方提供的微软在coco数据集预训练的以resnext101为主干网络,权重调整策略是1x。

遇到的问题:unexpectde argument:times

显示多传了一个参数times,我没搜到这个issue

解决方案:

然后把继承的配置文件的训练策略改成一样的然后就可以了,有大佬对训练了解的深一些的可以在评论区讲解一下这个框架中的学习率sheduler策略有什么差别:在1x、2x、3x直接,我还在配置文件中看到一个20e.

参考博客:

1.加载并修改权重https://zhuanlan.zhihu.com/p/465657162

2.相似问题的分析:MMdetection3.0 训练DETR问题分析_mmdetection 训练detr-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一个案例告诉你,MySQL如何查询今天、昨天、近7天、近30天、本月、上个月、本季度、上季度、本年、上一年数据

参考博客 mysql查询当天/昨天/近7天/近30天/本月/上个月/本季度/上季度/本年/上一年 数据 正文内容 创建测试案例(也可直接使用附录MySQL脚本生成数据) 1、新建测试表 CREATE TABLE example (id INT AUTO_INCREMENT PRIMARY KEY,date_column DATE,d…

深入Kafka消息分区机制:从原理到实践

深入Kafka消息分区机制:从原理到实践 在现代分布式系统中,如何高效地处理海量数据是一个至关重要的问题。Apache Kafka作为一种高吞吐量的分布式消息系统,广泛应用于日志收集、实时分析等场景。为了保证数据的高效处理和系统的高可扩展性&am…

ChatGPT的逆袭历程:核心技术深度解析

在ChatGPT问世之前,已有许多大模型存在,但为何只有它成为了AI时代的“iPhone时刻”?这不仅得益于其技术优势,还在于其发展过程中所采用的一系列创新策略。本文将深度复盘ChatGPT的逆袭历程,分析其核心技术,…

数组中的第K个最大元素,力扣

目录 题目地址: 我们直接看题解吧: 快速理解解题思路小建议: 审题目事例提示: 解题方法: 解题分析: 解题思路: 题目地址: 215. 数组中的第K个最大元素 - 力扣(LeetCode&a…

蚂蚁技术日首次开放,精彩看点分享

每年的 5 月 27 日,是蚂蚁的技术日,用来鼓励蚂蚁技术人保持敬畏和创新之心,到今天,第九届“527 蚂蚁技术日”已发展成为技术周,成为蚂蚁技术人的嘉年华。 2015 年 5 月 27 日,因为光纤被挖断,全…

visual studio code 全局搜索

VScode写代码的时候,会经常性的需要进行查找代码,那么怎么在Visual Studio Code中进行查找呢,下面就来大家vscode全局搜索的方法。 想要在vscode全局搜索进行全局搜索,使用快捷键CTRLSHIFTF即可进行搜索,也可以在左边…

排序算法(一) 基础排序算法

排序算法 基础排序算法 排序本质:减小逆序对的过程 在基础排序算法中,将待排序序列分为相对有序区与相对无序区。 每次遍历到数组末尾称为一轮。 冒泡排序(无序区-有序区, O ( n 2 ) O(n^2) O(n2),稳定,就地) 在每一轮中,逐次与下一邻项…

MMrotate报错AttributeError: ‘NoneType‘ object has no attribute ‘shape‘

使用MMrotate训练自定义数据集报错: AttributeError: ‘NoneType’ object has no attribute ‘shape’ 2024-05-31 17:48:06,121 - mmrotate - INFO - workflow: [(train, 1)], max: 12 epochs 2024-05-31 17:48:06,121 - mmrotate - INFO - Checkpoints will be …

太速科技-基于3U VPX 4核8线程I7 X86主板

基于3U VPX 4核8线程I7 X86主板 一、产品概述 该产品是一款基于第六代Intel i7四核八线程处理器的高性能3U VPX刀片式计算机。产品提供了4个x4 PCIe 3.0总线接口,其中2个x4 PCIe 3.0接口可配置为1个x8 PCIe3.0接口,另外2个x4 PCIe 3.0接口可灵活配置…

8086 汇编笔记(三):第一个程序

一、一个源程序从写出到执行的过程 第一步:编写汇编源程序 第二步:对源程序进行编译连接 第三步:执行可执行文件中的程序 二、源程序 codesg segment ; 定义一个段,段的名称为“codesg”,这个段从此开始…

向量数据库引领 AI 创新——Zilliz 亮相 2024 亚马逊云科技中国峰会

2024年5月29日,亚马逊云科技中国峰会在上海召开,此次峰会聚集了来自全球各地的科技领袖、行业专家和创新企业,探讨云计算、大数据、人工智能等前沿技术的发展趋势和应用场景。作为领先的向量数据库技术公司,Zilliz 在本次峰会上展…

[代码复现]Self-Attentive Sequential Recommendation

参考代码:SASRec.pytorch 可参考资料:SASRec代码解析 前言:文中有疑问的地方用?表示了。可以通过ctrlF搜索’?。 环境 conda create -n SASRec python3.9 pip install torch torchvision因为我是mac运行的,所以device是mps 下面…

【计算机网络】——概述(图文并茂)

概述 一.信息时代的计算机网络二.互联网概述1.网络,互连网,互联网(因特网)1.网络2.互连网3.互联网(因特网) 2.互联网简介1.互联网发展的三个阶段2.互联网服务提供者(ISP)3.互联网的组…

计算器状态的初始化之旅

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言 二、状态属性的创建与初始化 三、内部函数与显示逻辑 四、总结与展望 一、引言 在…

使用element的提示框并修改css

使用el-tooltip来做提示框&#xff1a; <el-tooltip popper-class"popper" content"敬请期待" placement"right"><div><i class"iconfont icon-lianjie-01"></i><span>输入链接</span></div&…

掀桌子、降价、免费...之后,国内大模型应用进入高速时代

5月15日&#xff0c;字节跳动打响大模型市场价格战第一枪&#xff1b;5月21日阿里云更狠&#xff0c;价格降了97%&#xff0c;比字节还便宜37.5%同日&#xff0c;百度更为激进&#xff0c;直接宣布其两款主力模型ENIRE Speed和ENIRE Lite全面免费&#xff1b;5月22号&#xff0…

怎么花草识别?方法有三种!

怎么花草识别&#xff1f;在这个五彩斑斓的世界里&#xff0c;花草是我们生活中不可或缺的一部分。它们点缀着我们的环境&#xff0c;为我们带来无尽的美丽与惊喜。然而&#xff0c;面对众多的花草种类&#xff0c;你是否曾感到困惑和迷茫&#xff0c;不知道如何识别它们&#…

沃通CA参与《证书透明规范》及《自动化证书管理规范》两项商密标准制定

沃通CA加入由零信技术牵头的两项商密标准《证书透明规范》及《自动化证书管理规范》编制工作。沃通CA作为国内依法设立的电子认证服务机构与领先的SSL证书服务商&#xff0c;很荣幸参与到两项商密标准的编制工作中&#xff0c;不仅提供多年SSL证书领域的应用经验&#xff0c;还…

Spring Boot详解:深入了解与实践

文章目录 1. Spring Boot简介1.1 什么是Spring Boot&#xff1f;1.2 Spring Boot的历史背景1.3 Spring Boot的核心特点 2. Spring Boot的核心概念2.1 自动配置2.1.1 自动配置原理2.1.2 自定义配置 2.2 Spring Boot Starter2.3 Spring Boot CLI 3. Spring Boot的主要功能模块3.1…

php 实现:给图片加文字水印,图片水印,压缩图片

演示环境: 1、windows10 2、phpstudy 3、php7.4 一、案例演示: 二、素材准备 1、准备一张原始图片 2、准备一张水印图片(透明底图的最好) 3、字体库(windows系统自带的字体库,路径在:C:\Windows\Fonts) 4、开启GD库 三、图片添加水印 1、文字水印封装类 FontWater…