本文首发于 【集智书童】,白名单账号转载请自觉植入本公众号名片并注明来源,非白名单账号请先申请权限,违者必究。
像Sparse RCNN这样的端到端区域目标检测器通常具有多个级联边界框解码阶段,根据它们之前的结果对当前的预测进行细化。每个阶段内的模型参数是独立的,导致巨大的计算成本。 在本文中,作者发现解码阶段的一般设置实际上是多余的。通过简单地共享参数并创建一个递归解码器,检测器已经获得了显著的改进。递归解码器可以通过提供提议框的位置编码(PE)进一步增强,这使得它能够了解输入边界框的确切位置和大小,因此在递归过程中适应来自不同阶段的提议。 此外,作者还设计了基于中心度的位置编码,以区分边界框内不同位置的RoI特征元素和动态卷积核。 为了验证所提方法的有效性,作者进行了大量的消融实验,并在3种最近主流的基于区域的检测器上构建了完整的模型。递归检测器能够在甚至更少的模型参数和稍微增加的计算成本下实现明显的性能提升。 代码:https://github.com/bravezzzzzz/RecursiveDet
目标检测是计算机视觉领域长期以来的一个研究热点。传统的基于深度卷积神经网络(CNN)的检测器可以是Anchor-Base的,也可以是Anchor-Free的。前者根据预定义的密集边界框进行分类和回归,而后者只假设2D图像平面上的网格点。另一方面,检测可以在单阶段、两阶段甚至多级级联阶段完成。单阶段方法直接给出预测结果,不需要进一步修改,通常简单高效。两阶段或多阶段方法根据先前的结果进行多次修正,提供更好的结果,但需要更多的模型参数和计算。除了第一阶段,后续阶段通常是基于区域的,集中在边界框内的局部区域,这通常是通过RoI-Align实现的。
尽管这些检测器被广泛使用,但人们常常对其复杂的预处理和后处理设计抱怨,例如,Anchor大小,正负样本标准以及结果的非极大值抑制(NMS)。DEtection TRansformer(DETR)简化了框架。它依赖于多阶段的transformer解码器层,将可学习的查询更新为目标特征,这些特征可以在每个阶段解码为边界框预测。在训练过程中,DETR采用二分图匹配的方式来动态确定正样本和负样本查询样本。由于每个GT边界框只分配给一个查询作为正样本,因此不再需要NMS。然而,DETR的效率非常低,主要是因为Transformer解码器缺乏感知偏差。后续的工作将边界框位置编码(PE)、迭代细化或局部变形等引入解码器中,从而极大地提高了训练效率。
类似于DETR,基于区域的方法也将目标检测视为预测和GT之间的集合预测任务,并且它们都采用多阶段策略。Sparse R-CNN是一项基于RoI Align的代表性工作。它使用一组可学习的提议特征为图像RoI特征生成动态卷积滤波器,这些滤波器对应于相应的提议框。与DETR相比,基于区域的方法获得了精确的结果和高数据效率。然而,模型的大小明显大于DETR系列,这不仅限制了它们的应用,还导致了对小规模数据集的降级。作者发现,区域性方法中的一些特定层占据了大部分参数数目,因此它们有可能得到改进。此外,由于提议特征相当于DETR中的目标查询,因此可以引入边界框位置编码(PE),使得自注意力和动态卷积了解图像特征的全局和局部位置。
基于上述考虑,本文提出了RecursiveDet,一种基于动态卷积的区域检测器的通用级联解码器结构。具体而言,作者在不同阶段共享解码器参数,并使相同模块在不同阶段递归,允许根据不同质量的提议框进行训练。通过简单地在不同阶段共享所有解码器参数,模型的大小明显减小,而性能只会略微下降。
此外,由于用于生成卷积核的动态层和动态卷积后的输出层非常大,作者打算充分利用它们,并在更多层次上应用动态卷积。实际上,作者在第一组动态卷积之后更新提议特征。然后,将更新的特征传递给相同的动态层,为第二组指定卷积核。动态层和外层被重用,以增加一个阶段内的模型深度,而不需要额外的参数成本。
由于解码器阶段共享参数,其输入变得必不可少,以区分每个解码阶段。因此,需要更多关于先前预测的信息作为输入。作者将边界框的位置和形状编码成PE向量,然后用于位置感知自注意力和动态卷积。由于边界框的PE仅从全局图像坐标和形状大小计算得出,作者设计了基于中心性的PE来表示RoI内的不同位置,以进行补偿。通过将边界框PE和中心性PE结合到动态卷积中,作者的RecursiveDet模型能够充分利用端到端区域检测器中的提议特征和边界框。
为了验证提出的RecursiveDet的有效性,作者在MS-COCO数据集上进行了大量的实验和消融研究。作者在三种主流检测器Sparse R-CNN,AdaMixer和DiffusionDet中实现了RecursiveDet,并实现了一致的性能提升。
值得指出的是,Sparse R-CNN和AdaMixer是端到端的,而DiffusionDet不是。
总的来说,本文的贡献在以下几个方面:
早期基于CNN的目标检测器对密集排列的anchor boxes 或者2D平面上的网格点进行了假设,并且针对每个候选样本计算分类和边界框回归损失。基于anchor的方法严重依赖于anchor大小的超参数。此外,它们需要启发式规则,比如IoU阈值,来确定正负anchor。后处理的NMS操作也比较繁琐。基于网格点的方法使得检测器摆脱了anchor boxes。它们直接从网格中定位GT框,但是正负样本的分配仍然是一个关键问题,通常以简单的方式实现。
例如,FCOS 假设GT框内部的点为正样本,而RepPoints 将离GT框最近的网格点标记为正样本。鉴于样本分配的重要性,研究人员提出了不同的方案来避免启发式规则。另一种区分不同检测器的方法是基于检测阶段的数量。单阶段检测器比两阶段或多阶段竞争对手更高效。它们直接从整个图像中给出结果,而两阶段或多阶段方法则将区域感兴趣的特征从RoI Align传递到后续阶段以提高准确性。
DETR 开创了目标检测的新时代,因为它消除了大部分手工设计。它从一组可学习的查询开始,并使用多个解码器注意力块将它们更新为检测头的目标特征。DETR采用动态二分匹配来建立GT和预测之间的一对一关系。然而,缓慢的收敛速度和对大量训练集的要求成为其障碍。
后来的工作集中于将空间先验或额外的查询组合到模型中,以实现更快的训练和更好的结果。Deformable DETR 使用了可变形注意力和迭代优化。SMCA 从查询预测一个空间掩码来调节注意力矩阵。REGO 在DETR系列中使用了RoI Align。Conditional 和Anchor DETR将边界框的中心编码为PE,辅助解码器,而DAB-DETR 进一步将PE扩展到包括宽度和高度的边界框坐标。DN-DETR 引入了去噪查询组以加速训练。DINO 通过对比学习和查询选择进一步改进了它。
类似于DETR系列,端到端区域检测器是以可学习的提议特征为起点,并以级联方式将它们更新为最终预测的目标特征。它们还借鉴了DETR中的动态二分匹配来避免NMS。然而,不同于交叉注意力,它们使用动态卷积来连接图像和提议特征。
此外,这样的检测器在边界框内采样RoI特征,用于动态卷积。第一个代表性的工作是Sparse R-CNN。为了进一步加快收敛速度,AdaMixer 用3D特征金字塔中直接从网格点采样点代替RoI Align,并借鉴了改变第二次动态卷积轴的MLP-Mixer 的思想。DiffusionDet
神经网络中典型的递归模型是RNN,在训练期间进行多步展开。许多具有递归模块的模型已被提出来解决不同的任务。最近的工作使用递归Transformer块来增加模型深度。在目标检测中,已经提出了递归Backbone网络 和FPN,但是没有一个工作涉及递归解码器注意力,特别是针对目标检测任务。
本文专注于端到端区域检测器,其中Sparse R-CNN是第一个典型的模型。它有一个可学习的提议特征集
,其中每个
是一个
维向量,表示图像中的一个目标。这里
,
是提议特征的总数。相应地,它保持一组提议框
,与Q数量相同,其中
是以
为中心,宽度和高度分别表示为
和
的边界框。根据B,通过RoI Align操作从多分辨率特征金字塔中获得图像RoI特征集
,其中每个元素的空间大小为7×7。
Sparse R-CNN具有多个级联阶段,逐步将B逼近GT边界框集。在每个阶段中,首先计算Q集合内的自注意力。然后,提议特征
被给予一个巨大的动态层,为相应的RoI特征
提供一对动态卷积核
和
。这里
和
形成一个瓶颈,可以视为由1×1卷积组成的两个连续层,其参数分别指定为
和
。
和
分别是输入RoI特征和隐藏维度的通道数,其中
。在动态卷积之后,
被更新为
,然后通过输出层映射为目标特征
,以便可以由检测头给出结果。
Sparse R-CNN执行
和
之间的一对一动态交互。在每个阶段中,它不仅预测边界框,还更新Q和B。特别地,目标特征
更新提议特征
,为下一阶段做准备,边界框预测也更新bi作为下一阶段的输入。在训练过程中,Sparse R-CNN动态地计算预测和GT之间的成本矩阵。根据它进行二分匹配,使得GT框仅分配给一个预测。一对一的样本分配策略防止了NMS后处理。成本和训练损失是相同的,可以表示为
,其中
是用于分类的Focus BCE损失,
和
是用于回归的
和GIoU损失。
除了Sparse R-CNN,AdaMixer和DiffusionDet也是基于区域的检测器,前者是端到端的,而后者不是。它们具有类似的级联结构,由动态卷积组成,其核由基于提议特征集
的动态层提供。作者的RecursiveDet与它们的基本计算流程共享,如图2(a)所示。它与它们都兼容,显著减小了模型的大小,并增加了结果的准确性。
与DETR系列相比,端到端的区域检测器通常有一个较大的解码器,这显然会扩大它们的模型大小。第t阶段的解码器
,由参数θt参数化,以当前的提议集
和边界框集
为输入,并将它们更新为
和
以供下一阶段使用。作者在式(1)中形式化了解码器。请注意,RoI特征集
也被
使用。
在
中,关键模块是动态卷积,它建立了提议特征
和图像RoI特征
之间的连接。然而,作者发现交叉注意力和动态卷积之间有一个区别。前者通常是轻量级的,而后者依赖于一个庞大的动态层
,该层将
映射到两组卷积核
和
,如式(2)所示。
实际上,
是一个单一的FC层,其输入维度
与
相同,输出维度等于
,其中容纳了
和
。它占
中模型参数的很大比例。另一个模块,在
中占用了许多参数,甚至在DETR系列中都不存在,就是输出层Out。它也是一个FC层,用于将空间维度从7 × 7减少到1,如式(3)所示。Out的输入是更新后的RoI特征
,输出是目标特征
,它由检测头用于预测和下一个阶段
作为其输入提议特征。
在
中,特别是不同模块之间的连接细节,如图2(a)所示。
在下表1中,列出了解码器单个阶段的参数数量。作者可以看到一个
有840万个参数,因此它在6个不同阶段的参数成本已经超过了DETR的整个模型。第二大的模块是Out,在Sparse R-CNN和DiffusionDet中需要320万个参数,在AdaMixer中需要840万个参数。请注意,DETR系列中的多头交叉或可变形注意力层比Dyn小得多。
基于上述分析,作者对解码器进行了两个简单但重要的修改。原则是充分利用它,特别是
和Out层。考虑到
的大尺寸和它在多个阶段中的级联结构,作者在不同阶段之间共享它们的参数
以减小模型的大小,因此
变得递归,同一个模块在不同阶段重复出现。
然而,递归可能会导致训练过程中的不稳定梯度,这在RNN中是常见的问题。假设第
阶段的损失为
,其梯度
在
阶段起作用,因为
,因此Jacobian矩阵
会一直相乘,直到第一阶段,导致梯度可能消失或爆炸。作者认为递归的总次数不多。
此外,检测损失也在中间阶段计算,因此Dec的递归不会在训练过程中引起不稳定性。在实践中,考虑到第一个解码阶段的难度,从初始整个图像或随机位置的边界框中检测目标,作者将其排除在递归循环之外,使用独特的参数来提高性能。这会导致稍微增加模型的大小。
除了在不同阶段中的递归,作者还通过在同一阶段内从目标特征
到动态层Dyn的输入进行简短的递归,充分利用Dyn和Out层。换句话说,
再次给到Dyn层以生成新的卷积核
和
。它们用于再次对RoI
执行动态卷积并将其更新为
,然后给到Out层以指定
。作者强调,在阶段内的递归不会增加模型的大小,因为递归循环中的所有可训练模块,如Dyn和Out,共享相同的参数。它只会增加计算量。
通过在不同阶段共享Dec,模型变得紧凑,并且已经取得了更好的结果。然而,由于共享了公共的模型参数,Dec会以相同的方式处理来自不同阶段的输入
和
,这可能会降低其适应性,并限制其性能。作者打算引入更多来自上一阶段的信息,并进行补偿,以便Dec能够感知解码阶段并相应地进行调整。
值得注意的是,对于DETR系列,通常会将边界框的位置编码(PE)提供给解码器。它们有助于在自注意力和交叉注意力过程中更好地建模查询和键之间的关系,从而准确地表示目标。然而,PE通常被端到端的区域检测器忽略,主要是由于RoI Align破坏了全局位置。
作者认为即使对于端到端的区域检测器,边界框的PE仍然有效。首先,像Sparse R-CNN这样的检测器仍然需要自注意力力来建模Q中
之间的成对相似性,而这可以有效地在两个边界框的空间位置之间进行测量。其次,动态卷积可以更加适应并直接与位置和形状相关。因此,作者构建了位置感知的自注意力力和动态卷积模块,如图2(b)和(c)所示。
作者采用的自注意力策略。首先,它将4D向量
映射到正弦嵌入中。然后,它通过一个MLP进一步投影为PE向量
,并且在自注意力之前将
添加到query和key token上。对于动态卷积,中心
和框形状
以单独的方式进行编码。利用两个MLP,分别用
和
表示,将提议特征
映射到几何空间中的两个向量
和
,分别反映边界框的中心和形状。
和
的计算在式(4)中给出。这里,
由两个标量
和
组成,是从
中通过MLPs预测出来的。
和
共同形成
,每个部分贡献完整维度的一半。
然后,它们根据
和
的几何特征来调制成
作为卷积核。在式(5)中作者给出了这个过程的形式化。这里
表示积。最后,
和
被连接成
。
与此同时,根据正弦函数,图像特征在每个坐标处也被赋予一个PE向量。因此,RoI特征
中的每个元素都有其独特的位置表示,用
表示。请注意,
和
具有相同的维度,并且它们与f和k分别连接,完成了位置感知的动态卷积。
在前面的部分中描述的自注意力和动态卷积的边界框PE将
编码为全局图像坐标。因此,对于每个RoI特征
,生成的卷积核
和
被所有其中的元素共享。作者希望通过将卷积核
扩展为
来进一步增强动态卷积的适应性,从而为
中的每个元素配备独特的卷积核。
基于这个动机,作者提出了基于中心度的PE,它为特征
和卷积核
编码了边界框
的局部坐标。特别地,首先计算由式(6)定义的单通道中心度掩码
。这里
表示边界框内的局部坐标,而
具有相同的值范围。
请注意,m的取值范围在0和1之间,更高的值表示
接近边界框的中心。然后,作者将
乘以RoI特征
和卷积核
。由于
只有一个通道,它在通道维度
上进行复制以匹配
。对于
,
需要在通道
和隐藏维度
上进行复制。在与
相乘之前,
还需要在空间维度上进行扩展,将其大小扩大到7×7。经过
的调制,动态卷积核
被调整为
,为
中的每个元素提供了一个独特的卷积核。作者的基于中心度的PE也显示在图2(c)中。
中心度掩码
是静态的,其大小与RoI特征
相同,这意味着对于不同的
和
,它具有相同的值,并且始终在中心位置给出最大值。
在实践中,作者尝试了以下两种策略来增强它。首先,作者将其设置为可学习的模型参数,并在式(6)中进行初始化。其次,作者通过从提议特征
中预测中心坐标来调整最大值位置。然而,作者发现静态
策略比其他两种策略都得到了更好的结果。
作者提出的RecursiveDet是构建在3个基于区域的检测器上的,包括Sparse R-CNN,AdaMixer和DiffusionDet。
在表2中,作者提供了RecursiveDet与成熟方法在COCO 2017验证集上的性能比较。请注意,AdaMixer中的3D特征空间中的采样点不在提议框内,因此作者没有将基于中心度的PE实现到AdaMixer中。可以看到,这3个基于区域的检测器超过了Cascade R-CNN和其他DETR系列检测器,但需要更多的模型参数。
由于递归结构,作者的方法节省了大量的参数。以ResNet-50为Backbone网络,构建在Sparse R-CNN上的RecursiveDet比Sparse R-CNN的性能高出1.5个AP,而参数从106M减少到55M。构建在DiffusionDet和AdaMixer上的模型分别比基准提高了1.6个AP(47.1 vs. 45.5)和0.9个AP(47.0 vs. 47.9)。
当Backbone网络扩大时,RecursiveDet的表现也很好。在ResNet-101上,基于Sparse R-CNN,DiffusionDet和AdaMixer的RecursiveDet分别达到47.1,46.9和48.9。更令人惊讶的是,基于Swin-S和Swin-B的RecursiveDet(AdaMixer)和RecursiveDet(Sparse R-CNN)分别达到52.1和53.1。虽然RecursiveDet(DiffusionDet)没有超过其基准,但它减少了超过30%的模型大小。
请注意,作者所有的模型都节省了大量的参数。
作者方法在COCO test-dev数据集上的结果列在表3中。RecursiveDet在Swin-B上达到53.1的AP,没有进行任何额外操作。当使用测试时增强时,它达到55.1的AP。
在本节中,作者使用ResNet-50进行消融研究,以Sparse R-CNN架构为默认。提议特征的数量为100。
由于Sparse R-CNN具有多个级联解码器阶段逐步改进预测,其参数是冗余的。作者建议在不同阶段共享它们。
如表4所示,简单地共享参数并使结构递归将模型大小减少到40.1M,略微降低了0.4 AP的性能。为充分利用解码器的功能,作者重用动态层和输出层,增加模型的深度而不添加新的参数。它获得了43.6的AP,超过了原始的Sparse R-CNN 0.8的AP。由于第一阶段难以定位目标,作者将初始阶段与其他递归阶段保持独立。
请注意,阶段的总数仍为6。性能达到43.9 AP,从模型'RecSt + RecDy'中获得了0.3 AP的增益,成本很小,延迟可忽略。
如第3.4节所述,中心度的局部坐标PE使模型能够更精确地探索位置信息。除了在7×7区域内计算的静态中心度外,它还可以作为模型的可学习参数进行训练。
表5中的结果显示了大约0.3 AP的性能下降。由于不同的目标具有不同的形状并关注不同的点,作者预测一组偏移量来区分物体中心的位置。使该位置的中心度值最大,越远越小。然而,结果令人不满意,达到44.5的AP,比静态值低0.7。
在这部分中,作者分析了作者模型中不同组件的有效性。
如表6所示,本文提出的所有模块对最终结果都有重大贡献。递归结构将Sparse R-CNN的性能从42.8 AP提高到43.9 AP。在基于区域的检测器之前,PE还没有被引入。作者将边界框编码为嵌入以参与自注意力力和动态卷积。它实现了0.3 AP的性能提升。当共享不同阶段时,解码器输入很难区分是哪个阶段。
边界框编码通过为解码器提供几何信息来区分阶段,获得44.4 AP的结果,超过递归结构模型0.5 AP。而且时间成本主要来自于此。由于边界框只具有全局坐标和形状大小,作者进一步在建议框中使用中心性引入了局部先验。在中心性的帮助下,结果最终达到了45.2的AP。
在图3中,作者展示了Sparse R-CNN,AdaMixer,DiffusionDet和RecursiveDet的收敛速度。它显示作者的模型比它们的基准更高效。由于作者的方法共享了解码器参数,使级联检测器递归,作者比较了Sparse R-CNN和RecursiveDet在推断中解码器阶段数量的有效性,如图4所示。
[1].RecursiveDet: End-to-End Region-based Recursive Object Detection.
Is attention all you need? 注意力可能并不是完美的!
RCS-YOLO | 比YOLOv7精度提高了2.6%,推理速度提高了60%
Hybrid-SORT起飞 | 超过DeepSORT将近10个点的多目标跟踪香不香?
MLP-Like Backbone | Strip-MLP跨行Token交互比SWin Transformer更轻更强的性能