【论文精读】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.rhkb.cn/news/281800.html

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

相关文章

Linux - 应用层HTTPS、传输层TCP/IP模型中典型协议解析

目录 应用层&#xff1a;自定制协议实例 HTTP协议首行头部空行正文http服务器的搭建 HTTPS协议 传输层UDP协议TCP协议 应用层&#xff1a; 应用层负责应用程序之间的沟通—程序员自己定义数据的组织格式 应用层协议&#xff1a;如何将多个数据对象组织成为一个二进制数据串进行…

【探讨】基于卷积神经网络深度学习模型的光场显微三维粒子空间分布重建

光场显微粒子图像测速技术通过单光场相机即可实现微尺度三维速度场的测量&#xff0c;但单光场相机角度信息有限&#xff0c;导致粒子重建的轴向分辨率低、重建速度慢。基于此&#xff0c;提出一种基于卷积神经网络深度学习模型的光场显微粒子三维空间分布重建方法&#xff0c;…

说说你对webpack的理解?解决了什么问题?

文章目录 一、背景二、问题三、是什么参考文献 一、背景 Webpack 最初的目标是实现前端项目的模块化&#xff0c;旨在更高效地管理和维护项目中的每一个资源 模块化 最早的时候&#xff0c;我们会通过文件划分的形式实现模块化&#xff0c;也就是将每个功能及其相关状态数据各…

浅谈如何自我实现一个消息队列服务器(2)——实现 broker server 服务器

文章目录 一、实现 broker server 服务器1.1 创建一个SpringBoot项目1.2 创建Java类 二、硬盘持久化存储 broker server 里的数据2.1 数据库存储2.1.1 浅谈SQLiteMyBatis 2.1.2 如何使用SQLite 2.2 使用DataBaseManager类封装数据库操作2.3 文件存储消息2.3.1 存储消息时&#…

Visual Studio 2022进行文件差异比较

前言 Visual Studio 2022在版本17.7.4中发布在解决方案资源管理器中比较文件的功能&#xff0c;通过使用此功能&#xff0c;可以轻松地查看两个文件之间的差异&#xff0c;包括添加、删除和修改的代码行。可以逐行查看差异&#xff0c;并根据需要手动调整和编辑文件内容以进行…

100个openharmony开源demo:1.日历

准备用开发者手机写100个开源的demo不知道能不能实现&#xff0c;日拱一卒&#xff0c;期待蜕变。 第一个demo&#xff1a;日历&#xff0c;借鉴了网上的日历算法&#xff0c;自己用arkts写了界面和点击事件&#xff0c;各位可根据此demo写自己的日历选择器等组件。 1.目录结…

【Godot 3.5组件】简单血条组件HealthBar

说明 本文原文写自2022年&#xff0c;内容基于Godot3.5。是本人早期进行Godot组件化和自定义节点探索时的产物&#xff0c;当时的代码和思想可能不太成熟&#xff0c;但贴出来&#xff0c;供需要学习组件化基础思路的同学食用。 概述 血条作为一个非常基础和常见的组件&…

【C++】---string的模拟

【C】---string的模拟 一、string类实现1.string类的构造函数2.swap&#xff08;&#xff09;函数3.拷贝构造函数4.赋值运算符重载5.析构6.迭代器7.operator[ ]8.size9.c_str&#xff08;&#xff09;10.reserve&#xff08;&#xff09;11.resize&#xff08;&#xff09;12.p…

【C语言】linux内核pci_enable_device函数和_PCI_NOP宏

pci_enable_device 一、注释 static int pci_enable_device_flags(struct pci_dev *dev, unsigned long flags) {struct pci_dev *bridge;int err;int i, bars 0;/** 此时电源状态可能是未知的&#xff0c;可能是由于新启动或者设备移除调用。* 因此获取当前的电源状态&…

【Apache ShenYu源码】如何实现负载均衡模块设计

ShenYu是一个异步的&#xff0c;高性能的&#xff0c;跨语言的&#xff0c;响应式的 API 网关。有关ShenYu的介绍可以戳这。 一、前瞻 今天我们尝试不同的代码阅读方式&#xff0c;按模块来去阅读源码&#xff0c;看看效果如何。 本次阅读锁定在shenyu-loadbalancer&#xf…

WM8978 —— 带扬声器驱动程序的立体声编解码器(4)

接前一篇文章&#xff1a;WM8978 —— 带扬声器驱动程序的立体声编解码器&#xff08;3&#xff09; 九、寄存器概览与详解 1. 整体概览 WM8978芯片共有58个寄存器&#xff0c;整体总表如下&#xff1a; 2. 详细说明 在此&#xff0c;只介绍WM8978较为常用的那些寄存器。 &…

HBCalculator 程序:通过 VMD 可计算分子动力学模拟中氢键密度和强度的一维和二维分布

分享一个通过 VMD 可计算分子动力学模拟中氢键密度和强度的一维和二维分布程序 HBCalculator。 感谢论文的原作者&#xff01; 主要内容 “氢键是分子系统中关键的非共价相互作用&#xff0c;对生物、化学和能量相关过程产生重大影响&#xff1b;因此&#xff0c;描述氢键信息…

Eureka的介绍和作用,以及搭建

一、Eureka的介绍和作用 Eureka是Netflix开源的一种服务发现和注册工具&#xff0c;它为分布式系统中的服务提供了可靠的服务发现和故障转移能力。Eureka是Netflix的微服务架构的关键组件之一&#xff0c;它能够实时地监测和管理服务实例的状态和可用性。 在Eureka架构中&…

智能合约 之 ERC-20介绍

什么是ERC20 ERC20全称为Ethereum Request for Comment 20&#xff0c;是一种智能合约标准&#xff0c;用于以太坊网络上的代币发行 姊妹篇 - 如何部署ERC20 ERC20的应用场景 代币化资产&#xff0c;例如&#xff1a;USDT 是一种以美元为背书的ERC20代币&#xff0c;每个USDT代…

scDEA一键汇总12种单细胞差异分析方法 DESeq2、edgeR、MAST、monocle、scDD、Wilcoxon

问题来源 单细胞可以做差异分析&#xff0c;但是究竟选择哪种差异分析方法最靠谱呢&#xff1f; 解决办法 于是我去检索文献&#xff0c;是否有相关研究呢&#xff1f; https://academic.oup.com/bib/article/23/1/bbab402/6375516 文章指出&#xff0c;现有的差异分析方法…

Java推荐算法——特征加权推荐算法(以申请学校为例)

加权推荐算法 文章目录 加权推荐算法1.推荐算法的简单介绍2.加权推荐算法详细介绍3.代码实现4.总结 1.推荐算法的简单介绍 众所周知&#xff0c;推荐算法有很多种&#xff0c;例如&#xff1a; 1.加权推荐&#xff1a;分为简单的特征加权&#xff0c;以及复杂的混合加权。主要…

23 OpenCV 直方图比较

文章目录 直方图比较的目的相关性计算 (CV_COMP_CORREL)卡方计算 (CV_COMP_CHISQR)十字计算(CV_COMP_INTERSECT)巴氏距离计算 (CV_COMP_BHATTACHARYYA )compareHist 直方图比较算子示例 直方图比较的目的 直方图比较的目的是衡量两幅图像之间的相似度或差异度。通过计算图像的颜…

Vue 3中实现基于角色的权限认证实现思路

一、基于角色的权限认证主要步骤 在Vue 3中实现基于角色的权限认证通常涉及以下几个主要步骤&#xff1a; 定义角色和权限&#xff1a;首先需要在后端服务定义不同的角色和它们对应的权限。权限可以是对特定资源的访问权限&#xff0c;比如读取、写入、修改等。用户认证&#…

C#非强签名dll搜索顺序

由于不是强签名dll&#xff0c;所以无效考虑全局程序集缓存 (GAC)。 预备工作 新建解决方案ClassLibrary1,新建类库ClassLibrary1,新建控制台程序ShowDllLoc。 利用VS添加引用。 一&#xff0c;利用app.config设置codebase&#xff0c;设置dll的加载路径为&#xff1a;code…

前后端分离项目springsecurity实现用户登录认证快速使用

目录 1、引入依赖 2、创建类继承WebSecurityConfigurerAdapter &#xff08;1&#xff09;重写里面的configure(HttpSecurity http)方法 &#xff08;2&#xff09;重写AuthenticationManager authenticationManagerBean() &#xff08;3&#xff09;密码加密工具 3、继承…