【YOLO v5 v7 v8 小目标改进】ODConv:在卷积核所有维度(数量、空间、输入、输出)上应用注意力机制来优化传统动态卷积

news2024/11/15 0:01:21

ODConv:在卷积核所有维度(数量、空间、输入、输出)上应用注意力机制来优化传统的动态卷积

    • 提出背景
      • 传统动态卷积
      • 全维动态卷积
      • 效果
    • 小目标涨点
      • YOLO v5 魔改
      • YOLO v7 魔改
      • YOLO v8 魔改

 


论文:https://openreview.net/pdf?id=DmpCfq6Mg39

代码:https://github.com/OSVAI/ODConv

 

提出背景

在过去的十年里,我们见证了深度卷积神经网络(CNN)在许多计算机视觉应用中的巨大成功。

构建深度CNN的最常见方法是堆叠多个卷积层以及其他基本层,并预先定义特征连接拓扑。

通过手工工程和自动搜索对CNN架构设计的巨大进步,许多流行的分类骨架已经被提出。

最近的工作表明,将注意力机制融入卷积块可以进一步提高现代CNN的性能。

问题1:提高CNN性能

  • 解法:引入注意力机制。
  • 之所以使用这个解法,是因为注意力机制可以加强CNN通过鼓励有用的特征通道同时抑制不重要的特征通道,从而提高表示能力。

问题2:动态卷积的设计限制

  • 子解法1:多维度注意力机制(ODConv)
    • 之所以使用ODConv,是因为现有的动态卷积方法只关注卷积核数量的一个维度,而忽略了卷积核空间的其他三个维度(空间大小、输入通道数和输出通道数),限制了捕获丰富上下文线索的能力。
  • 子解法2:减少模型大小
    • 之所以使用这个子解法,是因为传统的动态卷积在替换常规卷积时会增加n倍的卷积参数,导致模型大小大幅增加。通过动态卷积分解方法,可以获得更紧凑且竞争力的模型。

传统动态卷积

在这里插入图片描述
上图是 DyConv(a 传统的动态卷积)和ODConv(b 本文的全维动态卷积)的结构图比较。

在DyConv中,使用全局平均池化(GAP)、全连接层(FC)和Sigmoid激活函数来计算单个注意力标量 α w i αw_i αwi,这个标量用于加权卷积核 W i W_i Wi

相比之下,ODConv采用了更复杂的多维度注意力机制来计算四种类型的注意力( α s i , α c i , α f i , 和 α w i αs_i, αc_i, αf_i, 和 αw_i αsi,αci,αfi,αwi),这些注意力分别对应于卷积核空间的不同维度。

四个不同的注意力通过四个分支生成,并通过Sigmoid或Softmax函数进行归一化。

这些注意力分别沿着卷积核空间的空间维度、输入通道维度、输出通道维度和卷积核数量维度被计算出来,并且以并行的方式应用于卷积核。

 

全维动态卷积

ODConv通过在任何卷积层利用新颖的多维度注意力机制来学习卷积核空间所有四个维度上的四种注意力,这些注意力相互补充,逐步应用它们可以显著增强CNN的基本卷积操作的特征提取能力。

让我们以ODConv在任何卷积层利用新颖的多维度注意力机制来学习卷积核空间所有四个维度上的四种注意力为例,举一个具体的应用场景来说明这种方法的有效性。

ODConv解法

  • 子特征1:空间尺寸注意力。ODConv学习不同空间尺寸的卷积核的重要性,从而能够更好地捕捉图像的局部和全局特征。之所以使用空间尺寸注意力,是因为不同大小的特征图对于捕获图像中的不同尺度信息至关重要。

  • 子特征2:输入通道注意力。通过调整对不同输入通道的关注程度,ODConv可以更有效地整合来自不同特征通道的信息。之所以使用输入通道注意力,是因为不同的特征通道可能包含不同的信息,对最终的识别任务有不同的贡献。

  • 子特征3:输出通道注意力。ODConv通过学习对输出通道的不同关注,优化了特征的表示。之所以使用输出通道注意力,是为了强化模型的能力,以区分和识别图像数据集中的细粒度类别。

  • 子特征4:卷积核数量注意力。通过动态调整不同卷积核的权重,ODConv能够根据输入图像的特征自适应地选择最适合的卷积核组合。之所以使用卷积核数量注意力,是因为它允许模型根据输入特征的复杂度动态调整其表示能力,从而在保持效率的同时提高准确性。

在这里插入图片描述
(a) αs_i:空间维度注意力,它将不同的权重分配给卷积核的每个空间位置。

(b) αc_i:输入通道维度注意力,它将不同的权重分配给卷积核的每个输入通道。

© αf_i:输出通道维度注意力,它将不同的权重分配给卷积核的每个输出滤波器。

(d) αw_i:卷积核维度注意力,它将一个整体的权重分配给整个卷积核集合。

因此,即使是使用单个卷积核的ODConv也能与现有的具有多个卷积核的动态卷积对手竞争或胜出,大大减少了额外的参数。

ODConv可以作为一种插入式设计用于替代许多CNN架构中的常规卷积,与现有的动态卷积设计相比,它在模型准确性和效率之间取得了更好的平衡。

 

在传统的CNN中,每个卷积层都使用固定的卷积核来处理输入的图像或特征图,这意味着无论输入数据如何,都会应用相同的卷积核。

然而,这种方法并不总是最优的,因为不同的输入图像可能需要不同的特征提取方式来更好地识别物体。

ODConv通过引入一种新颖的多维度注意力机制来解决这个问题。

具体来说,它在任何给定的卷积层中,不仅仅学习一个卷积核,而是学习一组卷积核,每个卷积核都针对卷积核空间的一个特定维度(如卷积核的空间尺寸、输入通道数、输出通道数和卷积核数量)。

然后,它使用输入特征动态地决定这些卷积核的注意力权重,使得网络能够根据输入图像的不同特征自适应地调整其卷积操作。

例如,如果输入图像是一只猫,ODConv可能会赋予识别猫特征(如毛发纹理或尾巴形状)更有用的卷积核更高的注意力权重。

相反,如果输入图像是一只鸟,它可能会增加那些能够捕捉到鸟的特征(如羽毛或翅膀形状)的卷积核的权重。

通过这种方式,ODConv能够为每个输入图像动态地优化其卷积操作,从而在不同的图像分类任务中实现更高的准确性,同时减少了需要的额外参数数量,因为它甚至可以使用单个卷积核与现有的多卷积核动态卷积方法竞争或超越它们的性能。

效果

ODConv的核心原理是引入一种全新的多维度注意力机制,这种机制不仅考虑卷积核的数量维度(如传统的动态卷积所做的),而且还同时考虑卷积核的空间维度、输入通道维度和输出通道维度。

这种方法允许网络根据输入数据的具体特点,在多个层面上动态调整其卷积核的权重,从而提高特征提取的能力。

ODConv通过在所有卷积核维度上应用注意力机制来优化传统的动态卷积,这样做可以提供更精细的特征处理能力,并提高模型对输入数据变化的适应性和敏感性。

这种细粒度的动态调整使得ODConv能够在增加很少或没有额外计算成本的情况下,提高模型的准确性和效率。

通过在轻量级CNN模型中应用ODConv,我们可以显著提高模型对图像的识别准确率,而不会带来太多的额外计算成本。

例如,将ODConv集成到MobileNetV2中,可能会在ImageNet测试集上获得比原始模型更高的分类准确率,同时保持模型的轻量级特性。

这种方法通过综合考虑卷积核的所有维度上的注意力,有效地增强了特征的表达力,解决了轻量级CNN在复杂任务上性能不足的问题。

小目标涨点

更新中…

YOLO v5 魔改

YOLO v7 魔改

YOLO v8 魔改

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电商小程序10分类管理

目录 1 分类数据源2 搭建功能3 创建变量读取数据4 绑定数据总结 本篇我们介绍一下电商小程序的分类管理功能的开发,先看我们的原型图: 在首页我们是展示了四个分类的内容,采用上边是图标,下边是文字的形式。使用低代码开发&#…

Redis大数据统计

文章目录 一. 相关面试题1. 面试题一2. 面试题二 二. 统计的类型1. 聚合统计2. 排序统计3. 二值统计4. 基数统计 三. Hyperloglog1. 专业名词2. Hyperloglog使用3. Hyperloglog原理4. Hyperloglog案例 四. GEO1. 面试题2. GEO使用3. GEO案例 五. BitMap1. 面试题2. BitMap使用 …

Java+SpringBoot+Vue:招生宣传的全栈解决方案

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

《汇编语言》- 读书笔记 - 第13章-int 指令

《汇编语言》- 读书笔记 - 第13章-int 指令 13.1 int 指令13.2 编写供应用程序调用的中断例程中断例程:求一 word 型数据的平方主程序中断处理程序执行效果 中断例程:将一个全是字母,以0结尾的字符串,转化为大写主程序中断处理程序…

中央处理器CPU中的技术

1 知识加油站 1.1 cpu 指令的执行过程 取指:cpu 获取 程序计数器 中存放的指令地址。读取内存中此地址对应指令并存入指令寄存器译码:指令译码器,解析指令运行:算数逻辑单元计算回写:将执行结果写入对应位置 2. cpu…

如何使用ShellSweep检测特定目录中潜在的webshell文件

关于ShellSweep ShellSweep是一款功能强大的webshell检测工具,该工具使用了PowerShell、Python和Lua语言进行开发,可以帮助广大研究人员在特定目录中检测潜在的webshell文件。 ShellSweep由多个脚本模块组成,能够通过计算文件内容的熵来评估…

xsslabs第四关

测试 "onclick"alert(1) 这与第三关的代码是一样的&#xff0c;但是每一关考的点是不一样的所以我们看一下源代码 <!DOCTYPE html><!--STATUS OK--><html> <head> <meta http-equiv"content-type" content"text/html;ch…

C++string类讲解

大家好鸭 见字如面&#xff0c;已经有好久没有写文章了&#xff0c;这段时间忙着学习&#xff0c;也忙着玩&#xff0c;所以停更了一段时间 今天让我们来谈一谈关于C中的string类 什么是string类&#xff1f; 在c语言中我们操作字符串往往采用指针&#xff0c;这样的访问方式并…

不看后悔的腾讯云优惠券领取入口指南,2024最新代金券

腾讯云代金券领取渠道有哪些&#xff1f;腾讯云官网可以领取、官方媒体账号可以领取代金券、完成任务可以领取代金券&#xff0c;大家也可以在腾讯云百科蹲守代金券&#xff0c;因为腾讯云代金券领取渠道比较分散&#xff0c;腾讯云百科txybk.com专注汇总优惠代金券领取页面&am…

二级医院云HIS系统,云HIS源码,支持分院HIS,集团HIS

云HIS具有可扩展、易共享、易协同、低成本、体验号、更便捷、易维护的优势&#xff0c;重新定义了数字化医院信息系统&#xff0c;实现数字化医院信息系统的转型升级。云 HIS 系统功能完善&#xff0c;涵盖临床各业务部门&#xff0c;采集、抽提、汇总、存贮、展现所有的临床诊…

FL Studio 21.2.3.3586 for Mac中文版新功能介绍及2024年最新更新日志

如果你正计划学习音乐制作&#xff0c;一款强大且易学的音乐制作软件是必不可少的。由于很多小伙伴对音乐制作软件没有实际体验过&#xff0c;到底选择哪一款软件最合适成为当下最纠结的问题。 这里为大家推荐一款功能强大且适合新手小伙伴的音乐编曲软件—FL Studio 21.2.3.35…

[物联网] OneNet 多协议TCP透传

[物联网] OneNet 多协议TCP透传 STM32物联网–ONENET云平台的多协议接入产品创建 : https://blog.csdn.net/qq_44942724/article/details/134492924 Onenet tcp 透传 : https://blog.csdn.net/flyme2010/article/details/107086001 tcp服务端测试工具 : http://tcp.xnkiot.com/…

解决导入项目后在idea中不显示的问题

问题&#xff1a; 今天下午重新打开寒假之前负责的项目&#xff0c;发现打不开了&#xff0c; 从master拉取最新代码到我的分支&#xff0c;发现我的分支上显示就是这样子&#xff0c;无论怎么更新代码都不行。 原因&#xff1a; 在上一次上传代码的时候&#xff0c;我把我分…

YOLOv9改进|使用AKConv改进RepNCSPELAN4

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 一、改进点介绍 AKConv是一种具有任意数量的参数和任意采样形状的可变卷积核&#xff0c;对不规则特征有更好的提取效果。 RepNCSPELAN4是YOLOv9中的…

JAVA的学习日记

JAVA的学习日记&#xff08;2024.3.1&#xff09;&#xff08;b站韩顺平老师课程学习笔记版&#xff09; ps:捡起忘光光的Java语言 Sublime //1. public是公有&#xff0c;class是类 //2. public class Hello表示Hello是一个类&#xff0c;是一个public公有的类 //3. Hello{…

【框架】MyBatis 框架重点解析

MyBatis 框架重点解析 1. MyBatis 执行流程 会话工厂生产的 SqlSession 对象提供了对数据库执行SQL命令所需的所有方法&#xff0c;包括但不限于以下功能&#xff1a; 数据库操作&#xff1a;SqlSession可以执行查询&#xff08;select&#xff09;、插入&#xff08;insert&a…

桥接模式(Bridge Pattern) C++

上一节&#xff1a;适配器模式&#xff08;Adapter Pattern&#xff09; C 文章目录 0.理论1.组件2.使用场景 1.实践 0.理论 桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#xff0c;它的核心思想是将抽象部分与其实现部分分离&#xff0c;使它们可…

liunx安装jdk、redis、nginx

jdk安装 下载jdk,解压。 sudo tar -zxvf /usr/local/jdk-8u321-linux-x64.tar.gz -C /usr/local/ 在/etc/profile文件中的&#xff0c;我们只需要编辑一下&#xff0c;在文件的最后加上java变量的有关配置&#xff08;其他内容不要动&#xff09;。 export JAVA_HOME/usr/l…

操作系统系列学习——多进程图像

文章目录 前言多进程图像 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招&#xff0c;计划学习操作系统并完成6.0S81&#xff0c;加油&#xff01; 本文总结自B站【哈工大】操作系统 李治军&#xff08;全32讲&#xff09; 老师课程讲的非常好&#xff0c;感谢 【哈工大】…

设置文字之间的间距应该如何实现

设置文字之间的间距&#xff0c;通常指的是字母之间&#xff08;字符间距&#xff09;或单词之间的间距。在CSS中&#xff0c;这可以通过letter-spacing和word-spacing属性来实现。 字符间距&#xff08;letter-spacing&#xff09; letter-spacing属性用于调整字符之间的间距…