【YOLOv8改进- 多模块融合改进】GhostConv + ContextAggregation 幽灵卷积与上下文聚合模块融合改进,助力小目标高效涨点

YOLOv8目标检测创新改进与实战案例专栏

专栏目录: YOLOv8有效改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例

专栏链接: YOLOv8基础解析+创新改进+实战案例

ContextAggregation介绍

image-20240724150933240

摘要

卷积神经网络(CNNs)在计算机视觉中无处不在,具有众多高效的变体。最近,最初在自然语言处理(NLP)中引入的Transformers越来越多地被应用于计算机视觉领域。尽管早期采用者继续使用CNN骨干网络,但最新的网络是端到端的、无CNN的Transformer解决方案。一个最近令人惊讶的发现表明,基于简单多层感知机(MLP)的解决方案,即使没有传统的卷积或Transformer组件,也能生成有效的视觉表示。虽然CNNs、Transformers和MLP-Mixers可以被认为是完全不同的架构,但我们提供了一个统一的视角,表明它们实际上是神经网络堆栈中聚合空间上下文的一种更普遍的方法的特例。我们提出了CONTAINER(CONText AggregatIon NEtwoRk),这是一个多头上下文聚合的通用构建模块,能够像Transformers一样利用长程交互,同时仍然利用局部卷积操作的归纳偏差,从而实现更快的收敛速度,这通常在CNNs中可见。我们的CONTAINER架构在ImageNet上使用22M参数实现了82.7%的Top-1准确率,相比DeiT-Small提高了2.8个百分点,并且只需200个epoch就能收敛到79.9%的Top-1准确率。与基于Transformer的方法相比,后者在依赖更大输入图像分辨率的下游任务中不具备良好的扩展性,我们的高效网络CONTAINER-LIGHT可以应用于DETR、RetinaNet和Mask-RCNN等目标检测和实例分割网络,获得令人印象深刻的检测mAP分别为38.9、43.8、45.1,和掩码mAP为41.3,相比使用可比计算和参数规模的ResNet-50骨干分别提高了6.6、7.3、6.9和6.6个点。与DeiT在DINO框架上的自监督学习相比,我们的方法也取得了可喜的结果。代码已在GitHub发布。

ContextAggregation文章链接

论文地址:论文地址

代码地址:代码地址

基本原

关键组成部分和机制

  1. 输入表示

    • 输入图像表示为 $X \in \mathbb{R}^{C \times H \times W}$,其中 $C$ 是通道数, $H \times W$ 是空间维度。该图像被展平为一系列标记 ${X_i \in \mathbb{R}^C | i = 1, \ldots, N}$,其中 $N = H \times W$。
  2. 亲和矩阵

    • 定义亲和矩阵 $A \in \mathbb{R}^{N \times N}$ 以表示上下文聚合的邻域。该矩阵决定了信息在特征空间中的传播方式。聚合函数可以表示为:
      $$
      Y = (A V) W_1 + X,
      $$

      其中 $V \in \mathbb{R}^{N \times C}$ 是通过线性投影 $V = X W_2$ 从 $X$ 获得的变换版本。 $W_1$ 和 $W_2$ 是可学习参数。

  3. 多头聚合

    • 为了增加建模能力,使用多个亲和矩阵,创建几条上下文信息的路径。多头版本的聚合函数为:
      $$
      Y = \text{Concat}(A_1 V_1, \ldots, A_M V_M) W_2 + X,
      $$

      其中每个 $A_m$ (对 $m = 1, \ldots, M$)是表示特征空间内不同关系的亲和矩阵,增强了相比单头版本的表示能力。

  4. 不同架构中的上下文聚合

    • Transformers:利用基于投影的query-key对之间相似性动态生成的亲和矩阵。自注意机制可以表示为:
      $$
      A_{sa}^m = \text{Softmax}\left(\frac{Q_m K_m^T}{\sqrt{C/M}}\right),
      $$
      其中 $Q_m$ 和 $K_m$ 是query和key投影。这种方法捕捉实例级信息,但计算密集。

    • 深度卷积:并行融合空间和通道信息,使用从卷积核导出的静态和稀疏亲和矩阵。这种方法高效且适合捕捉局部上下文。

    • MLP-Mixer:使用转置MLP操作进行上下文聚合,具有密集亲和矩阵:
      $$
      A_{mlp} = (W_{MLP})^T,
      $$
      其中 $W_{MLP}$ 是可学习参数。

  5. 统一框架:CONTAINER

    • CONTAINER(上下文聚合网络)模块通过可学习参数结合静态和动态亲和矩阵,提供灵活而强大的上下文聚合方法。一般形式为:
      $$
      Y = (\alpha A(X) + \beta A)V W_2 + X,
      $$
      其中 $A(X)$ 是动态亲和矩阵, $A$ 是静态亲和矩阵。 $\alpha$ 和 $\beta$ 是可学习参数。

引入GhosConv代码

YOLOv8内置GhosConv,具体代码可见:ultralytics/ultralytics/nn/modules/conv.py

配置yolov8_GhostConvContextAggregation.yaml

ultralytics/ultralytics/cfg/models/v8/yolov8_GhostConvContextAggregation.yaml

# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLOv8 object detection model with P3-P5 outputs. For Usage examples see https://docs.ultralytics.com/tasks/detect# Parameters
nc: 80  # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov8n.yaml' will call yolov8.yaml with scale 'n's: [0.33, 0.50, 1024]  # YOLOv8s summary: 225 layers, 11166560 parameters, 11166544 gradients,  28.8 GFLOPs# YOLOv8.0s backbone
backbone:# [from, repeats, module, args]- [-1, 1, Conv, [64, 3, 2]]  # 0-P1/2- [-1, 1, GhostConv, [128, 3, 2]]  # 1-P2/4- [-1, 3, C2f, [128, True]]- [-1, 1, GhostConv, [256, 3, 2]]  # 3-P3/8- [-1, 6, C2f, [256, True]]- [-1, 1, GhostConv, [512, 3, 2]]  # 5-P4/16- [-1, 6, C2f, [512, True]]- [-1, 1, GhostConv, [1024, 3, 2]]  # 7-P5/32- [-1, 3, C2f, [1024, True]]- [-1, 1, SPPF, [1024, 5]]  # 9# YOLOv8.0s head
head:- [-1, 1, nn.Upsample, [None, 2, 'nearest']]- [[-1, 6], 1, Concat, [1]]  # cat backbone P4- [-1, 3, C2f, [512]]  # 12- [-1, 1, nn.Upsample, [None, 2, 'nearest']]- [[-1, 4], 1, Concat, [1]]  # cat backbone P3- [-1, 3, C2f, [256]]  # 15 (P3/8-small)- [-1, 1, Conv, [256, 3, 2]]- [[-1, 12], 1, Concat, [1]]  # cat head P4- [-1, 3, C2f, [512]]  # 19 (P4/16-medium)- [-1, 1, Conv, [512, 3, 2]]- [[-1, 9], 1, Concat, [1]]  # cat head P5- [-1, 3, C2f, [1024]]  # 23 (P5/32-large)- [[15, 18, 21], 1, Detect, [nc]]  # Detect(P3, P4, P5)

task与yaml配置

详见:https://blog.csdn.net/shangyanaf/article/details/140665117

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小型团队缺陷管理系统指南:如何选型

国内外主流的10款小型团队使用的缺陷管理系统对比:PingCode、Worktile、禅道(ZenTao)、Tapd、Teambition、Tower、Jira、DoneDone、Bugzilla、MantisBT。在小型团队中,选择合适的缺陷管理系统似乎总是一个头痛的问题。你可能已经发现,一个有效的系统不仅可以帮助你追踪和修…

SIEM是什么?企业安全

随着信息技术的不断发展,企业面临的安全威胁也在迅速增加,为了有效应对这些挑战,越来越多的企业开始关注安全信息与事件管理即SIEM:Security Information and Event Management技术。那么SIEM究竟是什么,它对企业安全有何作用呢? SIEM技术是一种综合性的安全解决方案,通…

「代码随想录算法训练营」第二十一天 | 回溯算法 part3

93. 复原 IP 地址题目链接:https://leetcode.cn/problems/restore-ip-addresses/ 题目难度:中等 文章讲解:https://programmercarl.com/0093.复原IP地址.html 视频讲解:https://www.bilibili.com/video/BV1XP4y1U73i/ 题目状态:好难,看题解通过思路: 和分割回文串一样,…

Jetpack Compose学习(12)——Material Theme的主题色切换

原文:Jetpack Compose学习(12)——Material Theme的主题色切换-Stars-One的杂货小窝闲着无事研究了下Jetpack Compose M3 主题切换效果本系列以往文章请查看此分类链接Jetpack compose学习如何生成主题 首先,我们需要知道的是,M3有提供个在线网站供开发者进行快速生成主题,详情…

UG二次开发NXOpen-Python(十四)自定义特征(CustomFeature)

可以通过二次开发建立自定义特征,实现和长方体、圆柱等一样的特征插入和特征编辑操作。如下图所示:   点击确定后,即可在指定点生成一个指定长度的正四面体,并且双击该特征即可进行编辑并更新。 未完待续

Telegram纸飞机统计机器人源码,TG群记账群发机器源码人,TG自动记账全开源版本

Telegram纸飞机统计机器人源码,TG群记账群发机器源码人,TG自动记账全开源版本 一.thinkphp6框架开发 按thinkphp6部署+伪静态+php7.4 数据库连接信息在config文件夹database.php文件修改 后台账号:admin 密码 123321. (有个小数点) 二.机器人部署 1.去tg官方申请机器人获取到t…

项目环境出现PHP 502 Bad Gateway 问题排查

一、现象 昨天运维人员被告知,在升级完客户集群环境后,访问管理页面偶尔会报 502 Bad Gateway二、排查思路 1、看到 502 第一时间想到的应该是 php-fpm 出问题了,先看下 nginx 日志,连接被对端关闭,说明 php-fpm 进程提前退出了,那是什么原因导致 php-fpm 退出了呢? 2、…

mysql8: 新建账号和权限操作

一,允许从任何ip访问时,用% CREATE USER myusername@% IDENTIFIED BY my_password;GRANT ALL PRIVILEGES ON `mybase`.* TO myusername@%;FLUSH PRIVILEGES; 注意:这种做法在生产环境中不要使用,不够安全, 只用于内部开发时工程师共同访问的内部环境 二,授权的例…

windows中MySQL迁移数据存放盘符位置

由于刚开始安装mysq时都选择了默认安装,数据存放在了c盘,后面数据量过大c盘不堪重负,所以迁移数据到D盘windows中MySQL迁移数据存放盘符位置 参考:https://blog.csdn.net/ZYX121799/article/details/136474869查看MySQL的数据存放位置 show global variables like "%d…

前端性能优化实践方向与方法

前端性能优化实践方向与方法0x01 代码优化与压缩 (1)HTML移除不必要的空白字符、注释和冗余标签,以减少文件大小使用命令 npm install html-minifier -g 安装 HTML Minifier使用命令 html-minifier -V 确认安装成功在 Node.js 环境中配置 index.js // 引入 HTML Minifier co…

【YashanDB知识库】开源调度框架Quartz写入Boolean值到YashanDB报错

问题现象 Quartz 是一个广泛应用于企业级应用中的开源作业调度框架,它主要用于在Java环境中管理和执行任务。 为了任务调度,Quartz的数据模型中使用了大量的布尔值记录任务、流程的各种状态,如:Quartz使用JDBC写入任务状态代码: ps = conn.prepareStatement(); setBoolean…

jmeter 测试getpost请求测试遇到的问题

GET请求Get请求的参数要写在Url后面,不能写在请求体POST请求post请求验证除了cookie之外,可能还会有token,需要加到http请求头里面提示说是会话校验失败,猜测是cookie失效或者是少了参数,查看请求post请求Content-Type和实际接口不符合,接口返回415错误服务器返回415,表…