【YOLO改进】换遍MMDET主干网络之SwinTransformer-Tiny(基于MMYOLO)

SwinTransformer-Tiny

SwinTransformer-Tiny是Swin Transformer模型的一个轻量级版本。Swin Transformer是微软亚洲研究院在2021年提出的一种新型的视觉Transformer,它通过引入移位窗口(Shifted Windows)的概念,实现了层次化的特征表示和线性的计算复杂度,使其在各种视觉任务中都取得了出色的性能。

SwinTransformer-Tiny作为轻量级版本,继承了Swin Transformer的核心思想,但在网络深度和宽度上进行了缩减,以适应更轻量级的计算需求。具体来说,SwinTransformer-Tiny采用了更少的网络层数和更小的特征通道数,以减小模型的参数量和计算量。

作为YOLO主干网络的可行性分析

  1. 性能优势:SwinTransformer-Tiny作为Swin Transformer的轻量级版本,继承了其层次化的特征表示和线性的计算复杂度的优点。这使得SwinTransformer-Tiny在保持一定性能的同时,具有更小的模型大小和更快的推理速度。对于实时目标检测任务来说,这是非常重要的。
  2. 兼容性:SwinTransformer-Tiny作为一种视觉Transformer模型,与YOLO这种基于卷积神经网络的目标检测算法在结构上有一定的差异。但是,通过合理的设计和调整,可以将SwinTransformer-Tiny作为YOLO的主干网络来使用。具体来说,可以将SwinTransformer-Tiny的输出特征图与YOLO的后续检测头进行连接,形成完整的目标检测模型。
  3. 挑战与改进:尽管SwinTransformer-Tiny在作为YOLO主干网络时具有一定的可行性,但也存在一些挑战和改进空间。首先,由于SwinTransformer-Tiny是基于Transformer的模型,其计算方式与基于卷积神经网络的YOLO存在差异,可能需要更多的计算资源和内存。其次,如何更好地将SwinTransformer-Tiny与YOLO的检测头进行融合,以充分发挥两者的优势,也是一个需要研究的问题。为了改进这些方面,可以尝试采用一些优化技术,如剪枝、量化等,来减小模型的参数量和计算量;同时,也可以尝试设计更加高效的融合策略,以提高模型的性能和速度。

替换SwinTransformer-Tiny(基于MMYOLO)

OpenMMLab 2.0 体系中 MMYOLO、MMDetection、MMClassification、MMSelfsup 中的模型注册表都继承自 MMEngine 中的根注册表,允许这些 OpenMMLab 开源库直接使用彼此已经实现的模块。 因此用户可以在 MMYOLO 中使用来自 MMDetection、MMClassification、MMSelfsup 的主干网络,而无需重新实现。

假设想将'SwinTransformer-Tiny'作为 'yolov5' 的主干网络,则配置文件如下:

_base_ = './yolov5_s-v61_syncbn_8xb16-300e_coco.py'

deepen_factor = _base_.deepen_factor
widen_factor = 1.0
channels = [192, 384, 768]
checkpoint_file = 'https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_tiny_patch4_window7_224.pth'  # noqa

model = dict(
    backbone=dict(
        _delete_=True, # 将 _base_ 中关于 backbone 的字段删除
        type='mmdet.SwinTransformer', # 使用 mmdet 中的 SwinTransformer
        embed_dims=96,
        depths=[2, 2, 6, 2],
        num_heads=[3, 6, 12, 24],
        window_size=7,
        mlp_ratio=4,
        qkv_bias=True,
        qk_scale=None,
        drop_rate=0.,
        attn_drop_rate=0.,
        drop_path_rate=0.2,
        patch_norm=True,
        out_indices=(1, 2, 3),
        with_cp=False,
        convert_weights=True,
        init_cfg=dict(type='Pretrained', checkpoint=checkpoint_file)),
    neck=dict(
        type='YOLOv5PAFPN',
        deepen_factor=deepen_factor,
        widen_factor=widen_factor,
        in_channels=channels, # 注意:SwinTransformer-Tiny 输出的3个通道是 [192, 384, 768],和原先的 yolov5-s neck 不匹配,需要更改
        out_channels=channels),
    bbox_head=dict(
        type='YOLOv5Head',
        head_module=dict(
            type='YOLOv5HeadModule',
            in_channels=channels, # head 部分输入通道也要做相应更改
            widen_factor=widen_factor))
)

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

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

相关文章

终于找到微信聊天记录SQLite数据库文件解密方法了,一起来看看吧!

https://github.com/xuchengsheng/ 获取当前登录微信的微信昵称、账号、手机号、邮箱、秘钥、微信Id、文件夹路径 将微信PC的多个聊天记录数据库合并为单一数据库文件 支持微信聊天对话窗口(文本消息,引用消息,图片消息,表情消息…

STM32(六):定时器PWM呼吸灯 (标准库函数)

前言 上一篇文章已经介绍了如何用STM32单片机中的TIMER定时器来控制LED灯的交替闪烁,实现了点灯的第五种方式。这篇文章我们来介绍一下如何用STM32单片机中的定时器的PWM波来实现LED的“呼吸”。 一、实验原理 关于定时器这边就不多加赘述,详细请看上…

【吊打面试官系列】Java高并发篇 - 如何让正在运行的线程暂停一段时间?

大家好,我是锋哥。今天分享关于 【如何让正在运行的线程暂停一段时间?】面试题,希望对大家有帮助; 如何让正在运行的线程暂停一段时间? 我们可以使用 Thread 类的 Sleep()方法让线程暂停一段时间。需要注意的是&#x…

ROS1集成NanoSDK(mqtt over quic)库遇到的问题

集成方式,demo见附件 问题记录 ROS集成构建问题:如下图,少了依赖库导致未定义的符号

AMD优化策略

FPGA,英文全称是 Field Programmable Gate Array,中文意思是现场可编程门阵列。基本架构:可配置逻辑模块(CLB: Configurable Logic Block)、开关矩阵(Switch Matrix,也称为 Switch B…

kraken2 最新版安装,极简模式

kraken2 git clone https://github.com/DerrickWood/kraken2.gitcd kraken2./install_kraken2.sh /opt/krakenvim .bashrc ---------------- # Kraken export PATH"/opt/kraken:$PATH" ----------------source .bashrc Note: 不晓得是不是我设置了清华源&#xff0c…

【Django学习笔记(十)】Django的创建与运行

Django的创建与运行 前言正文1、安装Django2、创建项目2.1 基于终端创建项目2.2 基于Pycharm创建项目2.3 两种方式对比 3、默认项目文件介绍4、APP5、启动运行Django5.1 激活App5.2 编写URL和视图函数对应关系5.3 启动Django项目5.3.1 命令行启动5.3.2 Pycharm启动5.3.3 views.…

Web3智能物联网:科技连接的未来世界

在当今科技飞速发展的时代,Web3智能物联网正逐渐成为人们关注的焦点。随着区块链技术的不断成熟和普及,以及物联网的普及和应用,Web3智能物联网作为二者的结合,将为未来的数字世界带来革命性的变化。本文将深入探讨Web3智能物联网…

【JavaEE 初阶(三)】多线程代码案例

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵关注我带你了解更多线程知识 目录 1.前言2.单例模式2.1饿汉方式2.2饿汉方式 3.阻塞队列3.1概念3.2实现 4.定时器4.1概念4.…

Linux常用名命令

Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改源代码,这是其他操作系统做不到的,Ubuntu,Centos。 linux中,一切皆文件。 一些重要的目录 / 根目录,所有文件都放…

2024-05-08 精神分析-对损失和挫败的强烈易感性-分析

摘要: 对损失的强烈的易感性,会在遭受损失或者挫败的时候,表现的极其敏感,这个过程主要是在创业的过程中更加强烈的表现并带来巨大的影响。必须要对其进行彻底的分析,并保持对此行为的长期的警惕。 所谓前事不忘后事之师&#x…

JAVA IO/NIO 知识点总结

一、常见 IO 模型简介 1. 阻塞IO模型 最传统的一种IO模型,即在读写数据过程中会发生阻塞现象。当用户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线…

WIFI模块UDP电脑端调试

一,两端都是电脑端 1,电脑本机的IP地址 192.168.137.1 2,新建两个不同的连接,注意端口 二,WIFI 模块和电脑端连接 1,设置模块端目标IP和端口,电脑端只接收数据的话,IP、端口可随…

effective python学习笔记_pythonic思维

优缺点 书的好处是很多新特性提高了可读性代码性等各方面性能,缺点是新特性和py老版本不兼容,老版本可能没有这些新特性,如果用了py早期版本,需要考虑替代方案 查py版本 import sys sys.version sys.version_info 遵循PEP8 …

python turtle

名字动画 #SquareSpiral1.py import turtle t turtle.Pen() turtle.bgcolor("black")my_nameturtle.textinput("输入你的姓名","你的名字?") colors["red","yellow","purple","blue"] for…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑热动态的综合能源系统碳排放流建模与分析》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

浅谈智能电气火灾监控系统的设计及应用

摘要:致电气火灾的原因是多方面的,主要成因包括漏电、绝缘层老化、短路、电火花密集、接地发生故障、电气设备自然、接触不良和电流超负荷等。文章分析电气火灾的成因,并探索电气火灾监控系统的设计方案与注意事项。 关键词:电气…

【数据结构】闲谈A股实时交易的数据结构-队列

今天有点忙,特意早起,要不先写点什么。看到个股的红红绿绿, 突然兴起,要不写篇文章分析下A股交易的简易版数据结构。 在A股实时股票交易系统中,按照个人理解,大致会用队列来完成整个交易。队列(…

WordPress原创插件:当日24小时发布文章标题变红

WordPress原创插件&#xff1a;当日24小时发布文章标题变红 <?php// 添加自定义样式 function title_red_plugin_styles() {$current_time time();$post_time get_the_time(U);$time_difference $current_time - $post_time;if ($time_difference < 86400) {echo&l…

SSH的魅力:为何它成为远程访问的首选

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Linux &#xff1a;从菜鸟到飞鸟的逆袭》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、SSH简介 2、SSH的历史与发展 3、SSH的主要用…