【目标检测】——Gold-YOLO为啥能超过YOLOV8

华为
https://arxiv.org/pdf/2309.11331.pdf
文章的出发点:FPN中的信息传输问题

1. 简介

基于全局信息融合的概念,提出了一种新的收集和分发机制(GD),用于在YOLO中进行有效的信息交换。通过全局融合多层特征并将全局信息注入到更高的层次,显著增强了NECK的信息融合能力,提高了模型在不同对象大小上的性能。具体来说,GD机制包括两个分支:一个浅层收集和分发分支和一个深层收集和分发分支,它们通过卷积基础块和注意力基础块提取和融合特征信息。为了进一步促进信息流动,我们引入了一个轻量级的相邻层融合模块,它在局部范围内结合了来自相邻层的特征。我们的Gold-YOLO架构超越了现有的YOLO系列,有效地展示了我们提出的方法的有效性。

为了进一步提高模型的准确性,我们还引入了一种预训练方法,我们使用MAE方法在ImageNet 1K上预训练模型的主干网络,这显著提高了模型的收敛速度和准确性。例如,我们的Gold-YOLO-S经过预训练后,实现了46.4%的AP,超过了之前的SOTA YOLOv6-3.0-S的45.0%的AP,同时速度相似。

2. method

现有Neck的问题
传统上,不同层次的特征携带了关于各种大小对象的位置信息。较大的特征包含了较小对象的低维纹理细节和位置。相反,较小的特征包含了较大对象的高维信息和位置。特征金字塔网络(FPN)的原始思想是,这些不同的信息可以通过相互协助来提高网络性能。FPN提供了一种有效的架构设计,通过跨尺度连接和信息交换来融合多尺度特征,从而提高了对各种大小对象的检测精度。

基于FPN,路径聚合网络(PANet)引入了一个自下而上的路径,使得不同层次之间的信息融合更为充分。类似地,EfficientDet提出了一种新的可重复模块(BiFPN),以提高不同层次之间信息融合的效率。M2Det引入了一个具有U形和特征融合模块的高效MLFPN架构。Ping-Yang Chen通过双向融合模块改进了深层和浅层之间的交互。与这些层间工作不同,[35]使用集中特征金字塔(CFP)方法探索了单个特征信息。此外,[51]扩展了FPN,使用渐近特征金字塔网络(AFPN)进行非相邻层之间的交互。

YOLO系列的颈部结构,如图3所示,采用了传统的FPN结构,该结构包含多个分支用于多尺度特征融合。然而,它只能完全融合来自相邻层次的特征,对于其他层次的信息,只能通过“递归”方式间接获取。在图3中,展示了传统FPN的信息融合结构:其中现有的level-1、2和3从上到下排列。FPN用于不同层次之间的融合。当level-1从其他两个层次获取信息时,有两种不同的情况:

1. 如果第一层(level-1)想要使用来自第二层(level-2)的信息,它可以直接获取并融合这些信息。
2. 如果第一层想要使用来自第三层(level-3)的信息,它需要递归地调用相邻层的信息融合模块。具体来说,必须先融合第二层和第三层的信息,然后第一层可以通过结合第二层的信息间接获取第三层的信息。

这种方法是为了解决在传统的特征金字塔网络(FPN)结构中存在的信息传输问题。在FPN中,当需要跨层级融合信息时(例如,将level-1和level-3进行融合),传统的FPN结构无法无损地传输信息,这阻碍了YOLOs更好地进行信息融合。因此,作者提出了一种新的收集和分发机制(GD),通过全局融合多尺度特征并将全局信息注入到更高的层次,显著增强了脖子的信息融合能力,提高了模型在不同对象大小上的性能

在这里插入图片描述
收集和分发过程对应于三个模块:特征对齐模块(FAM),信息融合模块(IFM)和信息注入模块(Inject)

收集过程涉及两个步骤。首先,FAM从各个层次收集并对齐特征。其次,IFM融合对齐的特征以生成全局信息。
在从收集过程中获取融合的全局信息后,注入模块将此信息分发到每个层次并使用简单的注意力操作注入,从而增强分支的检测能力。 为了增强模型检测不同大小对象的能力,我们开发了两个分支:低阶收集和分发分支(Low-GD)和高阶收集和分发分支(High-GD)。这些分支分别提取和融合大尺寸和小尺寸的特征图。

网络结构
在这里插入图片描述

2.1 low-stage gather-and-distribute branch

分为:对齐,融合,注入三步
在这里插入图片描述

  • 用PSP对齐不同尺度的特征
  • 再用conv,RepConv进行特征融合
  • 最后用split分类两个特征用于同B3,B4融合
  • 注入:采用注意力机制。具体的实现:
    在这里插入图片描述

2.2 High-stage gather-and-distribute branch

在这里插入图片描述

  • 特征融合用transformer来做了。

2.3 增强的特征插入模块

在这里插入图片描述
不用原始的特征,而是用多尺度融合后的特征。

2.4 MIM预训练

采用Spark的预训练方式。在ImageNet 1K上预训练了我们模型的主干网络,用于多个Gold-YOLO模型,并取得了显著的改进。

3 实验

3.1 Low-GD, High-GD模块作用

在这里插入图片描述
1:说明了Low-GD,低层特征对小目标的作用
2:说明High-GD, 高层特征对大目标的作用

3.2 预训练MIM的作用

采用预训练之后能带来1个点左右的提升
在这里插入图片描述

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

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

相关文章

【DLoopDetector(C++)】DBow2词袋模型loop close学习

0.前言 最近读了两篇论文,论文作者开源了一种基于词袋模型DBoW2库的DLoopDetector算法,自己运行demo测试一下 对应论文介绍:Bags of Binary Words for Fast Place Recognition in Image Sequences 开源项目Github地址:https://gi…

ThreeJS - 封装一个GLB模型展示组件(TypeScript)

一、引言 最近基于Three.JS,使用class封装了一个GLB模型展示,支持TypeScript、支持不同框架使用,具有多种功能。 (下图展示一些基础的功能,可以自行扩展,比如光源等) 二、主要代码 本模块依赖…

vue3学习实战

vue3新增变化 diff算法变化 vue3的diff算法没有vue2的头尾、尾头之间的diff,对diff算法进行了优化,最长递归子序列。 ref VS reactive ref 支持所有的类型,reactive 支持引用类型,array object Map Setref取值、赋值&#xff…

2023-油猴(Tampermonkey)脚本推荐

2023-油猴(Tampermonkey)脚本推荐 知乎增强 链接 https://github.com/XIU2/UserScript https://greasyfork.org/zh-CN/scripts/419081 介绍 移除登录弹窗、屏蔽首页视频、默认收起回答、快捷收起回答/评论(左键两侧)、快捷回…

[CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤

目录 subprocess.Popen FILE warnings.catch_warnings site._Printer 这题很明显就是 SSTI了 源代码 我们试试看 {{7*7}} 然后我们就开始吧 原本我的想法是直接{{url_for.__globals__}} 但是回显是直接500 猜测过滤 我们正常来吧 {{"".__class__}} 查看当前…

Mysql 分布式序列算法

接上文 Mysql分库分表 1.分布式序列简介 在分布式系统下,怎么保证ID的生成满足以上需求? ShardingJDBC支持以上两种算法自动生成ID。这里,使用ShardingJDBC让主键ID以雪花算法进行生成,首先配置数据库,因为默认的注…

Linux shell编程学习笔记4:修改命令行提示符格式(内容和颜色)

一、命令行提示符格式内容因shell类型而异 Linux终端命令行提示符内容格式则因shell的类型而异,例如CoreLinux默认的shell是sh,其命令行提示符为黑底白字,内容为: tcbox:/$ 其中,tc为当前用户名,box为主机…

Spring Boot 技术架构图(InsCode AI 创作助手辅助)

Spring Boot 技术架构是一种用于构建现代应用程序的框架,它可以与各种前端、代理、网关、业务服务、中间件、存储、持续集成和容器服务集成在一起,以创建功能强大的应用程序。 源文件下载链接!!!!&#xff…

BASH shell脚本篇3——字符串处理

这篇文章介绍下BASH shell中的字符串处理的相关命令。之前有介绍过shell的其它命令,请参考: BASH shell脚本篇1——基本命令 BASH shell脚本篇2——条件命令 Bash字符串也是一种数据类型,它用于表示文本而不是数字,它是一组可能…

nginx-proxy反向代理流程

1.浏览器发送请求数据到nginx。 2.nginx先处理请求头,后处理请求体。 client_header_buffer_size #ginx可设置客户端上传header缓冲区大小 client_body_buffer_size #nginx可设置客户端上传数据缓冲区大小 client_body_t…

Tomcat Servlet

Tomcat & Servlet 一、What is “Tomcat”?二、 What is “Servlet”?1、HttpServlet2、HttpServletRequest3、HttpServletResponse 一、What is “Tomcat”? Tomcat 本质上是一个基于 TCP 协议的 HTTP 服务器。我们知道HTTP是一种应用层协议,是 HTTP 客户端…

(四)动态阈值分割

文章目录 一、基本概念二、实例解析 一、基本概念 基于局部阈值分割的dyn_threshold()算子,适用于一些无法用单一灰度进行分割的情况,如背景比较复杂,有的部分比前景目标亮,或者有的部分比前景目标暗;又比如前景目标包…

计算机网络笔记 第一章 概述

课程链接 https://www.bilibili.com/video/BV1c4411d7jb/?spm_id_from333.337.search-card.all.click 1.2 因特网概述 网络、互联网与因特网的区别与关系 若干节点和链路互相形成网络若干网络通过路由器互联形成互联网因特网是当今世界上最大的互联网 我们有时并没有严格区…

【mysql】—— 复合查询

前言: 在前面我已经讲解的mysql表的查询都是对一张表进行查询,在实际开发中这远远不够。因此,本期我将带大家学习的是关于 “ 复合查询” 的相关知识!!! 目录 (一)基本查询回顾 &a…

【Java 进阶篇】JDBC ResultSet 遍历结果集详解

在Java数据库编程中,经常需要执行SQL查询并处理查询结果。ResultSet(结果集)是Java JDBC中用于表示查询结果的关键类之一。通过遍历ResultSet,我们可以访问和操作从数据库中检索的数据。本文将详细介绍如何使用JDBC来遍历ResultSe…

SpringCloud Alibaba - Sentinel 限流规则(案例 + JMeter 测试分析)

目录 一、Sentinel 限流规则 1.1、簇点链路 1.2、流控模式 1.2.1、直接流控模式 1.2.2、关联流控模式 a)在 OrderController 中新建两个端点. b)在 Sentinel 控制台中对订单查询端点进行流控 c)使用 JMeter 进行测试 d)分…

10个与AI相关的技术领域

**10个与AI相关的技术领域** 除了与各个科学领域相关的具体挑战之外,AI在科学领域还存在一些共同的技术挑战。特别是,我们确定了以下四个共同的技术挑战:超出分布的泛化、可解释性、由自监督学习提供支持的基础模型和不确定性量化。尽管这些…

手把手教你做个智能加湿器(一)

一、前言 目前常见的加湿器类电子产品一般是由PCBA和外壳组成,我们将从PCB设计,然后编写软件,接着设计外壳,设计出一个完整的产品出来。 需要使用到软件: Altium Designer 17 SolidWorks 2019 Keil 4 二…

实用调试技巧

引言:一个完美的代码离不开程序员的调试,所谓三分编写七分调试,今天我们给大家介绍几种实用的调试技巧。 1️⃣Bug的由来: 原意是指,小虫子,昆虫等,而人们也通常将电脑程序中的一些隐藏的缺陷或…

JavaSE学习之--抽象类,接口,内部类

💕"没有眼泪我们就会迷路,彻底变成石头,我们的心会变成冰凌,吻会变成冰块。"💕 作者:Mylvzi 文章主要内容:JavaSE学习之--抽象类,接口,内部类 目录 一.抽象…