【mmcls】mmdet中使用mmcls的网络及预训练模型

news/2024/11/30 18:34:39/

        mmcls现在叫mmpretrain,以前叫mmclassification,这里为了统一称为mmcls。在基于MM框架的下游任务,例如检测(mmdetection)中可以使用mmcls中的backbone进行特征提取,但这就需要知道网络的参数以及输出特征的维度。本文简单介绍了在mmdetection中使用mmcls中backbone的方法。mmdetection中需要配置backbone、模型权重及neck的特征维度等信息。

1 查找mmcls预训练模型

        查找mmcls支持的网络的方法有多种:

  1. 在mmpretrain的README中;
  2. 在modelzoo种查找模型库统计 — MMClassification 1.0.0rc6 文档 (mmpretrain.readthedocs.io)
  3. 直接看repo的configs目录下的列表

2 获取网络参数(配置)及预训练权重

        找到网络后还需要找到网络参数及预训练权重。以replknet为例,获取网络参数可以直接看mmpretrain/configs/replknet中的配置文件,例如replknet-31B_32xb64_in1k.py,但配置文件可能并没有直接写模型配置信息,而是依赖其他配置文件,如下图中的replknet-31B_in1k.py

         继续找到上述配置文件,可以看到网络配置:

        预训练权重可以在mmpretrain/configs/replknet下的README中找到,例如:

 https://download.openmmlab.com/mmclassification/v0/replknet/replknet-31B_in21k-pre_3rdparty_in1k_20221118-54ed5c46.pth

        预训练权重也可以在modelzoo中查找:

 

3 获取特征输出维度

        首先在modelzoo中查到已有模型的名称,然后使用mmcls.get_model获取模型,输出指定层的特征维度。

import torch
from mmcls import get_model, inference_modelinputs = torch.rand(16, 3, 224, 224)# 构建模型
model_name = 'replknet-31B_in21k-pre_3rdparty_in1k'
model = get_model(model_name, pretrained=False, backbone=dict(out_indices=(0, 1, 2, 3)))
# model = get_model(model_name, pretrained=False, backbone=dict(out_scales=(0, 1, 2, 3)))  # mvitv2feats = model.extract_feat(inputs)
for feat in feats:print(feat.shape)

        可以看到输出为 [128, 256, 512, 1024]:

torch.Size([16, 128])
torch.Size([16, 256])
torch.Size([16, 512])
torch.Size([16, 1024])

4 mmdetection中使用

        在mmdetection中修改配置文件中backbone,预训练权重和neck中的in_channels等信息。同时应该注意网络的优化器配置的参数。

checkpoint_file = 'https://download.openmmlab.com/mmclassification/v0/replknet/replknet-31B_in21k-pre_3rdparty_in1k-384px_20221118-76c92b24.pth'  # noqamodel = dict(backbone=dict(_delete_=True,type='mmcls.RepLKNet',arch='31B',out_indices=[0, 1, 2, 3],init_cfg=dict(type='Pretrained', checkpoint=checkpoint_file,prefix='backbone.')),neck=dict(_delete_=True,type='mmdet.FPN',in_channels=[128, 256, 512, 1024],out_channels=256,num_outs=5))


http://www.ppmy.cn/news/400545.html

相关文章

详细指南:实现Abaqus与Matlab的无缝连接,提升你的仿真分析效率

您好,我非常荣幸在这里与大家分享一种我个人研究并实践过的方法,用于连接两个非常强大的工具:Abaqus 和 Matlab。在此之前,我要强调的是,我并非这两款软件的开发者,我所提供的所有建议和解决方案都是我个人…

Linux进程间通信 - 匿名管道(1)

之间我们学习了基础IO中有关文件,动静态库等知识,后面我们将讲述进程间通信的内容,在本文中就将来展示匿名管道。 进程间通信 进程间通信的目的 数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程…

acl3000和acl2000

转载至:https://www.csdn.net/tags/MtjaQg2sODExOTctYmxvZwO0O0OO0O0O.html ACL(access control list) 定义:由一系列规则组成的集合。设备可以通过这些规则对数据包进行分类,并对不同类型的报文进行不同的处理。 分…

numpy模块之axis

axis的作用即如何理解 numpy是python进行科学计算必不可少的模块,随着深度学习越来越火,numpy也越来越流行。了解numpy的人知道,在numpy中,有很多的函数都涉及到axis,很多函数根据axis的取值不同,得到的结…

图形界面操作系统发展史

Alto 1973年4月,第一个可操作的Alto电脑在Xerox PARC完成。Alto是第一个把计算机所有元素结合到一起的图形界面操作系统。它使用3键鼠标、位运算显示器、图形窗口、以太网络连接。 Perq 1980年,Three Rivers Computer Corporation推出Perq图形工作站…

fiddler的坑--手机无法安装fiddler证书

解决办法: 1、使用手机自带的浏览器,下载fiddler证书后进行安装。 2、使用第三方浏览器,下载fiddler证书后进行安装。 3、从手机的文件管理器进入,找到下载的fiddler证书后进行安装。 4、使用设置中的“从设备存储空间安装”&…

图新地球加载倾斜模型看不清楚--一次Quadro显卡的问题排查记录

序: 同一份数据,在一台电脑上用图新地球加载查看没有任何问题,在另外一台电脑上加载,就很模糊 1.表现效果 倾斜模型加载不清晰。 2.问题分析与解决 一般遇到这种情况,经验判断: 1.首先反应就是模型数据…

centos7 防火墙设置

centos7 防火墙设置 1 概述2 防火墙服务操作2.1 查看防火墙服务状态2.2 开启防火墙2.3 关闭防火墙2.4 重启防火墙2.5 设置开机自启动2.6 查看防火墙开机启动是否成功 3 防火墙操作3.1 查看防火墙状态3.2 查看规则3.3 查看所有开放端口3.4 查看服务器操作系统端口3.5 开启端口3.…