改进YOLO | 可能这才是用Transformer正确打开YOLO的方式吧?
目前最先进的One-Stage目标检测器的限制是只分别处理每个图像区域,而不考虑目标之间存在的可能关系。这就导致了模型只依赖于高质量的卷积特征来检测目标。然而,有时由于一些具有挑战性的条件,这可能是不可能的。
本文分析了推理特征在One-Stage目标检测中的应用。作者尝试了不同的架构,利用自注意力来解释图像区域之间的关系。YOLOv3-Reasoner2模型在空间上和语义上增强了reasoning层中的特征,并将其与原始的卷积特征进行融合以性能的提升。YOLOv3-Reasoner2模型在COCO上比YOLOv3 Baseline实现了约2.5%的提升。
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预测类概率和边界框。
2.1 Reasoning Layer
采用类似transformer编码器的模型作为Reasoning层。Reasoning层的体系结构如图2所示。
1、Flatten
Multi-Head Attention层期望有一个序列作为输入。在Flatten中Tensor被reshape为一个序列,并以这种形式输入到Multi-Head Attention层。
2、Positional Encoding
就其本质而言,Multi-Head Attention层是不知道顺序的。然而区域位置的信息是有价值的。为了对图像区域的顺序进行建模,采用固定正弦位置编码:
式中,i为网格区域在序列中的位置,j为特征深度索引与特征深度相同。由正弦函数和余弦函数生成的值被成对cat,并添加到网格区域的卷积特征嵌入中。
3、Multi-Head Attention
Multi-Head Attention是在网格单元之间进行推理,即图像区域的主要层。输入序列不同区域之间的推理采用自注意力法进行建模,自注意法力基于query、key和value三个主要概念。在高级抽象中,query序列中的单个网格单元格会搜索潜在的关系,并试图通过key将该单元格与序列中的其他单元格关联起来,即图像区域。query对和key之间的比较给这个value的注意力权重。注意力权重和value之间的相互作用决定了在表示当前单元格时放置序列的其他部分的焦点是多少。
在自注意力过程中,query矩阵、key矩阵和value矩阵是通过将输入序列X乘以3个不同的权重矩阵来计算的:、和:
为了比较query和key矩阵,使用scaled dot product attention:
每个网格单元,即图像区域,通过取注意力加权值矩阵列的求和来进行编码。注意力权重决定了在value矩阵中观察的位置。换句话说,在编码当前网格时,它们会告诉图像的哪些部分是有价值的、信息丰富的和相关的。
采用多头方式进一步完善了自注意力机制。在Multi-Head Attention中,对head进行并行计算自注意力。多头比单头的主要优势是它使模型能够在不同的关系子空间上工作。每个head都有一个不同的query、key和value矩阵,因为这些集合都是通过使用单独的和随机初始化的权重矩阵获得的。head i中的注意力计算为:
然后,使用权重矩阵对注意力进行连接和变换:
4、Skip Connections
在reasoning层中有2个Skip Connections。如ResNet论文所述,反向传播得到了改进,并通过残差跳跃连接将原始信息传播到以下各层。
5、Normalization
在reasoning层的2个地方应用了归一化方法。除了残差的跳跃连接外,归一化也是改善反向传播的另一个关键因素。为了处理 internal covariate shift,作者采用了层归一化。
6、MLP
Multi-Head Attention的输出经过归一化后被输入到多层感知器(MLP)。MLP层由2个线性层和中间的ReLU非线性层组成:
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所示。
2、YOLOv3-Reasoner2
在这种配置中,reasoning层的输出通过一个Shortcut的方式与FPN输出连接起来。然后,将连接层的输出输入到1×1的卷积层,以融合由推理和原始的单卷积特征组成的信息。有可能卷积特征的某些部分被减弱。本文的连接策略确保了原始卷积特征的可重用性。YOLOv3-Reasoner2的体系结构如图5所示。
3实验
4参考
[1].ANALYSIS OF VISUAL REASONING ON ONE-STAGE OBJECT DETECTION
长按扫描下方二维码添加小助手。
可以一起讨论遇到的问题
声明:转载请说明出处
扫描下方二维码关注【集智书童】公众号,获取更多实践项目源码和论文解读,非常期待你我的相遇,让我们以梦为马,砥砺前行!