“Gold-YOLO:基于聚合与分发机制的高效目标检测新范式”

🏡作者主页:点击! 

🤖编程探索专栏:点击!

⏰️创作时间:2024年12月26日8点00分


神秘男子影,
  秘而不宣藏。
泣意深不见,
男子自持重,
   子夜独自沉。


论文源地址(有视频):

链接icon-default.png?t=O83Ahttps://www.aspiringcode.com/content?id=17326303651908&uid=ab739a84909c4ee6baff8ceb5cc0e2e4

引言

在过去几年里,YOLO系列已经成为了实时目标检测领域最先进以及最常用的方法。许多研究通过修改模型架构、数据增强、设计新的损失函数将baseline提升到了一个更高的水平。但现有的模型仍然存在信息融合的问题,尽管FPN和PANet在一定程度上缓解了该问题。

传统的neck如FPN以及相关变体的结构如上图所示,但是这种信息融合的方法存在一个明显的缺陷:当需要跨层融合信息时(如level-1和level-3),FPN式的结构无法无损的传输信息,对于其他层的信息,只能间接地“递归”获得,level-1 试图利用level-2的信息时,它可以直接访问level-2,也可以融合level-2,如果level-1想要利用level-3的信息,必须先等level-2和level-3信息融合后,然后level-1再与level-2信息融合,才可以间接获取level-3信息。

这种传输模式,导致在计算过程中大量的信息丢失,间隔层之间的信息交互,只能通过中间层选择信息,造成某些信息的丢失;即某一层的信息只能充分地帮助相邻层,而削弱了想其他间隔层提供的帮助。因此信息融合的整体效果受到了限制。

针对FPN式结构存在的问题,本文介绍的方法,在TopFormer理论的基础上,提出了一种新的聚合-分发(GD)机制,它通过融合多层特征并将全局信息注入到更高层,在YOLO中实现高效的信息交换。这显著增加了neck的信息融合能力,同时没有显著增加延迟。

基于此提出了一个新的模型Gold-YOLO,它提高了多尺度特征融合的能力,并在所有尺度上实现了延迟和精度之间的理想平衡。此外,本方法首次在YOLO系列中实现了MAE-style的预训练,使得YOLO系列可以从无监督预训练中受益。

Gold-YOLO

网络结构

由下图可见,Gold-YOLO的网络结构与YOLOv3-v8是非常相似的,最大的不同之处在于,Neck阶段,用Low-GD代替了PANet的上采样融合阶段,用High-GD代替了PANet的下采样融合阶段。

本文的Gold-YOLO提出了聚合-分发机制(gather-and-distribute),其通过Conv + Self-Attention实现,进一步提高了多尺度特征的融合能力。

通过统一的模块对各个尺度的信息进行采集和融合,然后将融合够的特征分发到不同的层,这样既避免了传统FPN结构固有的信息丢失,也在不显著增加延迟的情况下增强了Neck部分的信息融合能力。

采集分发机制(GD)

GD的实现收集-分发的流程包括三个模块:特征对齐模块(FAM)、特征信息融合模块(IFM)、特征信息分发模块(Inject)。

首先,FAM收集backbone不同尺度的特征图,并通过上采样或下采样的方式进行对齐;然后,IFM融合对齐后的特征生成全局特征,然后通过split切片为两部分,后面针对性地对其他尺度进行分发;最后,Inject分发模块(采用类似于self-attention的方式),使用简单的注意力操作(增强分支的检测能力),将全局特征split后分发到各个层级。

为了增加模型检测不同大小对象的能力,提出了两个分支,低阶段GD和高阶段GD。

低阶段分支

如下图所示,B2、B3、B4、B5通过Low-GD进行上采样融合。

信息分发模块

信息分发类似采用自注意力的形式,如下图所示:

高阶段分支

经过Low-GD融合得到的特征P3、P4、P5 再经过High-GD进行特征融合,如下图所示.

信息分发模块

High-GD和Low-GD的分发模块是完全相同的。

增强的跨层信息流

为了进一步提升性能,作者借鉴YOLOv6里的PAFPN提出了一个Inject-LAF模块。这个模块是Inject模块的改进,其中在Inject模块的输入位置新加了一个轻量的相邻层融合模块(lightweight adjacent layer fusion, LAF)。具体结构如下。

为了实现速度和精度的平衡,设计了两种LAF:low-level LAF和high-level LAF,分别用于低层注入(合并相邻两层的特征)和高层注入(合并相邻一层的特征),在Low-stage中,用于合并相邻的两层的特征,如由原来的B3B3变为B2B2(AvgpoolAvgpool下采样)、B3B3、B4B4(双线性上采样)的合并;在High-stage中,用于合并相邻一层的特征,如由原来的P4P4变为P3P3、P4P4的合并。

掩码图像建模预训练

掩码图像建模预训练是一种自监督学习方法,它在计算机视觉领域中被用来训练模型以学习图像的有效表示。这种方法受到自然语言处理中掩码语言模型(如BERT)的启发,其中模型被训练来预测输入数据中被随机掩盖(masked)的部分。在图像的上下文中,这意味着模型需要预测图像中被遮盖或掩盖的区域。

作者采用了MIM Pre-training方法来预训练模型的backbone。以下是这种方法的详细步骤和原理:

  1. 掩码图像生成:首先,从原始图像中随机选择一定比例的像素,并将这些像素的值设置为零或某个特定的掩码值,从而生成掩码图像。
  2. 稀疏卷积编码:由于掩码操作导致图像的大部分区域缺失,模型需要能够处理这种不规则和随机的掩码输入。在Gold-YOLO中,作者使用稀疏卷积来编码未被掩码的像素,将它们视为3D点云的稀疏体素。
  3. 层次化解码器:为了从多尺度编码的特征中重建图像,作者采用了类似UNet的层次化解码器。这个解码器能够处理不同尺度的稀疏特征图,并将所有空间位置填充为嵌入的掩码。

在预训练过程中,作者使用了LAMB优化器和余弦退火学习率策略。通过MIM Pre-training,模型能够学习到更加丰富和鲁棒的特征表示,这有助于提高模型在下游任务上的性能。在Gold-YOLO中,预训练显著提高了模型的收敛速度和准确性。

实验

使用Microsoft COCO数据集进行模型训练和验证,在ImageNet-1K数据集上对模型的backbone进行MIM预训练。

比较实验

作者选择了多个YOLO系列的模型进行比较,包括YOLOv5, YOLOX, PPYOLOE, YOLOv7, YOLOv8, 和YOLOv6-3.0。实验结果如下。

Gold-YOLO-N与YOLOv8-N, YOLOv6-3.0-N, 和YOLOv7-Tiny在AP上进行了比较,Gold-YOLO在相似或更低的延迟下具有更高的AP。Gold-YOLO-S与YOLOX-S和PPYOLOE-S相比,在保持更快的FPS的同时,AP有显著提升。Gold-YOLO-M在与YOLOv6-3.0-M, YOLOX-M, 和PPYOLOE-M的比较中,具有更高的AP和相似的速度。Gold-YOLO-L与YOLOv8-L和YOLOv6-3.0-L相比,在保持相似的FPS的同时,AP有小幅提升。

消融实验

GD机制

通过比较包含和不包含Low-GD和High-GD分支的模型,可以观察到这两个分支对模型性能有显著提升,尤其是在检测小尺寸和大尺寸物体时。

消融实验显示,LAF模块在增强特征融合和提高模型对不同尺度物体的检测能力方面发挥了重要作用。

泛化性能

在Mask R-CNN中替换necks后,GD机制显著提高了实例分割的准确率,尤其是在分割小尺寸物体时。

在PointRend中应用GD机制后,语义分割的mIoU(平均交并比)和mAcc(平均准确率)得到了提升,这表明GD机制在捕捉全局上下文信息方面的优势。

复现

训练

  • 步骤1:训练基础模型

运行如下的命令:

python -m torch.distributed.launch --nproc_per_node 8 tools/train.py \
									--batch 128 \
									--conf configs/gold_yolo-n.py \
									--data data/coco.yaml \
									--epoch 300 \
									--fuse_ab \
									--use_syncbn \
									--device 0,1,2,3,4,5,6,7 \
									--name gold_yolo-n

  • 步骤2:自蒸馏训练

运行如下的命令:

python -m torch.distributed.launch --nproc_per_node 8 tools/train.py \
									--batch 128 \
									--conf configs/gold_yolo-n.py \
									--data data/coco.yaml \
									--epoch 300 \
									--device 0,1,2,3,4,5,6,7 \
									--use_syncbn \
									--distill \
									--teacher_model_path runs/train/gold_yolo_n/weights/best_ckpt.pt \
									--name gold_yolo-n

测试

运行如下发命令:

python tools/eval.py --data data/coco.yaml --batch 32 --weights weights/Gold_s_pre_dist.pt --task val --reproduce_640_eval

推理结果

模型部分推理结果展示如下:

可以看到,模型具有相当高的准确性。

总结

Gold-YOLO是一种新型高效的目标检测模型,它通过引入聚合和分发机制显著提升了多尺度特征融合的能力。Gold-YOLO通过其创新的GD机制,在目标检测领域实现了最佳性能,尤其是在处理多尺度物体时。该模型的高效性和准确性使其成为边缘设备部署的理想选择。

GD机制不仅在目标检测任务中表现出色,还在实例分割和语义分割等其他视觉任务中显示出良好的适应性和有效性。

总体而言,Gold-YOLO通过其先进的GD机制和无监督预训练策略,在目标检测领域提供了一个高效且准确的解决方案,为未来的研究和应用奠定了坚实的基础。

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

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

相关文章

python爬虫--小白篇【selenium自动爬取文件】

一、问题描述 在学习或工作中需要爬取文件资源时,由于文件数量太多,手动单个下载文件效率低,操作麻烦,采用selenium框架自动爬取文件数据是不二选择。如需要爬取下面网站中包含的全部pdf文件,并将其转为Markdown格式。…

去除el-tabs 下面的灰色横线,并修改每一项的左右间距,和字体颜色

HTML <el-tabs v-model"activeName" class"demo-tabs" tab-click"handleClick"><el-tab-pane label"全部" :name"null"></el-tab-pane><el-tab-pane label"问答陪练" name"general-t…

笔上云世界微服务版

目录 一、项目背景 二、项目功能 一功能介绍 三、环境准备 • 需要开发的端口 • Mysql 导入数据库 ​编辑 • Redis ​编辑 • RabbitMQ ​编辑 在创建blog虚拟主机(方法如下) • Nacos • Nginx 四、前端部署 五、后端部署 六、测试计划操作 一功能测试 二…

厦门大学联合网易提出StoryWeaver,可根据统一模型内给定的角色实现高质量的故事可视化

厦门大学联合网易提出StoryWeaver&#xff0c;可以根据统一模型内给定的角色实现高质量的故事可视化。可根据故事文本生成与之匹配的图像&#xff0c;并且确保每个角色在不同的场景中保持一致。本文的方法主要包括以下几个步骤&#xff1a; 角色图构建&#xff1a;设计一个角色…

vscode 多项目冲突:进行 vscode 工作区配置

问题&#xff1a;多个项目&#xff0c;每次打开会因为配置问题/包版本冲突&#xff0c;花费过长时间。 解决&#xff1a;可以通过启用工作区&#xff0c;使得各个项目的开发环境隔离。 vscode官网 对此有两种方法&#xff1a;方法一&#xff1a;启用工作区&#xff08;workspa…

Unity3D仿星露谷物语开发14之Custom Property Attribute

1、目标 创建自定义属性特性&#xff0c;类似于[SerializeField]的属性标签。 当用该自定义属性特性标记变量时&#xff0c;可以在Inspector面板中看到相应的效果。 2、Property类 &#xff08;1&#xff09;PropertyAttribute类 propertyAttribute是Unity中用于派生自定义…

赛博周刊·2024年度工具精选(图片资源类)

1、EmojiSpark emoji表情包查找工具。 2、fluentui-emoji 微软开源的Fluent Emoji表情包。 3、开源Emoji库 一个开源的emoji库&#xff0c;目前拥有4000个emoji表情。 4、中国表情包大合集博物馆 一个专门收集中国表情包的项目&#xff0c;已收录5712张表情包&#xff0c;并…

RK3588,基于 Npu 实现 yolov11 Segment 推理

Ultralytics YOLO11是一款尖端的、最先进的模型,它在之前YOLO版本成功的基础上进行了构建,并引入了新功能和改进,以进一步提升性能和灵活性。YOLO11设计快速、准确且易于使用,使其成为各种物体检测和跟踪、实例分割、图像分类以及姿态估计任务的绝佳选择。 https://github.…

MySQL启动报错:发生系统错误 5。拒绝访问。

参考:https://blog.csdn.net/qq_40762011/article/details/105768798/ 1、错误样式 错误样式&#xff0c;如下图所示&#xff1a; 2、导致原因 未使用管理员角色进行此操作&#xff1b; 3、解决办法 3.1、临时办法 不需要更改任何东西&#xff0c;只需要在打开CMD命令提示符时…

数势科技:解锁数据分析 Agent 的智能密码(14/30)

一、数势科技引领数据分析变革 在当今数字化浪潮中&#xff0c;数据已然成为企业的核心资产&#xff0c;而数据分析则是挖掘这一资产价值的关键钥匙。数势科技&#xff0c;作为数据智能领域的领军者&#xff0c;以其前沿的技术与创新的产品&#xff0c;为企业开启了高效数据分析…

网络编程原理:回显服务器与客户端通信交互功能

文章目录 路由器及网络概念网络通信基础TCP/IP 五层协议封装和分用封装分用 网络编程&#xff08;网络协议&#xff09;UDP类 API使用实现回显通信程序回显服务器(UDP代码)回显客户端(UDP代码) TCP API使用回显服务器(TCP代码)回显客户端(TCP代码) 路由器及网络概念 网络发展是…

云手机+Facebook:让科技与娱乐完美结合

移动互联网时代&#xff0c;Facebook作为全球最大的社交媒体平台之一&#xff0c;早已成为企业、品牌和组织竞相角逐的营销阵地。而云手机的出现&#xff0c;则为Facebook营销注入了新的活力&#xff0c;其独特的优势让营销活动更加高效、精准且灵活。本文将深入探讨云手机在Fa…

git使用指南-实践-搭建git私服

一.创建git私服的核心基础 所谓的git私服&#xff0c;其实就是在一个服务器上创建一个个的git仓库&#xff0c;并且这些仓库允许其在一个网络上被其他用户访问。 创建一个最素的git私服&#xff1a;随便找一台linux服务器&#xff0c;这里假设其ip为192.168.0.6&#xff0c;使…

KAFKA入门:原理架构解析

文章目录 一、认识kafka二、架构介绍2.1 工作流程2.2 Kafka可靠性保证2.3 Kafka存储 一、认识kafka Kafka到底是个啥&#xff1f;用来干嘛的&#xff1f; 官方定义如下&#xff1a; Kafka is used for building real-time data pipelines and streaming apps. It is horizont…

深度学习——损失函数汇总

1. 连续值损失函数 总结:主要使用胡贝儿损失函数,应用于连续数值的预测之间的误差损失,参考地址 import torch import torch.nn as nna = torch.tensor([[1, 2], [3, 4]], dtype=torch.float) b = torch.tensor([[3, 5], [8, 6]], dtype=torch.float)loss_fn1 = torch.nn.M…

2025.01.01(IO模型分类,超时检测,抓包分析,机械臂客户端)

作业&#xff1a;基于机械臂服务器写出客户端代码并执行 #include <myhead.h> #define IP "192.168.124.62" #define PORT 8888int main(int argc, const char *argv[]) {//1.创建套接字int cfd socket(AF_INET,SOCK_STREAM,0);if(cfd-1){perror("socke…

Pandas-数据透视表

文章目录 一. Pandas透视表概述1. pivot_table函数介绍 二. 栗子-零售会员数据分析1. 案例业务介绍2. 会员存量、增量分析① group by② 透视表③ 可视化 一. Pandas透视表概述 数据透视表&#xff08;Pivot Table&#xff09;是一种交互式的表&#xff0c;可以进行某些计算&am…

STM32-笔记26-WWDG窗口看门狗

一、简介 窗口看门狗用于监测单片机程序运行时效是否精准&#xff0c;主要检测软件异常&#xff0c;一般用于需要精准检测程序运行时间的场合。 窗口看门狗的本质是一个能产生系统复位信号和提前唤醒中断的6位计数器&#xff08;有的地方说7位。其实都无所谓&#xff0…

【超好用远程工具】跨平台SSH工具WindTerm免费开源

WindTerm WindTerm概述免费开源、免费开源、免费开源下载、安装屏幕截图主窗口 &#xff08;zsh&#xff09;&#xff1a;拆分视图&#xff1a;DigeWhite 主题&#xff1a; 基本设置连接到服务器SSH 连接Telnet 连接串口连接SFTP 连接使用多标签页 高级功能脚本和自动化会话管理…

开源存储详解-分布式存储与ceph

ceph体系结构 rados&#xff1a;reliable, autonomous, distributed object storage, rados rados采用c开发 对象存储 ceph严格意义讲只提供对象存储能力&#xff0c;ceph的块存储能力实际是基于对象存储库librados的rbd 对象存储特点 对象存储采用put/get/delete&#xf…