MMDet加载旧版本代码权重及自定义数据集的问题及解决

2024-02-16 22:04

本文主要是介绍MMDet加载旧版本代码权重及自定义数据集的问题及解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章首发见博客:https://mwhls.top/4881.html。
无图/格式错误/后续更新请见首发页。
更多更新请到mwhls.top查看
欢迎留言提问或批评建议,私信不回。

场景
  • PyTorch说它们2.0很快,那么就安个最新的Torch和MMDet。
  • 打开两年前的顶会文章,复制更早几年的代码文件以及权重。
  • 找个数据集。
  • 按照最新的config进行配置权重路径。
  • 然而,找不到加载权重。
解决
  • config 配置
    # 权重加载为 init_cfg=dict(checkpoint='pretrained/p2t_tiny.pth'),和仓库中其它config一样,区别在于一个是网上链接,一个是本地路径。model = dict(type='RetinaNet',backbone=dict(_delete_=True,type='p2t_tiny',init_cfg=dict(checkpoint='pretrained/p2t_tiny.pth')),neck=dict(in_channels=[48, 96, 240, 384]))# 模型获取预训练路径
  • 模型获取预训练路径
    • 为模型增加一个**kwargs参数,然后获取其中的checkpoint
    • 然后在init_weight()中调用。
    class p2t():def __init__(self, size, **kwargs):self.pretrained = kwargs['init_cfg']['checkpoint']def init_weights(self):logger = MMLogger.get_current_instance()load_checkpoint(self, self.pretrained, map_location='cpu', strict=False, logger=logger)
  • 模型权重不匹配

    • 核对一下缺失的键,和预料之外的键的差别,可能多了一个backbone的前缀。
    • 可以在tools/model_converters里面随便找一个代码改改,把权重加载进来,然后去掉各键的前缀,再保存
  • 数据集加载为空

    • 扩展名对不上。数据集class用的.png后缀,而图片是.jpg后缀,修改一下就好。
    • 额外前缀。config中有个prefix的选项,不应注释,而应留空,省得出现train2017的coco前缀。
    • 数据集类名对不上。有的数据集,表面上用英文提供信息,背地里用按葡萄牙语作为k-fold的测试标注。
一些入门提示
  • 加新模型,直接在mmdet/model目录下的各文件中加就好,然后再修改对应目录的__init__.py
  • 加新数据集,直接复制mmdet/datasets里面coco系列的类,修改里面设置的图片扩展名等差异信息即可,最后修改__init__.py
  • config可以用_base_ = ['../pvt/retinanet_pvt-t_fpn_1x_coco.py']继承现有的,然后在该文件加上数据集的信息即可。
  • 想配置文档里没提到的东西,就在代码搜一下关键词,然后照抄现有配置。

这篇关于MMDet加载旧版本代码权重及自定义数据集的问题及解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/715820

相关文章

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据