自学内容网 自学内容网

“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机制和无监督预训练策略,在目标检测领域提供了一个高效且准确的解决方案,为未来的研究和应用奠定了坚实的基础。


原文地址:https://blog.csdn.net/jxjdhdnd/article/details/144733994

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!