论文解读OTA: Optimal Transport Assignment for Object Detection

news2024/11/17 6:21:10

在这里插入图片描述

CSDN优秀解读:https://blog.csdn.net/jiaoyangwm/article/details/126638775

2021 https://arxiv.org/pdf/2103.14259.pdf

关键解读

在目标检测中标签分配的最新进展主要寻求为每个GT对象独立定义正/负训练样本。在本文中,我们创新性地从全局的角度重新审视标签分配,并提出将分配程序制定为一个最优传输(OT)问题——优化理论中一个被充分研究的课题。具体来说,我们将每个需求方(锚框)和供应商(GT标签)的单位传输成本定义为他们的分类和回归损失加权之和。在公式化后,找到最好的分配方案即为最小传播成本解决最优传输方案,这可以使用Sinkhorn-Knopp迭代求解。在COCO中,一个使用最优传输分配(Optimal Transport Assignmen,OTA)的FCOS-ResNet-50检测器在1x调度器下达到了40.7%的性能,由于目前所有分配方案。在COCO和CrowdHuman数据集上广泛的实验,验证了我们提出的OTA方法的有消息,尤其是它在密集场景下的有效性。实验代码可见于:https://github.com/Megvii-BaseDetection/OTA.

思考起点

1、动态分配锚框,高置信度正样本

2、对于有重合区的GT对象,模糊锚框会传递错误的梯度

在一对多的锚框分配环境下解决标签全局最优分配(供货商<----->需求方标签传输)的问题

核心内容

1、将标签定义为正样本需求方、将背景定义为负样本供给方,每个锚框被定义为需求一个货物(正样本|负样本);

2、定义正样本的传输成本,负样本的传输成本(用于避免模糊锚点的生成);

3、使用Sinkhorn-Knopp迭代解决这个OT问题;

其他关键

1、使用中心先验规则,设定半径将特定距离内的锚点设为正样本需求方;

2、设计Dynamic k估计算法,根据top q个预测框与真实标签的iou,将iou之和累加得到锚框所需的k个正样本

1.Introduction

目前基于CNN的对象检测器[27,30,21,47,33,29,36]通过预测一组预定义的锚点的分类(cls)标签和回归(reg)偏移量来执行一种密集的预测方式。为了训练检测器,为每个锚点定义cls和reg目标是一个必要的过程,这在目标检测中称为标签分配。

经典的标签分配策略通常采用预定义的规则来匹配每个锚点的GT对象或背景。例如,RetinaNet采用IOU阈值来进行pos/neg锚点划分。像FCOS这种 Anchor-free的检测器,将任意GT对象的中心或bbox区域内的锚点视为相应的正例。这种静态分配策略忽略了这样一个事实:对具有不同尺寸、形状或遮挡的对象,它们的pos/neg边界划分应该有所不同。

基于此,人们提出了许多动态分配策略。ATSS提出了根据统计特征为每个GT设置边界。其它最近的研究[48,19,51,16]表明,每个锚框的阈值置信度可以为动态标签分配策略提供帮助,如:高置信度的锚框可以被网络容易的学到,因此倍分配给相关的GT,而另一些不确定【低置信度】的锚框应该被考虑为负样本。这些策略可以为检测器动态的进行pos/neg标签分配,并实现最先进的性能。

然而,为每个没有上下文【只考虑置信度】的GT独立地分配pos/neg样本可能是次优的,就像缺乏上下文可能导致不正确的预测一样。当处理一些歧义锚框(如图1所示这些锚点可以被作为多个GT框的pos样本)时,现有的分配策略主要是基于手工制定的规则(如:最大面积、最大IOU)。我们认为,分配模糊锚框对任意一个GT样本可能引入一些有害的梯度。因此,对于歧义标签分配不是简单的,需要考虑在局部试图之外的信息。因此,一个更好的分配策略应该摆脱对每个GT达到局部最优的习惯,转向全局最优。换个方式描述就是:应该找到图像中所有GT对象的全局高置信度分配。

DeTR是第一个尝试从全局试图考虑标签分配的工作,它采用transformer层替换检测头,并考虑使用匈牙利算法1对1的分配策略,该算法只匹配每个GT的一个预测框和全局最小loss。然而,对于基于CNN的检测器,网络经常会对目标邻近区域产生一些相关的分数,这有利于训练效率。在这种一对多的方式中,使用全局视图分配标签更加完善。

为了在一对多的场景下取得全局最优分配结果,我们提出将标签分配表示为一个最优传输(OT)问题,即优化理论中线性规划(LP)的一种特殊形式。具体来说,我们将每个GT定义为提供一定数量标签的供应商,并将每个锚点定义为需要一个标签的的需求者。如果一个锚框从某个GT中接收到足够数量的正标签,则该锚框称为该GT的一个正锚框。在这种情况下,每个GT提供的正标签数据可以被解释为“GT需要多少个正锚框才能在训练过程中达到更好的收敛”。每个锚框-GT对之间的单位运输成本被定义为它们的cls和reg损失的加权之和。此外,由于锚框也需要考虑负样本的情况,我们引入了另一个供应商——背景,他们提供负的标签,以弥补其他需要的标签。背景和某个锚框的损失仅被定义为它们的分类loss。在公式化后,找到最优标签分配方案即是解决最优传输问题,这可以使用现成的辛克霍恩-克诺普迭代[5]可以快速有效地解决。我们将这种分配策略命名为最优传输分配(OTA)。

在MS COCO [22]基准上进行了全面的实验,从OTA的显著改进证明了其优势。OTA还在一个名为CrowdHuman数据集上[35]上实现了单级检测器的SOTA性能,显示了OTA在不同检测基准上的泛化能力。

2. Related Work

2.1. Fixed Label Assignment

在训练对象检测器之前,确定每个GT或背景应该被分配个那个锚框是一个必要的程序。基于锚点的检测器通常采用一定阈值下的IoU作为分配标准。例如,Faster R-CNN [33]中的RPN分别使用0.7和0.3作为正阈值和负阈值。在训练R-CNN模块时,pos/neg划分的IoU阈值被更改为0.5。基于IoU的标签分配被证明是有效的,并很快被许多更快的R-CNN的变体,如[2,12,20,42,26,49,37],以及许多单级探测器,如[31,32,25,27,23,21]所采用。

近年来,无锚框探测器因其简洁性和高计算效率而备受广泛关注。在没有锚框的情况下,FCOS [38]、Foveabox [17]及其前一代模型[30,14,46]直接将物体中心周围的锚点作为阳性样本,显示出较好的检测性能。另一个无锚的检测器流[18,8,50,45,4]将每个对象视为单个或一组关键点。它们与其他探测器具有不同的特性,因此在我们的论文中将不再进一步讨论。

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

2.2. Dynamic Label Assignment

最近的许多工作试图使标签分配过程更具适应性,旨在进一步提高检测性能。与使用预定义的锚点不同,GuidedAnchoring[40]基于无锚框机制生成锚点,以更好地适应各种对象的分布。MetaAnchor[44]提出了一个锚生成函数,从任意定制的先验框中学习动态锚。NoisyAnchors19]提出了基于分类和定位损失的软标签和锚框重新加权机制。FreeAnchor[48]基于IoU为每个gt构建top-k锚候选点,然后提出一个检测定制的可能性,在每个候选集合内执行pos/neg划分。ATSS [47]提出了一种自适应样本选择策略,该策略采用每个gt的一组最接近锚点的IoU值的平均+标准差作为pos/neg阈值。PAA [16]假设正、负样本的联合损失的分布遵循高斯分布,利用GMM拟合正负样本的分布,然后以正样本分布的中心作为pos/neg划分边界。AutoAssig[51]利用一种完全数据驱动的标签分配方式,通过自动确定在空间和尺度维度上的积极/消极。

这些方法探索了单个对象的最优分配策略,而没有从全局的角度考虑上下文信息。DeTR [3]研究了全局最优匹配的思想。但是他们采用的匈牙利算法只能以一对一的分配方式工作。到目前为止,对于基于CNN的探测器,一个全局最优分配策略仍然未知。

3.Method

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

3.1. Optimal Transport

最佳传输系统(OT)描述了以下问题:假设在一定区域有m个供方和n个需求方,第i个供应商持有 s i s_i si单位的货物,而第j个需求方需要 d j d_j dj单位的货物。每一单位货物从供应商i到需求方j的运输成本用 c i j c_{ij} cij表示。OT问题的目标是找到一个传输规划: π ∗ = { π i , j ∣ i = 1 , 2 , … m , j = 1 , 2 , … n } \pi^{*}=\left\{\pi_{i, j} \mid i=1,2, \ldots m, j=1,2, \ldots n\right\} π={π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 . (1) \begin{array}{ll} \min _{\pi} & \sum_{i=1}^{m} \sum_{j=1}^{n} c_{i j} \pi_{i j} . \\ \text { s.t. } & \sum_{i=1}^{m} \pi_{i j}=d_{j}, \quad \sum_{j=1}^{n} \pi_{i j}=s_{i}, \tag{1} \\ & \sum_{i=1}^{m} s_{i}=\sum_{j=1}^{n} d_{j}, \\ & \pi_{i j} \geq 0, \quad i=1,2, \ldots m, j=1,2, \ldots n . \end{array} minπ s.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.(1)
这是一个可以在多项式时间内求解的线性问题(LP问题)。然而,在我们的例子中,求解线性问题解很困难,涉及到所有尺度上锚点的特征维度的平方。因此,我们通过一个快速迭代的解决方案来解决这个问题,名为辛克霍恩-Knopp5

3.2. OT for Label Assignment

在目标检测的上下文中,假设一个输入图像 I I I m m m个gt目标和 n n n个锚点(跨所有FPN [20]级别),我们将每个gt视为一个拥有k个pos标签的供应商,和每个锚作为需要一个单位的标签的需求者。从 G T i GT_i GTi运输一个pos标签到锚框 a j a_j aj的成本 c f g c^{fg} cfg被定义为他们cls和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 ) , (2) \begin{aligned} c_{i j}^{f g}= & L_{c l s}\left(P_{j}^{c l s}(\theta), G_{i}^{c l s}\right)+ \\ & \alpha L_{r e g}\left(P_{j}^{b o x}(\theta), G_{i}^{b o x}\right), \tag{2} \end{aligned} cijfg=Lcls(Pjcls(θ),Gicls)+αLreg(Pjbox(θ),Gibox),(2)
该loss仅计算标签分配的距离代价,与反向传播无关

其中 θ \theta θ代表模型的参数, 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的包围框。 C i c l s C_i^{cls} Cicls G i b o x G_i^{box} Gibox表示真实类别和 G T i GT_i GTi的真实边框。 L c l s L_{cls} Lcls L r e g L_{reg} Lreg表示交叉熵和IOU损失。我们也可以用Focal损失[21]和GIoU [34]/SmoothL1损失[11]来替代这两个损失。 α \alpha α是平衡系数。

除了正标签分配外,在训练过程中,有大量的锚点被视为负样本。由于最佳运输涉及所有锚框,我们引入了另一个供应商——background,他们只提供负面标签。在标准OT问题中,总供应必须等于总需求。因此,我们将背景可以提供的负标签的数量设置为n−m×k。将一个单位的负标签从背景运输到 a j a_j aj的成本定义为:
c j b g = L c l s ( P j c l s ( θ ) , ∅ ) (3) c_{j}^{b g}=L_{c l s}\left(P_{j}^{c l s}(\theta), \varnothing\right) \tag{3} cjbg=Lcls(Pjcls(θ),)(3)
其中,∅表示背景类。将 c b g ∈ R 1 × n c^{b g} \in \mathbb{R}^{1 \times n} cbgR1×n连接到 c f g ∈ R m × n c^{f g} \in \mathbb{R}^{m \times n} cfgRm×n的最后一行,我们可以得到 c ∈ R ( m + 1 ) × n c \in \mathbb{R}^{(m+1) \times n} cR(m+1)×n 。 因此,供给矩阵s可以被表示为:
s i = { k ,  if  i ≤ m n − m × k ,  if  i = m + 1 (4) s_{i}=\left\{\begin{array}{lll} k, & \text { if } \quad i \leq m \\ n-m \times k, & \text { if } \quad i=m+1 \end{array}\right. \tag{4} si={k,nm×k, if im if i=m+1(4)
因为我们已经有了成本矩阵 c c c, 供给矩阵 s ∈ R m + 1 s \in \mathbb{R}^{m+1} sRm+1, 需求矩阵 d ∈ R n d \in \mathbb{R}^{n} dRn,最优传输规划 π ∗ ∈ R ( m + 1 ) × n \pi^{*} \in \mathbb{R}^{(m+1) \times n} πR(m+1)×n,可以通过现成的Sinkhorn-Knopp迭代解决这个OT问题。 在得到 π ∗ \pi^{*} π后,可以通过将每个锚分配给传输最多标签的供应商来解码相应的标签分配解决方案。后续的过程(例如,基于分配结果计算损失,反向传播)与FCOS [38]和ATSS [47]中的过程完全相同。需要注意到的是,OT问题的优化过程中只包含了一些GPU设备可以加速的矩阵乘法,因此OTA只增加了总训练时间不到20%,并且在测试阶段是0成本的。

3.3. Advanced Designs

Center Prior. 以前的工作[47,16,48]只从有限区域的物体的中心区域选择积极的锚,称为中心优先。这是因为它们遭受大量模糊的锚或者缺失后续过程中的统计数据。我们的OTA不是依赖于统计特征,而是基于全局优化方法,因此自然会抵抗这两个问题。理论上,OTA可以将gts盒子区域内的任何锚框点作为阳性样本。然而,对于像COCO这样的一般检测数据集,我们发现中心先验仍然可以在OTA的训练中受益。强迫检测器集中在潜在的积极区域(即中心区域)可以帮助稳定训练过程,特别是在训练的早期阶段,这将导致更好的最终表现。因此,我们在成本矩阵之前强加了一个中心。对于每个gt,我们根据锚点和gt之间的中心距离从每个FPN级中选择 r 2 r^2 r2个最近的锚点.对于不在 r 2 r^2 r2最接近列表中的锚点,它们在成本矩阵c中的对应条目将需要付出额外的恒定成本,以减少它们在训练阶段被分配为正样本的可能性。在第4节中,我们将证明,尽管OTA像[38,47,48]所做的其他工作一样采用了一定程度的中心优先,但当r设置为一个大值时,OTA始终优于对应的工作。

Dynamic k Estimation 直观地说,每个gt的适当的正锚的数量( s i s_i si在章节3)应该是不同的,并基于许多因素,如物体的大小,尺度,和遮挡条件等。由于很难直接将从这些因子到正锚数的映射函数建模,我们提出了一种简单而有效的方法,根据预测的边界盒和gts之间的IoU值来粗略估计每个gt的适当的正锚数量。具体来说,对于每个gt,我们根据IoU值选择top q个预测。这些IoU值被加起来表示这个gt的正锚点的估计数量。我们称这种方法为动态k估计。这种估计方法基于以下直觉:某一gt的适当正锚数量应该与该gt的良好回归锚数量正相关。在章节4,我们对固定k估计策略和动态k估计策略进行了详细的比较。

OTA的toy版可视化图如图2所示。我们还描述了OTA的完成过程,包括算法1中的中心先验和动态k估计。

4. Experiments

在本节中,我们在MS COCO 2017 [22]上进行了广泛的实验,其中分别包含约118k、5k和20k的train、val和test的图像。对于消融研究,我们在train上训练探测器,并在val集上报告性能。在test上与其他方法进行了比较。我们还将OTA与其他Crowd[35]验证集方法进行了比较,以证明OTA在人群场景中的优越性。

4.1. Implementation Details

如果没有指定,我们使用在ImageNet [6]上预训练的ResNet-50 [13],以FPN [20]作为我们的默认骨干。大多数实验都是用90k次迭代进行训练的,这些迭代记为“1×”,初始学习率为0.01,经过60k和80k次迭代后衰减了10倍。batchsize设置为16。按照一般的做法,在8个gpu上使用SGD [1]对该模型进行训练。

OTA可以用于基于锚框和无锚框的检测器,以下实验主要使用FCOS进行。我们采用Focal loss(做分类) L c l s L_{cls} Lcls和Iou Loss(做回归) L r e g L_{reg} Lreg做损失函数。公式2中的α被设置为1.5。对于反向传播,回归loss被GIou Loss取代,并设置其权重为2。IoU分支守在在YOLOV1被引入,并被PAA[16]在当代一级探测器中证明是有效的。我们采用IOU分支作为实验中的默认组件。动态k估计中的top q个预测值中的q被设置为20,因为我们发现这组参数值在各种情况下可以一致的产生稳定的结果。

1、OTA loss也就是公式二,采用Focal loss和Iou Loss;做反向传播训练时,选用GIou Loss

4.2. Ablation Studies and Analysis

Effects of Individual Components. 在我们提出的方法中验证了每个组件的有效性。为了进行公平的比较,所有检测器的回归损失都乘以2,这被认为是在高IoU阈值[28]下提高AP的有用技巧。如表1所示,当不采用辅助分支时,OTA的性能比FCOS高出0.9%的AP(39.2%的v.s.38.3%)。在加入IoU分支后,这一差距几乎保持不变(39.5% v.s。40.3%和38.8%。分别为39.6%)。最后,动态k将AP推到了最先进的40.7%。在整篇论文中,我们强调OTA可以应用于锚框和无锚检测器。因此,我们也在RetinaNet[21]上采用了OTA,在特征图上只有一个正方形锚点置换。如表1所示,OTA-FCOS和OTA-RetinaNet网络的AP值完全相同,表明OTA在基于锚框和无锚框检测器上的适用性。

Effects of r. 中心先验的半径r的值用于控制每个gt的候选锚点的数量。如果采用一个小的r,只有在物体中心附近的锚点可以被指定为正的,帮助优化过程关注于更有可能提供信息的区域。随着r的增加,候选项的数量也呈二次型增加,导致优化过程中潜在的不稳定性。例如,当r设置为3、5或7时,它们对应的候选锚点数分别为45、125和245( r 2 ∗ 5 r^2*5 r25)。我们研究了ATSS、PPA和OTA在不同r值下的表现,具体如表2所示。

注意到OTA中的最优分配计划是连续的,因此如果 m a x π j ∗ < 0.9 max \pi_j^∗<0.9 maxπj<0.9,我们将锚 a j a_j aj定义为一个模糊锚框。从表2可以看出,对于ATSS,随着r从3到7的变化,模糊锚点的数量显著增加。其性能相应地从39.4%下降至37.2%。对于PAA,模糊锚点的数量对r的敏感性较低,但其性能仍下降了0.8%,说明PAA采用的Max IoU在模糊锚点之前不是理想的。在OTA中,当多个gts倾向于将正标签传输到同一锚点时,OT算法将基于最小全局成本的原则自动解决它们之间的冲突。因此,OTA的模糊锚点的数量仍然很低,并且随着r从3增加到7,几乎没有增加。相应的性能也很稳定。
此外,在执行OTA之前,我们根据手工制作的规则手动分配模糊锚。在这种情况下,OTA只负责pos/neg样品的划分。从表3可以看出,手工规则和OTA的组合使AP分别降低了0.7%和0.4%。最后,我们在图3中可视化了一些分配结果。红色箭头和虚线椭圆突出了模糊的区域(即,不同gt之间的重叠或gt和bg之间的连接)。由于缺乏上下文和全局信息,ATSS和PAA在这些区域表现不佳,导致检测性能次优。相反,OTA在这些区域中分配的正锚点要少得多,我们认为这是一种理想的行为。

Effects of k. 在执行Sinkhorn-Knopp迭代之前,我们需要对于gt供货商定义多少正标签?这个数值还表示每个gt需要更好的收敛需要多少锚点。一种简单的方法是为所有gts将k设置为一个常量值。我们尝试了从1到20的不同的k值。如表4所示,在所有不同的值中,k=10和k=12的性能最好。当k从10增加到20时,锚点同时作为两个接近目标的正样本的可能性也增加,但根据表4没有明显的性能下降(0.2%),这证明了OTA在处理潜在模糊方面的优越性。当k=1时,OTA成为一对一的分配策略,与DeTR中相同。糟糕的性能告诉我们,在1×调度器下通过一对一的分配来实现竞争的性能仍然具有挑战性,除非添加一个辅助的一对一监督。

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

4.3. Comparison with State-of-the-art Methods.

我们将我们的最终模型与其他先进的最先进的一级探测器测试开发进行比较。根据之前的工作[21,38],我们将图像的短边随机放在640到800范围内。此外,我们将总迭代次数加倍到180K,学习率变化点按比例排列。其他设置与[21,38]相一致。

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

4.4. Experiments on CrowdHuman

拥挤场景中的对象检测越来越引起[24,15,9,10]的关注。与为COCO等一般对象检测设计的数据集相比,在拥挤的数据集中发生的模糊性更频繁。因此,为了证明OTA在处理模糊锚点方面的优势,有必要在一个拥挤的数据集上进行实验——在人群中使用的[35]上。CrowdHuman在训练、验证和测试集中分别包含15000、4370和5000张图像,一幅图像中的平均人数为22.6。对于所有的实验,我们训练探测器30个epoch(即2.5x),以获得更好的收敛性。NMS阈值设置为0.6。我们在实验中采用ResNet-50 [13]作为默认的主干,其他设置与我们在COCO上的实验相同。对于验证,我们采用MR指标,这代表每张图像的对数平均缺失率(FPPI),范围为[0.01,1]。AP和Recall都是常见的指标。所有的评估结果都报告在CrowdHuman val上。

如表6所示,RetinaNet和FCOS分别只达到了58.8%和55.0%的Mr,远比更快的R-CNN(带FPN)等两级探测器要差,揭示了人群场景中单级探测器的困境。从自由锚框开始,通过动态标签分配策略逐步提高了监测检测器的性能。ATSS达到了49.5%的Mr,这非常接近于更快的R-CNN的性能(48.7%的AP)。最近提出的LLA [10]利用了损失感知的标签分配,这与OTA类似,实现了47.9%的Mr。然而,我们的OTA向前迈出了一步,将全局信息引入标签分配,将Mr提高到46.6%。OTA的AP和召回率也明显超过了其他现有的单级探测器。

尽管PAA在COCO上与OTA取得了有竞争力的表现,但它在CrowdHuman上表现不佳。我们推测PAA需要明确的pos/neg决策边界来帮助GMM学习更好的集群。但在拥挤的场景中,这种清晰的边界可能不存在,因为潜在的负样本通常覆盖了足够数量的前景区域,从而导致PAA的性能不佳。此外,PAA执行per-gt的聚类,这大大增加了在拥挤的数据集上的训练时间。与PAA相比,OTA任然保持了先进的效果,这证明了OTA在各种检测基准上的优越性。

5. Conclusion

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

A. Appendix.

A.1. Optimal Transport and Sinkhorn Iteration

为了保证本文的完整性,我们简要介绍了Sinkhorn迭代算法的推导,我们强调的不是我们的贡献,而是属于教科书知识。在等式中定义了最优传输问题的数学公式 1.这是一个可以在多项式时间内求解的线性程序。然而,对于密集的探测器,所得到的线性程序很大,涉及到所有尺度上具有锚点的特征维度的平方。这个问题可以通过一个快速迭代的解决方案来解决,它在等式中转换优化目标1变成非线性凸形式,添加熵正则化项E:
min ⁡ π ∑ i = 1 m ∑ j = 1 n c i j π i j + γ E ( π i j ) (5) \min _{\pi} \sum_{i=1}^{m} \sum_{j=1}^{n} c_{i j} \pi_{i j}+\gamma E\left(\pi_{i j}\right) \tag{5} πmini=1mj=1ncijπij+γE(πij)(5)
其中 E ( π i j ) = π i j ( l o g π i j − 1 ) E(\pi_{ij})=\pi_{ij}(log \pi_{ij}-1) E(πij)=πij(logπij1), γ \gamma γ是一个超参数,用于控制正则化项的权重。根据拉格朗日乘子法,得到了等式中的约束优化目标5可以转换为非约束目标:
min ⁡ π ∑ i = 1 m ∑ j = 1 n c i j π i j + γ E ( π i j ) + α j ( ∑ i = 1 m π i j − d j ) + β i ( ∑ j = 1 n π i j − s i ) , (6) \begin{aligned} \min _{\pi} & \sum_{i=1}^{m} \sum_{j=1}^{n} c_{i j} \pi_{i j}+\gamma E\left(\pi_{i j}\right)+ \\ & \alpha_{j}\left(\sum_{i=1}^{m} \pi_{i j}-d_{j}\right)+\beta_{i}\left(\sum_{j=1}^{n} \pi_{i j}-s_{i}\right), \end{aligned} \tag{6} πmini=1mj=1ncijπij+γE(πij)+αj(i=1mπijdj)+βi(j=1nπijsi),(6)
其中, α j ( j = 1 , 2 , … n )  and  β i ( i = 1 , 2 , … , m ) \alpha_{j}(j=1,2, \ldots n) \text { and } \beta_{i}(i=1,2, \ldots, m) αj(j=1,2,n) and βi(i=1,2,,m)是拉格朗日乘数。通过让优化目标的导数为0,将最优方案π∗解析为:
π i j ∗ = exp ⁡ ( − α j γ ) exp ⁡ ( − c i j γ ) exp ⁡ ( − β i γ ) \pi_{i j}^{*}=\exp \left(-\frac{\alpha_{j}}{\gamma}\right) \exp \left(-\frac{c_{i j}}{\gamma}\right) \exp \left(-\frac{\beta_{i}}{\gamma}\right) πij=exp(γαj)exp(γcij)exp(γβi)
、、、、、、、未完成。

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

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

相关文章

SpringCloudAlibaba商城实战项目(day01)

前言 闲来无事在B站找了一个项目&#xff0c;是谷粒商城的项目&#xff0c;于是乎照着在敲这个项目&#xff0c;特此记录一下。会持续更新到这个项目敲完。这个记录偏向小白向&#xff0c;确保你照着敲也可以完成所有项目的搭建。 一、简介 1.1、项目架构图 1.2、服务列表 …

CAN Bus cable simulation

REF&#xff1a;CAN总线标准接口与布线规范 https://zhuanlan.zhihu.com/p/34333969高速CAN总线物理层对线束的要求 https://www.suncve.com/the-requirement-of-physical-layer-of-can-bus-for-wiring-harness/利用LTSPICE 做仿真&#xff0c; 选用的是 ADI的 CAN transceiver…

RabbitMQ快速入门之进阶

RabbitMQ快速入门之进阶 进阶RabbitMQ快速入门之进阶1、confirm 模式的设置2、return 退回模式的处理3、消费者 Ack&#xff0c;手动确认4、消费端限流 (流量削缝)5、TTL存活时间过期时间6、死信队列DLX7、延迟队列 &#xff08;TTL DLX&#xff09;1、confirm 模式的设置 *c…

VSCode使用Clangd

前言 在使用微软的C/C插件时&#xff0c;遇到较大项目时&#xff0c;代码提示速度非常的慢&#xff0c;这时可以使用clangd 1、系统安装clangd 版本选择&#xff1a;Linux github仓库: https://github.com/clangd/clangd/releases 解压下载好的安装包&#xff1a; unzip cla…

Python实现小米蓝牙温湿度计2 Home Assistant 自定义组件源码

小米 米家蓝牙温湿度计2 这是一个Home Assistant自定义组件&#xff0c;用于 Home Assistant 通过 蓝牙适配器 直接集成 小米 米家蓝牙温湿度计 (LYWSDCGQ/01ZM) 和 米家蓝牙温湿度计2 (LYWSD03MMC)。 v0.2.0-dev版本以后&#xff0c;已经支持自动发现功能&#xff0c;不需要…

Leetcode:501. 二叉搜索树中的众数(C++)

目录 问题描述&#xff1a; 实现代码与解析&#xff1a; 通用写法&#xff08;递归&#xff09;&#xff1a; 原理思路&#xff1a; 依据二叉搜索树特性写法&#xff08;递归&#xff09;&#xff1a; 原理思路&#xff1a; 迭代&#xff1a; 原理思路&#xff1a; 问题…

Android Compose——一个简单的新闻APP

Owl简述效果视频导航导航结点路线图底部导航栏使用标签页状态切换FeaturePage构建CoursePage实现搜索ViewModelView详情页DetailDescribeLesson尾Gitte简述 此Demo是参考Google Github其中一个Demo而完成&#xff0c;涉及的内容并不复杂&#xff0c;主要是为了熟悉Compose编码…

2022爱分析・出海数字化系列报告之“出海实时互动与通信”厂商全景报告 | 爱分析报告

报告编委 张扬 爱分析联合创始人&首席分析师 文鸿伟 爱分析高级分析师 王鹏 爱分析分析师 目录 研究范围定义厂商全景地图市场分析与厂商评估入选厂商列表研究范围定义 研究范围 改革开放四十多年来&#xff0c;中国企业经历了自商品出海到当前的品牌出海&#xff0c;出海…

Servlet的使用

作者&#xff1a;~小明学编程 文章专栏&#xff1a;JavaEE 格言&#xff1a;热爱编程的&#xff0c;终将被编程所厚爱。 目录 什么是Servlet&#xff1f; 创建一个Servlet程序 1.创建一个Maven项目 2.引入依赖 3.创建目录 4.编写代码 5.打包 6.部署程序 7.验证程序 …

Rust如何进行模块化开发?

类似es6的模块化&#xff0c;Rust通过package、create、module来实现代码的模块化管理 Rust如何进行模块化开发&#xff1f; Rust的代码组织包括&#xff1a;哪些细节可以暴露&#xff0c;哪些细节是私有的&#xff0c;作用域内哪些名称有效等等。 而这些功能被统称为模块系统…

晒成绩单了,百度智能云交出2022年终大考试卷!

晒成绩单了&#xff0c;百度智能云交出2022年终大考试卷&#xff01; 2023年伊始&#xff0c;工厂加快步伐复工复产、城市烟火气涌现、消费活力加速释放&#xff0c;企业对未来发展呈现乐观预期。有外媒称&#xff0c;“中国经济将实现比预期更快的复苏””。 站在更宏观的视…

java入门到废为止

目录基础数据变量类型数据类型基本类型上下转型引用类型类型对比装箱拆箱缓存池输入数据数组初始化元素访问内存分配数组异常二维数组运算参数形参实参可变参数方法方法概述定义调用注意事项方法重载重载介绍方法选取继承重载参数传递枚举Debug对象概述类定义构造器包封装thiss…

【React】二.JSX

目录 二.JSX JSX的基本使用 jsx使用步骤 JSX中使用JavaScript表达式 嵌入JS表达式 注意点 JSX的条件渲染 问题记录 JSX的列表渲染 JSX的样式处理 总结 二.JSX JSX的基本使用 createElement()的问题繁琐不简洁不能直观看出所描述的结构不优雅&#xff0c;用户体验不佳…

Java设计模式-代理模式Proxy

介绍 代理模式是一种比较好理解的设计模式。简单来说就是 我们使用代理对象来代替对真实对象(real object)的访问&#xff0c;这样就可以在不修改原目标对象的前提下&#xff0c;提供额外的功能操作&#xff0c;扩展目标对象的功能。 代理模式的主要作用是扩展目标对象的功能&a…

Linux编译器-gcc/g++的使用

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;Linux &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容主要介绍了Linux编译器g/gcc的相关使用方法&#xff0c…

Linux学习笔记——分布式内存计算Flink环境部署

5.13、分布式内存计算Flink环境部署 5.13.1、简介 Flink同Spark一样&#xff0c;是一款分布式内存计算引擎&#xff0c;可以支撑海量数据的分布式计算。 Flink在大数据体系同样是明星产品&#xff0c;作为最新一代的综合计算引擎&#xff0c;支持离线计算和实时计算。 在大…

libcurl库及curl API的简介

目录 一、libcurl简介 二、curl API简介 三.库安装编译方法 内容来源&#xff1a;Http协议之libcurl实现 - 谢呈勖 - 博客园 (cnblogs.com) 一、libcurl简介 libcurl是一个跨平台的网络协议库&#xff0c;支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。…

当 Rainbond 遇上龙蜥!小龙带你玩转一站式云原生,点击开启

Rainbond 是一个云原生应用管理平台&#xff0c;使用简单&#xff0c;不需要懂容器、Kubernetes 和底层复杂技术&#xff0c;支持管理多个 Kubernetes 集群&#xff0c;和管理企业应用全生命周期。主要功能包括应用开发环境、应用市场、微服务架构、应用交付、应用运维、应用级…

Golang的Fork/Join实现

做过Java开发的同学肯定知道&#xff0c;JDK7加入的Fork/Join是一个非常优秀的设计&#xff0c;到了JDK8&#xff0c;又结合并行流中进行了优化和增强&#xff0c;是一个非常好的工具。1、Fork/Join是什么Fork/Join本质上是一种任务分解&#xff0c;即&#xff1a;将一个很大的…

FPGA图像处理HLS实现RGB转灰度,提供HLS工程和vivado工程源码

目录一、图像RGB转灰度原理二、HLS方案实现三、HLS在线仿真并导出IP四、Kintex7开发板vivado工程验证五、zynq7100开发板vivado工程验证六、板级调试验证七、福利&#xff1a;工程源码获取一、图像RGB转灰度原理 图像rgb转灰度图有固定的公式&#xff0c;具体公式csdn一大堆&a…