【论文精读】OTA: Optimal Transport Assignment for Object Detection(物体探测的最优传输分配)

在这里插入图片描述


OTA最优传输

  • 🚀🚀🚀摘要
  • 一、1️⃣ Introduction---介绍
  • 二、2️⃣Related Work---相关工作
    • 2.1 🎓 Fixed Label Assignment--静态标签分配
    • 2.2 ✨Dynamic Label Assignment--动态标签分配
  • 三、3️⃣Method---论文方法
    • 3.1 🎓 Optimal Transport--最佳运输
    • 3.2 ✨OT for Label Assignment--标签分配的 OT
    • 3.3 ⭐️Advanced Designs--高级设计
  • 四、4️⃣Experiments---相关实验
    • 4.1 🎓 Implementation Details--实施细节
    • 4.2 ✨Ablation Studies and Analysis--消融研究与分析
    • 4.3 ⭐️Comparison with State-of-the-art Methods--与最先进方法的比较
    • 4.4 🎯Experiments on CrowdHuman--在 CrowdHuman 上进行的实验结果
  • 五、5️⃣Conclusion---结论
  • 六、附录---Sinkhorn-Knopp方法


🚀🚀🚀摘要

📜论文地址:https://arxiv.org/abs/2103.14259v1
📌代码地址:https://github.com/Megvii-BaseDetection/OTA
如果想要yolov5中添加OTA方法,实测可以快速涨点,请参考这篇文章:【YOLOv5改进系列】高效涨点----Optimal Transport Assignment:OTA最优传输方法

📗翻译
目标检测中标签分配的最新进展主要是寻求为每个真实( g t gt gt)目标独立定义正/负训练样本。在本文中,我们创新地从全局的角度重新审视标签分配问题,并提出将分配过程制定为最优运输(OT)问题—优化理论中一个被广泛研究的主题。

具体来说,我们将每对需求者( a n c h o r anchor anchor)和供应者( g t gt gt)之间的单位运输成本定义为其分类和回归损失的加权和。在公式化之后,寻找最佳分配方案就转化为以最小运输成本求解最佳运输计划,这可以通过 Sinkhorn-Knopp 迭代法来解决。

在 COCO 上,配备最佳传输分配 (OTA) 的单个 FCOS-ResNet-50 探测器在 1× 调度器下可达到 40.7% 的 mAP,优于所有其他现有分配方法。在 COCO 和 CrowdHuman 上进行的大量实验进一步验证了我们提出的 OTA 的有效性,尤其是在人群场景中的优越性


🔥精读
🚀当前基于卷积神经网络的目标检测器是通过预测一组预定义锚点的分类标签进行目标检测。经典的分配策略可以归结为两种:静态分配策略动态分配策略,但是这两种分配策略都有所缺点,所以作者提出了另外一种方法进行标签分配,并且该方法在密集目标上面的检测效果会比较好。

☀️一个更好的分配策略应该是摆脱传统的为每一个目标对象单独寻求最优分配的做法,由此启发,作者转向全局最优的思想,并将最优传输理论应用到目标检测中的标签分类问题中,目的是为图像中的所有目标找到全局高置信度分配方式。作者首先将目标检测的标签分配问题表述为一个最优运输问题,然后将求解最优传输问题转化为求解最优运输方案,进而可以利用现成的Sinkhorn-Knopp迭代快速高效地求解。


一、1️⃣ Introduction—介绍

📗翻译
目前基于 CNN 的物体检测器通过预测一组预定义锚点的分类(cls)标签回归(reg)偏移量,以密集预测的方式进行检测。为了训练检测器,为每个锚点定义 cls 和 reg 目标是一个必要的过程,这在物体检测中被称为标签分配

经典的标签分配策略通常采用预定义规则来匹配每个锚点的真实对象( g t gt gt)或背景。例如,RetinaNet采用交集-超联合(Intersection-over-Union, IoU)作为正负锚点划分的阈值标准。像FCOS这样的无锚点检测器将任何 g t gt gt对象的 c e n t e r / b b o x center/bbox center/bbox区域内的锚点视为相应的阳性。这种静态策略忽略了一个事实,即对于具有不同大小、形状或遮挡条件的物体,适当的正/负( p o s / n e g pos/neg pos/neg)划分边界可能会有所不同。

受此启发,人们提出了许多动态分配策略。ATSS建议根据统计特征为每个 gt 设置划分边界。其他最新进展表明,每个锚点的预测置信度分数可以作为设计动态分配策略的适当指标,即高置信度的锚点可以很容易地被网络学习,从而被分配到相关的 gt,而预测不确定的锚点应被视为负锚点。这些策略能让检测器为每个 gt 对象动态地选择正锚,并实现最先进的性能。

然而,在没有上下文的情况下,为每个gt独立分配 p o s / n e g pos/neg pos/neg样本可能是次优的,就像缺乏上下文可能导致不正确的预测一样。当处理模棱两可的锚点时(即,锚点同时被视为多个gts的阳性样本,如图所示),现有的分配策略在很大程度上基于手工制定的规则(例如,Min Area , Max IoU)。

在这里插入图片描述

图1:物体检测中的模糊锚点示意图。红点表示两幅样本图像中的一些模糊锚点。目前,这些模糊锚点的分配主要基于手工创建的规则。

我们认为,将模糊锚点分配给任何 g t gt gt(或背景)都可能会引入对其他 g t gt gt 有害的梯度。因此,模棱两可的锚点的分配并不简单,需要本地视图之外的更多信息。因此,更好的分配策略应该摆脱为每个 g t gt gt 独立追求最优分配的传统,转而追求全局最优,换句话说,为图像中的所有 g t gt gt 寻找全局高置信度分配

DeTR 是第一个尝试从全局角度考虑标签分配的工作。它用转换层取代了检测头,并使用匈牙利算法考虑一对一分配,即每个 g t gt gt 只匹配一个查询,且全局损失最小。然而,对于基于 CNN 的检测器来说,由于网络通常会对物体周围的邻近区域产生相关分数,因此每个 g t gt gt 都会被分配给许多锚点(即一对多),这也有利于提高训练效率。在这种一对多的方式下,仍能以全局视角分配标签。

为了实现一对多情况下的全局最优分配结果,我们建议将标签分配表述为最优运输(OT)问题—优化理论中线性规划(LP)的一种特殊形式。具体来说,我们将每个 g t gt gt 定义为供应一定数量标签的供应商,将每个锚定义为需要一个单位标签的需求者。如果一个锚点从某个 g t gt gt 收到足够数量的正标签,这个锚点就成为该 g t gt gt的一个正锚点。在这种情况下,每个 g t gt gt 提供的正标签数量可以理解为“在训练过程中,为了更好地收敛,该 g t gt gt 需要多少个正锚框”。 每个锚框与 g t gt gt之间的单位运输成本定义为它们的成对 c l s cls cls r e g reg reg 损失的加权和(也就是分类损失和边界框回归损失)。

此外,由于每个锚也应考虑负标签,因此我们引入了另一个供应商—背景,由其提供负标签,以弥补其余需要的标签。背景和某个锚之间的成本仅定义为它们的成对分类损失。在公式化之后,寻找最佳分配方案就转化为求解最优运输计划,这可以通过现成的 Sinkhorn-Knopp 迭代快速有效地求解。我们将这种分配策略命名为最优运输分配(OTA)

在 MS COCO 基准上进行了综合实验,OTA 的显著改进证明了其优势。OTA 还在名为 CrowdHuman的拥挤行人检测数据集上实现了单级检测器中的 SOTA 性能,显示了 OTA 在不同检测基准上的泛化能力。


🔥精读
标签分类的概念
在目标检测中,标签分配是指将每个检测到的目标实例与相应的类别标签进行关联的过程。目标检测的目标是在图像或视频中准确地定位和识别出不同类别的目标物体。

标签分配是通过对检测框(也称为边界框或候选框)与真实标注框之间的重叠程度进行评估来确定它们之间的匹配关系。常用的方法是计算检测框与真实标注框之间的交集与并集的比值,即(IOU)。

根据IOU值的阈值,可以将标签分为以下几种情况:

  1. 正样本(Positive):当检测框与真实标注框之间的IOU大于设定的阈值时,将检测框视为正样本,并为其分配相应的目标类别标签。
  2. 负样本(Negative):当检测框与真实标注框之间的IOU小于设定的阈值时,将检测框视为负样本。这些框通常不包含任何目标,因此不分配目标类别标签。

在某些情况下,可能会存在多个检测框与同一个目标实例具有高IOU的情况。为了解决这个问题,可以采用以下策略:

  • 单一匹配策略:选择与目标实例IOU最高的一个检测框,并将其匹配为正样本。
  • 多标签策略:允许一个目标实例与多个检测框具有高IOU值,将这些检测框都匹配为正样本,并为它们分配相应的目标类别标签。

⚡️静态分配策略通常采用预定义的规则来分配每个锚点所处的目标对象或背景,这种静态策略会存在一个问题,它会导致对于具有不同大小、形状或遮挡条件的目标对象的锚点划分边界会有所不同。

⚡️动态分配策略中每个锚点的预测置信度是一个动态分配的指标,高置信度的锚点可以容易地被网络学习,从而被分配给相关的目标对象,但是动态分配策略依然会有因为不能利用全局信息而会导致锚点分配模糊的问题,如下图,在两个物体的交界处存在部分锚点,它们属于GT1也属于GT2,也叫做模糊锚点。针对于这问题,本文首先将目标检测的标签分配问题表述为一个最优运输问题,然后将求解最优传输问题转化为求解最优运输方案。在这里插入图片描述


二、2️⃣Related Work—相关工作

2.1 🎓 Fixed Label Assignment–静态标签分配

📗翻译

在训练物体检测器之前,确定每个锚点应分配给哪个 g t gt gt(或背景)是一个必要的步骤。基于锚点的检测器通常采用某一阈值的 IoU 作为分配标准。例如,Faster R-CNN 中的 RPN 分别使用 0.7 和 0.3 作为正阈值和负阈值。在训练 R-CNN 模块时,将正负划分的 IoU 阈值改为 0.5(与gt的Iou大于0.5的视为正样本,反之为负样本)。基于 IoU 的标签分配被证明是有效的,并很快被许多 Faster R-CNN 的变体所采用,以及许多单级检测器 。

最近,无锚检测器因其简洁性和高计算效率而备受关注。FCOS、Foveabox 及其前身在不使用锚点盒的情况下,直接将物体中心周围的锚点指定为正样本,显示出良好的检测性能。另一种无锚点检测器将每个物体视为一个或一组关键点。这些检测器与其他检测器有着不同的特点。

虽然上述检测器在很多方面都有所不同,但在标签分配方面,它们都对不同大小、形状和类别的物体采用单一的固定分配标准(如中心区域的固定区域或 IoU 临界值),这可能会导致次优的分配结果。

2.2 ✨Dynamic Label Assignment–动态标签分配

📗翻译
最近的许多研究都试图使标签分配程序更具适应性,以进一步提高检测性能。GuidedAnchoring不使用预定义的锚点,而是根据无锚机制生成锚点,以更好地适应各种对象的分布。

MetaAnchor提出了一种锚点生成函数,可从任意定制的先验框中学习动态锚点。NoisyAnchors提出了基于分类和定位损失的软标签和锚重新加权机制。FreeAnchor基于 IoU 为每个 gt 构建前 k 个锚点候选,然后提出一种检测定制似然法,在每个候选集内执行正负分割。ATSS提出了一种自适应样本选择策略,采用每个 gt 的一组最接近锚点的 IoU 值的均值+标准差作为正负阈值。PAA假设正负样本的联合损失分布遵循高斯分布。因此,它使用 GMM 来拟合正负样本的分布,然后使用正样本分布的中心作为正负划分边界。AutoAssign以完全数据驱动的方式处理标签分配问题,自动确定空间和尺度维度上的正负。

这些方法探索的是单个对象的最优分配策略,而没有从全局角度考虑上下文信息。DeTR研究了全局最优匹配的想法。但他们采用的匈牙利算法只能以一对一的方式进行分配。迄今为止,对于基于 CNN 的一对多场景检测器来说,全局最优分配策略仍是未知数。


🔥精读
🚀目前研究人员传统的方法:

  • 静态方法
  • 动态方法
    ⚡️缺点:探索单个对象的最优分配策略,没有去考虑上下文信息

🚀较为先进的方法:

  • DeTR研究的全局最优匹配方法
    ⚡️缺点:采用的匈牙利算法只能以一对一的方式进行分配

📌未解决的问题:全局最优分配策略仍是未知数


三、3️⃣Method—论文方法

在本节中,我们首先重温了最佳传输问题的定义,然后演示了如何将物体检测中的标签分配表述为一个 OT 问题。我们还介绍了两种先进的设计,建议采用它们来充分利用 OTA。

3.1 🎓 Optimal Transport–最佳运输

📗翻译
最优运输(OT)描述了以下问题:假设某一地区有 m m m 个供应方和 n n n 个需求方。第 i i i 个供应商拥有 s i s_{i} si 个单位的货物,而第 j j j个需求者需要 d j d_{j} dj 个单位的货物。每单位货物从供应商 i i i 到需求者 j j j 的运输成本用 c i j c_{ij} cij 表示。OT问题的目标是找到一个运输计划 π ∗ = { π i , j ∣ i = 1 , 2 , . . . m , j = 1 , 2 , . . . n } \pi^{*}=\{\pi_{i,j}|i=1,2,...m,j=1,2,...n\} π={πi,ji=1,2,...m,j=1,2,...n} 根据该原则,所有货物都能以最低的运输成本从供应商运送到需求方:
min ⁡ π ∑ i = 1 m ∑ j = 1 n c i j π i j . s . t . ∑ i = 1 m π i j = d j , ∑ j = 1 n π i j = s i , ∑ i = 1 m s i = ∑ j = 1 n d j , π i j ≥ 0 , i = 1 , 2 , . . . m , j = 1 , 2 , . . . n . \begin{aligned} \operatorname*{min}_{\pi}& \sum_{i=1}^{m}\sum_{j=1}^{n}c_{ij}\pi_{ij}. \\ \mathrm{s.t.}& \sum_{i=1}^{m}\pi_{ij}=d_{j},\quad\sum_{j=1}^{n}\pi_{ij}=s_{i}, \\ &\sum_{i=1}^{m}s_{i}=\sum_{j=1}^{n}d_{j}, \\ &\pi_{ij}\geq0,\quad i=1,2,...m,j=1,2,...n. \end{aligned} πmins.t.i=1mj=1ncijπij.i=1mπij=dj,j=1nπij=si,i=1msi=j=1ndj,πij0,i=1,2,...m,j=1,2,...n.

这是一个可以在多项式时间内求解的线性程序。然而,在我们的例子中,得到的线性程序很大,涉及所有尺度的锚点特征尺寸的平方。因此,我们通过一个快速迭代的解决方案来解决这个问题,命名为Sinkhorn-Knopp(如果想研究该方面请看附录6)


🔥精读
🚀最优传输可以使用下面流程图进行理解
在这里插入图片描述


3.2 ✨OT for Label Assignment–标签分配的 OT

📗翻译
在物体检测中,假设输入图像 I I I m m m g t gt gt 目标和 n n n 个锚框(跨越所有 FPN级别),我们将每个 g t gt gt 视为持有 k k k 个正标签单位(即 s i = k , i = 1 , 2 , . . . , m s_{i }= k,i = 1,2,...,m si=ki=12...m)的供应者,而每个锚框视为需要一个标签单位(即 d j = 1 , j = 1 , 2 , . . . , n d_{j} = 1,j = 1,2,...,n dj=1j=12...n)的需求者。从 g t i gt_{i} gti 向锚 a j a_{j} aj 运输一单位正标签的成本 c f g c^{fg} cfg定义为其 c l s cls cls r e g reg reg 损失的加权和:
c i j f g = L c l s ( P j c l s ( θ ) , G i c l s ) + α L r e g ( P j b o x ( θ ) , G i b o x ) \begin{aligned} c_{ij}^{fg}=& L_{cls}(P_{j}^{cls}(\theta),G_{i}^{cls})+\alpha L_{reg}(P_{j}^{box}(\theta),G_{i}^{box}) \end{aligned} cijfg=Lcls(Pjcls(θ),Gicls)+αLreg(Pjbox(θ),Gibox)

其中 θ 代表模型参数。 P j c l s P_{j}^{cls} Pjcls P j b o x P_{j}^{box} Pjbox表示预测的 c l s cls cls 分数和 a j a_{j} aj 的边界框。 L c l s L_{cls} Lcls L r e g L_{reg} Lreg 分别代表交叉熵损失和 IoU 损失。也可以用 Focal Loss 和 GIoU /SmoothL1 Loss 代替这两个损失。

在训练过程中,除了正向分配外,还有大量的锚点被视为负向样本。由于最优运输涉及所有锚点,我们引入了另一个供应商–背景,他只提供负标签。在标准 OT 问题中,总供应量必须等于总需求量。因此,我们将背景可提供的负标签数量设为 n − m × k n -m× k nm×k。将一个单位的负标签从背景运输到 a j a_{j} aj 的成本定义为:
c j b g = L c l s ( P j c l s ( θ ) , ∅ ) c_j^{bg}=L_{cls}(P_j^{cls}(\theta),\varnothing) cjbg=Lcls(Pjcls(θ),)

其中,∅ 表示背景类。将 c b g ∈ R 1 × n \begin{matrix}c^{bg}\in\mathbb{R}^{1\times n}\end{matrix} cbgR1×n c f g ∈ R m × n \begin{matrix}c^{fg}\in\mathbb{R}^{m\times n}\end{matrix} cfgRm×n 的最后一行合并,我们就可以得到成本矩阵 c ∈ R ( m + 1 ) × n c\in\mathbb{R}^{(m+1)\times n} cR(m+1)×n 的完整形式。供应向量 s 应相应更新为:

s i = { k , i f i ≤ m n − m × k , i f i = m + 1. s_i=\begin{cases}k,&if\quad i\leq m\\n-m\times k,&if\quad i=m+1.\end{cases} si={k,nm×k,ifimifi=m+1.

由于我们已经有了成本矩阵 c c c、供应向量 s ∈ R m + 1 s\in\mathbb{R}^{m+1} sRm+1 和需求向量 d ∈ R n d\in\mathbb{R}^{n} dRn,通过现成的 Sinkhorn-Knopp 迭代法,可以求解这个OT问题,从而得到最优运输方案 π ∗ ∈ R ( m + 1 ) × n \pi^{*}\in\mathbb{R}^{(m+1)\times n} πR(m+1)×n 。得到 π ∗ \pi^{*} π 后,就可以解码出相应的标签分配方案,即把每个锚分配给运输标签量最大的供应商。随后的过程(如根据分配结果计算损失、反向传播)与 FCOS和 ATSS完全相同。注意到 OT 问题的优化过程只包含一些矩阵乘法,GPU 设备可以加速这些乘法,因此 OTA 只增加了不到 20% 的总训练时间,而且在测试阶段完全不需要成本。


🔥精读
🚀将最优传输引入到物体检测中标签分配问题中
此时的供应商有两个:

  • 正向样本—m个gt框
  • 负向样本—背景

需求方为:

  • n个锚框

相应的运输成本也变成了两部分

  • 单位正标签运输成本:cls(分类)和reg(边界框回归)损失加权和
  • 单位负标签运输成本

在这里插入图片描述


3.3 ⭐️Advanced Designs–高级设计

中心先验:之前的研究 仅从有限区域的物体中心区域选择正锚点,称为中心先验(Center Prior)。这是因为它们在后续处理过程中要么存在大量的模糊锚点,要么存在较差的统计数据。在后续处理中,我们不依赖于统计特征,而是依赖于统计数据。

我们的 OTA 不依赖于统计特征,而是基于全局优化方法,因此自然能够抵御这两个问题。从理论上讲,OTA 可以将 g t s gts gts 方框区域内的任何锚点指定为正样本。但是,对于 COCO 这样的一般检测数据集,我们发现中心优先仍然有利于 OTA 的训练。迫使检测器关注潜在的正向区域(即中心区域)有助于稳定训练过程,尤其是在训练的早期阶段,这将带来更好的最终性能。

因此,我们在成本矩阵中加入了“中心优先”(Center Prior) 。对于每个 g t gt gt,我们会根据锚点和 g t s gts gts之间的中心距离,从每个 FPN 级别中选择 r 2 r^{2} r2 个最近的锚点。至于不在 r 2 r^{2} r2 最近列表中的锚点,它们在成本矩阵 c c c 中的相应条目将受到额外的恒定成本影响,以降低它们在训练阶段被分配为正样本的可能性。

在第 4 节中,我们将证明,尽管 OTA 与其他研究一样采用了一定程度的中心优先(Center Prior),但当 r r r 设置为较大值时(即潜在正锚和模糊锚的数量较多),OTA 始终以较大优势优于同行。

动态 k 估计:直观地说,每个 g t gt gt(即第 3.1 节中的 s i s_{i} si)的正锚点的适当数量应该是不同的,并基于物体的大小、尺度和遮挡条件等多种因素。由于很难直接建立从这些因素到正锚点数量的映射函数模型,我们提出了一种简单而有效的方法,即根据预测边界框和 g t s gts gts 之间的 I o U IoU IoU 值来粗略估计每个 g t gt gt 的适当正锚点数量。具体来说,对于每个 g t gt gt,我们根据 I o U IoU IoU 值选出前 q q q 个预测值。这些 I o U IoU IoU 值的总和代表了该 g t s gts gts 的估计正锚点数量,我们将这种方法命名为动态 k k k 估算。这种估计方法基于以下直觉:对于某个 g t gt gt ,适当正锚数应与能很好地回归该 g t gt gt 的锚数成正相关。在第 4 节中,我们将详细比较固定 k 估算策略和动态 k 估算策略。

下图展示了 OTA 的可视化模型。我们还在算法 1 中描述了 OTA 的完整流程,包括中心先验和动态 k k k 估计。

在这里插入图片描述

图2:最佳运输分配示意图。成本矩阵由每个锚点-锚点对之间的成对 cls 和 reg 损失组成。寻找最佳标签分配的目标转换为通过 Sinkhorn-Knopp 迭代,以最小的运输成本解决将标签从供应方(即 GT 和 BG)运输到需求方(即锚点)的最佳运输计划。

最优传输分配算法(OTA)如下所示:

在这里插入图片描述

四、4️⃣Experiments—相关实验

🚀在本节中,我们在 MS COCO 2017 上进行了大量实验,其中包含约 118k、5k 和 20k 张图像,分别为 train 集、val 集和 test-dev 集。在消融研究中,我们在 train 集上训练检测器,并报告 val 集上的性能。与其他方法的比较是在测试-发展集上进行的。我们还在 CrowdHuman验证集上比较了 OTA 和其他方法,以证明 OTA 在人群场景中的优越性。

4.1 🎓 Implementation Details–实施细节

如果没有指定,我们使用在 ImageNet 上预先训练的 ResNet-50和 FPN 作为默认骨干。大多数实验的迭代次数为 90k,表示为 “1×”。初始学习率为 0.01,在 60k 和 80k 次迭代后以 10 倍递减。最小批量设置为 16。按照惯例,模型在 8 个 GPU 上使用 SGD进行训练。

OTA既可以用于基于锚点的检测器,也可以用于无锚点的检测器,由于其简单,下面的实验主要在FCOS上进行。我们采用Focal损失和IoU损失作为构成成本矩阵的 L c l s L_{cls} Lcls L r e g L_{reg} Lreg。Eq. 2中的α设为1.5。对于反向传播,回归损失用GIoU损失代替,并以2的因子重新加权。IoU分支首先在YOLOv1中被引入,并通过PAA在现代一级目标探测器中被证明是有效的。

在我们的实验中,我们也采用IoU Branch作为默认组件。3.3节中的top q q q直接设置为20,因为我们发现这组参数值可以在各种情况下一致地产生稳定的结果。

4.2 ✨Ablation Studies and Analysis–消融研究与分析

单个成分的作用:我们验证了我们提出的方法中每个组件的有效性。为了公平比较,所有检测器的回归损失乘以2,这是在高IoU阈值时提高AP的有用技巧。如表1所示,当不采用辅助分支机构时,OTA的AP优于FCOS 0.9% (39.2% vs .38.3%)。在为两者添加IoU分支后,这一差距几乎保持不变(分别为39.5% vs . 40.3%和38.8% vs . 39.6%,有无中心优先)。最后,动态k将AP推向了新的先进水平40.7%。

在整篇文章中,我们强调OTA可以应用于基于锚点和无锚点的检测器。因此,我们也在retinaNet上采用OTA,在特征图上只有一个方形锚点错位。如表1所示,OTA-FCOS和OTA- retinaNet的AP值完全相同,说明OTA适用于基于锚点和无锚点的探测器
在这里插入图片描述

表1。OTA各组分的消融研究。“Center”分别代表OTA和FCOS的中心先验和中心抽样。Dyn.k是我们提出的动态k估计策略的缩写。

r的影响:中心先验的半径 r r r值用于控制每个 g t gt gt的候选锚点的数量。如果采用较小的 r r r,则只有靠近目标中心的锚点才能被分配为正锚点,从而帮助优化过程专注于更有可能提供信息的区域。随着r的增加,候选项的数量也呈二次增长,导致优化过程中潜在的不稳定性。例如,当r为3,5或7时,对应的候选锚点数量分别为45、125和245。我们研究ATSS和PAA的行为,表2中不同 r r r值下的OTA。
在这里插入图片描述

表2。不同标签分配策略在不同候选主播数量下的表现。Namb。表示在COCO列车集上计算的每幅图像模糊锚点的平均数量。

r r r = 5时,OTA的性能最佳(40.7% AP)。当r像ATSS和PAA一样设置为3时,OTA也达到了40.6%的AP,说明COCO上大部分潜在的正锚点都在物体中心附近。当 r r r设置为7时,性能仅略有下降0.3%,说明OTA对超参数 r r r不敏感。

模糊锚点处理:大多数现有的动态标签分配方法对每个 g t gt gt只进行了一个小的候选集,因为大量的候选集会带来麻烦——当发生遮挡或几个物体足够接近时,一个锚点可能同时是多个 g t gt gt的合适候选。我们将这样的锚定义为模糊锚。以前的方法主要通过引入手工规则来处理这种模糊性,例如Min Area、Max IoU和Min Loss。

为了说明OTA在模糊处理方面的优越性,我们统计了ATSS、PAA和OTA中模糊锚的数量,并评估了它们在不同 r r r下的相应性能,如表2所示。注意到 OTA 中的最优分配计划是连续的,因此如果 max π j ∗ \pi^{*}_{j} πj< 0.9,我们将锚 a j a_{j} aj 定义为模糊锚。表2显示,对于ATSS,当 r r r从3变化到7时,模糊锚的数量大大增加。其性能相应地从39.4%下降到37.2%。对于PAA,模糊anchor的数量对 r r r的敏感度较低,但其性能仍然下降了0.8%,这表明PAA采用的Max IoU在模糊anchor之前并不是一个理想的。在OTA中,当多个gts倾向于将正标签传输到同一个anchor时,OT算法会根据全局成本最小的原则自动解决它们的冲突。因此,OTA 的模糊锚的数量仍然很低,并且随着 r r r 从 3 增加到 7 几乎没有增加,相应的性能也很稳定。

此外,在执行 OTA 之前,我们会根据手工创建的规则手动分配模糊锚点。在这种情况下,OTA 只负责正负样本的划分。表 3 显示,将手工规则和 OTA 结合使用,AP 分别降低了 0.7% 和 0.4%。最后,我们在图 3 中展示了一些分配结果。红色箭头和虚线椭圆突出了模糊区域(即不同 f g s fgs fgs 之间的重叠或 f g s fgs fgs b g bg bg 之间的交界处)。由于缺乏上下文和全局信息,ATSS 和 PAA 在这些区域的表现较差,导致检测效果不理想。相反,OTA 在这些区域分配的积极锚点要少得多,我们认为这是一种理想的行为。
在这里插入图片描述

表3。OTA 和其他人为设计的策略在 COCO val 集上的歧义处理的性能比较。表示“随后

在这里插入图片描述

图 3. 分配结果的可视化。对于 PAA,点代表正锚框的几何中心。对于 ATSS 和 OTA,点代表正锚点。矩形代表 gt 边界框。为了清楚地说明不同分配策略之间的差异,我们将所有方法的 r 设置为 5。为了更好的可视化,仅显示具有最多正锚点数量的 FPN 层。

k 的影响:在执行Sinkhorn-Knopp迭代之前,我们需要定义每个 g t gt gt可以提供多少个正标签。这个值也代表了每个 g t gt gt需要多少个anchor才能更好的收敛。一种简单的方法是将所有 g t s gts gts k k k 设置为恒定值。我们尝试从 1 到 20 的不同 k k k 值。如表 4 所示,在所有不同值中,k=10 和 k=12 实现了最佳性能。随着k从10增加到20,一个anchor同时适合作为两个接近目标的正样本的可能性也增加,但根据表4没有明显的性能下降(0.2%),这证明了OTA在处理潜在的歧义。当k=1时,OTA变成一对一的分配策略,与DeTR中相同。糟糕的性能告诉我们,除非添加辅助的一对多监督,否则在 1× 调度器下通过一对一分配实现有竞争力的性能仍然具有挑战性。
在这里插入图片描述

表 4. COCO val 集上不同 k 值和动态 k 估计策略的分析。

固定 k k k 策略假设每个 g t gt gt 具有相同数量的适当正锚。然而,我们认为每个 gt 的这个数字应该有所不同,并且可能受到许多因素的影响,如物体的大小、空间姿态和遮挡条件等。因此,我们采用第 3.3 节中提出的动态 k 估计,并将其性能与固定k策略。表 4 中的结果表明,动态 k 超出固定 k 的最佳性能 0.4% AP,验证了我们的观点以及动态 k 估计策略的有效性。

4.3 ⭐️Comparison with State-of-the-art Methods–与最先进方法的比较

我们将最终模型与 MS COCO 测试开发上其他最先进的单级探测器进行比较。继之前的工作之后,我们在 640 到 800 的范围内随机缩放图像的短边。此外,我们将迭代总数加倍到 180K,学习率变化点按比例缩放。其他设置一致。

如表 5 所示,我们使用 ResNet-101-FPN 的方法实现了 45.3% AP,优于具有相同主干的所有其他方法,包括 ATSS (43.6% AP)、AutoAssign (44.5% AP) 和 PAA (44.6% AP)。注意到对于 PAA,我们删除了评分投票程序,以便在不同标签分配策略之间进行公平比较。使用 ResNeXt-64x4d-101-FPN,OTA性能可进一步提升至47.0%AP。为了证明我们的方法与目标检测中其他先进技术的兼容性,我们采用可变形卷积网络(DCN)到ResNeXt主干以及检测头中的最后一个卷积层。这将我们模型的性能从 47.0% AP 提高到 49.2% AP。最后,通过多尺度测试技术,我们的最佳模型达到了 51.5% AP。
在这里插入图片描述

表5。在MS COCO 2017测试开发集上与最先进的一级检测器的性能比较。*表示ATSS采用多尺度测试的具体形式

4.4 🎯Experiments on CrowdHuman–在 CrowdHuman 上进行的实验结果

拥挤场景中的物体检测引起了越来越多的关注。与为一般目标检测(如 COCO)设计的数据集相比,在拥挤的数据集中,歧义发生的频率更高。因此,为了证明 OTA 在处理模糊锚点方面的优势,有必要在拥挤的数据集——Crowd human 上进行实验。 CrowdHuman 在训练、验证和测试集中分别包含 15000、4370 和 5000 个图像,图像中的平均人数为 22.6。对于所有实验,我们对检测器进行 30 轮训练(即 2.5 倍),以实现更好的收敛。 NMS阈值设置为0.6。我们在实验中采用 ResNet-50作为默认主干网。其他设置与我们在COCO上的实验相同。为了进行评估,我们遵循标准的加州理工学院评估指标 - MR,它代表每幅图像误报的对数平均缺失率 (FPPI),范围在 [10−2, 100] 之间。 AP 和 Recall 也被报告以供参考。所有评估结果均在 CrowdHuman val 子集上报告。

如表6所示,retanet和FCOS的MR分别仅为58.8%和55.0%,远不如Faster R-CNN(带FPN)等两级检测器,揭示了单级检测器在人群场景中的困境。从FreeAnchor开始,通过动态标签分配策略逐步提高了单阶段检测器的性能。ATSS达到49.5%的MR,非常接近Faster R-CNN (48.7% AP)的性能。最近提出的LLA利用了损失感知标签分配,这与OTA类似,实现了47.9%的MR。然而,我们的OTA通过将全局信息引入标签分配,将MR提高到了46.6%。AP和OTA的召回也明显超过了现有的其他一级检测器。
在这里插入图片描述

表6。在CrowdHuman验证集上的性能比较。所有实验均在2.5倍调度器下进行。

尽管 PAA 在 COCO 上取得了与 OTA 相当的性能,但在 CrowdHuman 上却表现不佳。我们推测 PAA 需要明确的 p o s / n e g pos/neg pos/neg 决策边界来帮助 GMM 学习更好的集群。但在拥挤的场景中,这种清晰的边界可能不存在,因为潜在的负样本通常会覆盖足够数量的前景区域,导致 PAA 的性能较差。此外,PAA 执行 per-gt 的聚类,这大大增加了在 CrowdHuman 等拥挤数据集上的训练时间。

与PAA相比,OTA仍然显示出可喜的结果,这表明OTA在各种检测基准上的优越性。

五、5️⃣Conclusion—结论

在本文中,我们提出了最优传输分配(OTA)——一种基于优化理论的标签分配策略。 OTA将目标检测中的标签分配过程制定为最佳传输问题,旨在以最小的传输成本将标签从真实目标背景传输到锚点。为了确定每个gt所需的正标签数量,我们进一步提出了一种基于预测边界框与每个gt之间的IoU值的简单估计策略。实验表明,OTA在MS COCO上实现了新的SOTA性能。由于 OTA 可以很好地处理模糊锚点的分配,因此它在 CrowdHuman 数据集上也大大优于所有其他单阶段检测器,展示了其强大的泛化能力。


🚀总结
最优传输分配(OTA)的方法可以很好的解决两个目标之间模糊点存在过多问题,不管是与单阶段还是双阶段检测器相比,性能都是由于两者,尤其是在于密集目标检测中,效果更加明显。

六、附录—Sinkhorn-Knopp方法

在这里插入图片描述


在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

更换 Jenkins 插件下载源(解决 Jenkins 插件安装失败)【图文详细教程】

Jenkins 插件安装失败的情况 这里提一下&#xff0c;Jenkins 插件安装失败&#xff0c;不一定是下载源的问题&#xff0c;还有可能你下载的 Jenkins 的版本与插件的版本不匹配&#xff0c;Jenkins 的版本较低&#xff0c;而安装的插件是为新的 Jenkins 版本准备的&#xff0c;此…

二次开发Flink-coGroup算子支持迟到数据通过测输出流提取

目录 1.背景 2.coGroup算子源码分析 2.1完整的coGroup算子调用流程 2.2coGroup方法入口 2.3 CoGroupedStreams对象分析 2.4WithWindow内部类分析 2.5CoGroupWindowFunction函数分析 3.修改源码支持获取迟到数据测输出流 3.1复制CoGroupedStreams 3.2新增WithWindow.si…

C语言中的联合体和枚举

联合体 联合体的创建 联合体的关键字是union union S {char a;int i; };除了关键字和结构体不一样之外&#xff0c;联合体的创建语法形式和结构体的很相似&#xff0c;如果不熟悉结构体的创建&#xff0c;可以看一下我上一篇的博客关于结构体知识的详解。 联合体的特点 联合…

移植 Zephyr 到 Art-Pi

背景 ​ 最近工作中接触到了 Zephyr&#xff0c;不由觉得 Zephyr 是个很强大、全面、优秀的实时操作系统&#xff0c;但同时是有一定的上手难度的&#xff0c;其复杂的构建系统让小编倒吸一口凉气。为了深入研究并完全掌控 Zephyr&#xff0c;小编决定把它移植到手头的开发板上…

Springboot实现合并单元格的excel文件导入到数据库(多模块)

最近做项目的时候一直在遇到excel导入导出的问题&#xff0c;本篇博文也是为了记录我这几天的血泪史&#xff0c;并做以记录&#xff0c;希望各位看完之后能有所收获。 以下是我excel文档里面的具体内容&#xff1a; excel文件中的编码信息属于另外一张表&#xff0c;所以以下…

android emulator windows bat启动

android emulator windows bat启动 先上结果 // 模拟器路径 -netspeed full -avd 模拟器名称 C:\Users\name\AppData\Local\Android\Sdk\emulator\emulator.exe -netdelay none -netspeed full -avd Pixel_3a_API_34_extension_level_7_x86_64一般来说 windows 如果不做…

2023年全国职业院校技能大赛(网络系统管理赛项)样题一

2023****年全国职业院校技能大赛 GZ073****网络系统管理赛项 赛题第1套 模块A&#xff1a;网络构建 目 录 任务清单… 1 &#xff08;一&#xff09;基础配置… 1 &#xff08;二&#xff09;有线网络配置… 1 &#xff08;三&#xff09;无线网络配置… 3 &#xff0…

初探Flink集群【持续更新】

周末下雨&#xff0c;倒杯茶&#xff0c;在家练习Flink相关。 开发工具&#xff1a;IntelliJ Idea 第一步、创建项目 打开Idea&#xff0c;新建Maven项目&#xff0c;包和项目命名 在pom.xml 文件中添加依赖 <properties><flink.version>1.13.0</flink.vers…

使用Python进行股票分析(2)

简介 我们在之前的文章《使用Python进行股票分析&#xff08;1&#xff09;》中&#xff0c;通过自动获取股票的历史数据&#xff0c;然后选择在一定时间内处于上涨的股票作为我们投资的标的。在本文中&#xff0c;我们进一步通过分析股票的短期趋势&#xff0c;选择处于短期上…

Ubuntu Desktop 安装谷歌拼音输入法

Ubuntu Desktop 安装谷歌拼音输入法 1. Installation1.1. 汉语语言包​1.2. 谷歌拼音输入法1.3. 安装语言包1.4. 键盘输入方式系统1.5. 重启电脑1.6. 输入法配置 2. configuration2.1. Text Entry Settings… 3. ExecutionReferences 1. Installation 1.1. 汉语语言包 strong…

springcloud第4季 负载均衡的介绍3

一 loadbalance 1.1 负载均衡的介绍 使用注解loadbalance&#xff0c;是一个客户端的负载均衡器&#xff1b;通过之前已经从注册中心拉取缓存到本地的服务列表中&#xff0c;获取服务进行轮询负载请求服务列表中的数据。 轮询原理 1.2 loadbalance工作流程 loadBalance工作…

再仔细品品Elasticsearch的向量检索

我在es一开始有向量检索&#xff0c;就开始关注这方面内容了。特别是在8.X之后的版本&#xff0c;更是如此。我也已经把它应用在亿级的生产环境中&#xff0c;用于多模态检索和语义检索&#xff0c;以及RAG相关。 也做过很多的优化&#xff1a;ES 8.x 向量检索性能测试 & 把…

Swift 从获取所有 NSObject 对象聊起:ObjC、汇编语言以及底层方法调用链(三)

概览 承接上一篇博文: Swift 从获取所有 NSObject 对象聊起:ObjC、汇编语言以及底层方法调用链(二)我们在其中讨论了如何使用第三方强大通用的钩子库 SwiftHook 来协助我们完成 NSObject 构造器 init 的 SWIZZ 操作。我们还讨论了为什么用 print 打印对象信息时会发生崩溃…

Unity 布局元素Layout Element

Layout Element是一种用于控制UI元素在布局组件&#xff08;如Horizontal Layout Group、Vertical Layout Group、Grid Layout Group、Content Size Fitter和Aspect Ratio Fitter&#xff09;中的大小和位置的组件。Layout Element组件可以附加到UI元素上&#xff0c;以便在布局…

opencv各个模块介绍(2)

Features2D 模块&#xff1a;特征检测和描述子计算模块&#xff0c;包括SIFT、SURF等算法。 Features2D 模块提供了许多用于特征检测和描述子匹配的函数和类&#xff0c;这些函数和类可用于图像特征的提取、匹配和跟踪。 FeatureDetector&#xff1a;特征检测器的基类&#xf…

arm 外部中断

main.c: #include"key_inc.h" //封装延时函数 void delay(int ms) {int i,j;for(i0;i<ms;i){for(j0;j<2000;j){}} } int main() {//按键中断的初始化key1_it_config();key2_it_config();key3_it_config();while(1){printf("in main pro\n");delay(1…

查看Linux系统重启的四种基本命令

目录 前言1. last2. uptime3. journalctl4. dmesg 前言 对于排查其原因推荐阅读&#xff1a;详细分析服务器自动重启原因&#xff08;涉及Linux、Window&#xff09; 在Linux中&#xff0c;有多种命令可以查看系统重启的信息 以下是其中一些常用的命令及其解释&#xff1a; …

EasyPOI操作Excel从零入门

教程介绍 我们不造轮子&#xff0c;只是轮子的搬运工。&#xff08;其实最好是造轮子&#xff0c;造比别人好的轮子&#xff09;开发中经常会遇到excel的处理&#xff0c;导入导出解析等等&#xff0c;java中比较流行的用poi&#xff0c;但是每次都要写大段工具类来搞定这事儿…

【新版】系统架构设计师 - 新版架构备考索引<附2023年11月原题回忆>

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 新版架构备考索引机考详情备考索引与方向&#xff08;个人观点&#xff0c;仅供参考&#xff09;总结附&#xff1a;2023年11月改版机试原题简单回忆 架构 - 新版架构备考索引 首先&#xff0c;此…

Spring 简介

1. Spring简介 1.1 Spring 核心设计思想 1.1.1 Spring 是什么&#xff1f; Spring 是包含了众多⼯具⽅法的 IoC 容器。Spring 指的是 Spring Framework&#xff08;Spring 框架&#xff09;&#xff0c;它是⼀个开源框架&#xff0c;Spring ⽀持⼴泛的应⽤场景&#xff0c;它…