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

news/2024/7/6 0:42:30

        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_model

inputs = 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)))  # mvitv2

feats = 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'  # noqa

model = 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://lihuaxi.xjx100.cn/news/1247055.html

相关文章

Spring Boot进阶(48):SpringBoot之集成WebSocket及使用说明 | 超级详细,建议收藏

1. 前言🔥 对于很多小伙伴来说,项目现在都普遍前后端分离,各干各的事儿,在前后端进行服务调用才会有大面积的碰头,后端接口数据格式发生变更要通知前端,相反,前端有变化要告诉后端,这…

Matter实战系列-----4.matter设备的OTA

一、生成OTA固件升级压缩包 1.1 修改OTA固件版本号为3 1.2 编译生成 MatterLightOverThread_V3.ota 将编译得到的MatterLightOverThread.s37固件名称改成MatterLightOverThread_V3.s37,复制到以下Windows文件夹 C:\SiliconLabs\SimplicityStudio\v5\developer\ad…

IT行业里有个词叫“技术债务”

关于技术债务的文章,尽管实践中会堆积技术债,但这个概念并不在我们的工作中频繁出现。这篇文章就系统性讲讲技术债,让大家避免知其然,不知其所以然。 一、技术债是什么 技术负债(英语:Technical debt&…

windows编译ffmpeg,并开启png的编解码器

废话不多说了,先上下载链接 ffmpeg官方网站:http://ffmpeg.org/download.html ffmpeg源码下载链接:https://ffmpeg.org/releases/ffmpeg-3.4.13.tar.gz 如果需要其他版本,修改版本号即可,适用于3.4全系列,如https:/…

论程序员提问的艺术

最近工作比较忙,加上空闲时间大部分都是在维护开发【云狗AI】,所以也有一段时间没更新视频了,有不懂的,也可以问一下【云狗AI】以后我也会花更多的时间在维护这个项目中。争取给大家带来更好的体验。 主要是因为最近没发现什么特…

银行信用卡流失预测模型_基于ANN神经网络_金融培训_论文科研_毕业设计

业务背景 根据央行公布的数据显示,全国性银行信用卡和借贷合一卡的发卡量增速从2017年同比增速26.35%的高点逐年下降,截至2020年同比增速降至4.26%。银行信用卡发卡增速明显放缓的背景下,预防老客户流失的问题变得愈发重要。 假设一家消费信…

html好看的登录页面1(十三种风格登录页面源码)

文章目录 1.登录风格效果说明1.1 背景凹起风登录界面1.2 弹出风登录界面1.3 科技时尚风登录界面1.4 蓝色一夏风登录界面1.5 模糊背景左右风登录界面1.6 上中下介绍风登录界面1.7 深沉科技风登陆界面1.8 舒适简洁风登录界面1.9 网站风登录界面1.10 小框清爽风登录界面1.11 夜色风…

Selenium基本用法

Selenium 提供了 8 种定位单个节点的方法,如下所示: 定位节点方法 方法 说明 find_element_by_id() 通过 id 属性值定位 find_element_by_name() 通过 name 属性值定位 find_element_by_class_name() 通过 class 属性值定位 find_element_by_tag_name()…