改进YOLO | 可能这才是用Transformer正确打开YOLO的方式吧?

简介: 改进YOLO | 可能这才是用Transformer正确打开YOLO的方式吧?

1简介


目标检测的目的是在给定的图像中分类和定位感兴趣的目标。由于与其他计算机视觉应用的紧密联系,它已经引起了社会各界的极大关注。在深度学习领域取得重大突破之前,已有许多传统的方法被提出来解决目标检测问题。这些方法建立在手工制作的特征表示上。不可避免地依赖于手工制作的特征限制了传统方法的性能。

AlexNet的巨大影响使目标检测方法呈现出新的面貌,基于深度学习的方法已完全主导了目标检测的研究。基于深度学习的检测器可分为Two-Stage目标检测器和One-Stage目标检测器。由于中间层用于提出可能的目标区域,Two-Stage目标检测器的推理速度较低。区域建议层在第一阶段提取目标区域。在第二阶段,这些提出的区域用于分类和边界框回归。另一方面,One-Stage检测器可以以较高的推理速度在一次推理中预测所有的边界框和类概率。这使得One-Stage目标检测器更适合于实时应用。

最近的One-Stage目标检测器在诸如MS COCO和PASCAL VOC等数据集上取得了良好的性能。然而,他们缺乏考虑图像区域之间可能的关系的能力。目前的One-Stage目标检测器对每个图像区域进行单独处理。当考虑图像大小时,由于较小的感受野导致他们不知道不同的图像区域。它们完全依赖于高质量的局部卷积特征来检测目标。然而,这并不是人类视觉系统的工作方式。人类有一种reasoning能力,能够在获得的知识的帮助下完成视觉任务。许多方法已经被提出来模仿人类的推理能力在目标检测。另一方面,这些方法大多比较复杂,采用Two-Stage检测体系结构。因此,它们不适用于实时应用程序。

在本文中提出了一种将视觉reasoning纳入One-Stage目标检测的新方法。本文将基于Multi-Head Attention的reasoning层整合到Neck的顶部,而不是在Backbone上。通过这种方式,可以通过使用更有意义、更细粒度和更增强的特征映射来提取关于不同图像区域之间关系的reasoning信息。

本文的贡献可以总结如下:

  • 提出通过视觉reasoning改进One-Stage目标检测。提出了一种新的提取图像区域间语义关系来预测边界框和类概率的体系结构。
  • 分析了仅使用reasoning特征对目标检测性能的影响。证明了仅卷积和reasoning特征仍然能够实时运行,同时比Baseline模型取得了更好的性能。
  • 分析了利用reasoning对每个对象类别的平均精度提高的影响。

2本文方法


所提方法的总体结构如图1所示。首先,利用Darknet-53进行特征提取,与YOLOv3一样在3个不同的尺度上产生边界框预测。通过FPN进行必要的上采样操作后。然后,在reasoning层提取图像区域之间的语义关系。最后阶段由YOLO Head预测类概率和边界框。

image.png

图1 YOLO-Reasoning

2.1 Reasoning Layer

采用类似transformer编码器的模型作为Reasoning层。Reasoning层的体系结构如图2所示。

image.png

图2 Reasoning层

1、Flatten

Multi-Head Attention层期望有一个序列作为输入。在Flatten中Tensor被reshape为一个序列,并以这种形式输入到Multi-Head Attention层。

2、Positional Encoding

就其本质而言,Multi-Head Attention层是不知道顺序的。然而区域位置的信息是有价值的。为了对图像区域的顺序进行建模,采用固定正弦位置编码:

image.png

式中,i为网格区域在序列中的位置,j为特征深度索引与特征深度相同。由正弦函数和余弦函数生成的值被成对cat,并添加到网格区域的卷积特征嵌入中。

3、Multi-Head Attention

Multi-Head Attention是在网格单元之间进行推理,即图像区域的主要层。输入序列不同区域之间的推理采用自注意力法进行建模,自注意法力基于query、key和value三个主要概念。在高级抽象中,query序列中的单个网格单元格会搜索潜在的关系,并试图通过key将该单元格与序列中的其他单元格关联起来,即图像区域。query对和key之间的比较给这个value的注意力权重。注意力权重和value之间的相互作用决定了在表示当前单元格时放置序列的其他部分的焦点是多少。

在自注意力过程中,query矩阵、key矩阵和value矩阵是通过将输入序列X乘以3个不同的权重矩阵来计算的:、和:

image.png

为了比较query和key矩阵,使用scaled dot product attention:

image.png

每个网格单元,即图像区域,通过取注意力加权值矩阵列的求和来进行编码。注意力权重决定了在value矩阵中观察的位置。换句话说,在编码当前网格时,它们会告诉图像的哪些部分是有价值的、信息丰富的和相关的。

采用多头方式进一步完善了自注意力机制。在Multi-Head Attention中,对head进行并行计算自注意力。多头比单头的主要优势是它使模型能够在不同的关系子空间上工作。每个head都有一个不同的query、key和value矩阵,因为这些集合都是通过使用单独的和随机初始化的权重矩阵获得的。head i中的注意力计算为:

image.png

然后,使用权重矩阵对注意力进行连接和变换:

image.png

4、Skip Connections

在reasoning层中有2个Skip Connections。如ResNet论文所述,反向传播得到了改进,并通过残差跳跃连接将原始信息传播到以下各层。

5、Normalization

在reasoning层的2个地方应用了归一化方法。除了残差的跳跃连接外,归一化也是改善反向传播的另一个关键因素。为了处理 internal covariate shift,作者采用了层归一化。

6、MLP

Multi-Head Attention的输出经过归一化后被输入到多层感知器(MLP)。MLP层由2个线性层和中间的ReLU非线性层组成:

image.png

7、Rearrange

Rearrange是reasoning层的最后一个子层,在其中序列被转换回检测Head所期望的shape。

2.2 Reasoner配置

1、YOLOv3-Reasoner1

在这个配置中,FPN输出被直接输入到reasoning层。每个Head分别选择16、8和4的下采样scale,使每个Head的嵌入尺寸为64。reasoning层输出输入1×1卷积层。YOLOv3-Reasoner1的整个体系结构如图4所示。

image.png

图4 YOLOv3-Reasoner1

2、YOLOv3-Reasoner2

在这种配置中,reasoning层的输出通过一个Shortcut的方式与FPN输出连接起来。然后,将连接层的输出输入到1×1的卷积层,以融合由推理和原始的单卷积特征组成的信息。有可能卷积特征的某些部分被减弱。本文的连接策略确保了原始卷积特征的可重用性。YOLOv3-Reasoner2的体系结构如图5所示。

图5 YOLOv3-Reasoner2


3实验



4参考


[1].ANALYSIS OF VISUAL REASONING ON ONE-STAGE OBJECT DETECTION

相关文章
|
3月前
|
机器学习/深度学习 PyTorch 算法框架/工具
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
这篇文章介绍了如何使用PyTorch框架,结合CIFAR-10数据集,通过定义神经网络、损失函数和优化器,进行模型的训练和测试。
186 2
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
|
6月前
|
机器学习/深度学习 编解码 人工智能
|
8月前
|
机器学习/深度学习 编解码 计算机视觉
YOLOv8改进 | 主干篇 | SwinTransformer替换Backbone(附代码 + 详细修改步骤 +原理介绍)
YOLOv8改进 | 主干篇 | SwinTransformer替换Backbone(附代码 + 详细修改步骤 +原理介绍)
981 0
|
2月前
|
机器学习/深度学习 人工智能 计算机视觉
YOLOv11 正式发布!你需要知道什么? 另附:YOLOv8 与YOLOv11 各模型性能比较
YOLOv11是Ultralytics团队推出的最新版本,相比YOLOv10带来了多项改进。主要特点包括:模型架构优化、GPU训练加速、速度提升、参数减少以及更强的适应性和更多任务支持。YOLOv11支持目标检测、图像分割、姿态估计、旋转边界框和图像分类等多种任务,并提供不同尺寸的模型版本,以满足不同应用场景的需求。
YOLOv11 正式发布!你需要知道什么? 另附:YOLOv8 与YOLOv11 各模型性能比较
|
3月前
|
计算机视觉
目标检测笔记(二):测试YOLOv5各模块的推理速度
这篇文章是关于如何测试YOLOv5中不同模块(如SPP和SPPF)的推理速度,并通过代码示例展示了如何进行性能分析。
146 3
|
8月前
|
机器学习/深度学习 计算机视觉 网络架构
YOLOv8改进 | 2023主干篇 | 替换LSKNet遥感目标检测主干 (附代码+修改教程+结构讲解)
YOLOv8改进 | 2023主干篇 | 替换LSKNet遥感目标检测主干 (附代码+修改教程+结构讲解)
205 1
YOLOv8改进 | 2023主干篇 | 替换LSKNet遥感目标检测主干 (附代码+修改教程+结构讲解)
|
8月前
|
机器学习/深度学习
YOLOv8改进 | 主干篇 | 轻量级网络ShuffleNetV1(附代码+修改教程)
YOLOv8改进 | 主干篇 | 轻量级网络ShuffleNetV1(附代码+修改教程)
204 1
|
8月前
|
计算机视觉 网络架构
YOLOv5改进 | 2023主干篇 | 替换LSKNet遥感目标检测主干 (附代码+修改教程+结构讲解)
YOLOv5改进 | 2023主干篇 | 替换LSKNet遥感目标检测主干 (附代码+修改教程+结构讲解)
184 0
|
8月前
|
机器学习/深度学习
YOLOv8改进 | 主干篇 | 轻量级网络ShuffleNetV2(附代码+修改教程)
YOLOv8改进 | 主干篇 | 轻量级网络ShuffleNetV2(附代码+修改教程)
472 0
|
8月前
|
编解码 计算机视觉
YOLOv5改进 | 主干篇 | SwinTransformer替换Backbone(附代码 + 详细修改步骤 +原理介绍)
YOLOv5改进 | 主干篇 | SwinTransformer替换Backbone(附代码 + 详细修改步骤 +原理介绍)
739 0

热门文章

最新文章