点击下方卡片,关注“CVer”公众号
AI/CV重磅干货,第一时间送达
转载自:集智书童标签分配(Label Assignment,LA)的目的是为每个训练样本分配一个正样本和一个负样本的损失权重,LA在目标检测中起着重要的作用。现有的LA方法主要集中于正样本权重函数的设计,而负样本权重直接来自于pos权重。这种机制限制了检测器的学习能力。
本文探索了一种新的加权范式,称为双加权(DW),以分别指定pos和neg权重。首先通过分析目标检测中的评价指标,确定正/负权重的关键影响因素,然后基于它们设计正和负权重函数。
具体来说,正样本权重由其分类和定位之间的一致性程度确定,而负样本权重被分解为2项:它为负样本的概率和其以负样本为条件的重要性。
这种加权策略为区分重要的和不重要的样本提供了更大的灵活性,从而产生更有效的目标检测器。采用所提出的DW方法,FCOS-ResNet-50检测器在COCO上可以达到41.5%的mAP,优于其他现有的LA方法。它在没有附加Trick的情况下,持续地提高了COCO的Baseline。
A Dual Weighting Label Assignment Scheme for Object Detection
论文:https://arxiv.org/abs/2203.09730
Github:https://github.com/strongwolf/DW
目标检测作为一项基本的视觉任务,几十年来一直受到研究人员的广泛关注。目前最先进的检测器大多通过使用一组预定义的Anchor来预测类标签和回归偏移量来执行密集检测。
Anchor作为检测器训练的基本单元,需要分配适当的分类(cls)和回归(reg)标签来监督训练过程。这种标签分配(LA)过程可以看作是为每个Anchor分配损失权重的任务。Anchor的cls损失(reg损失可以类似定义)通常可以表示为:
其中,和分别为正样本和负样本权重,s为预测的分类得分。根据和的设计,LA方法大致可以分为2类:Hard Label Assignment和Soft Label Assignment。
Hard Label Assignment假设每个Anchor都是pos或neg,这意味着并且。该策略的核心思想是找到一个合适的除法边界,将Anchor分成一个正集和一个负集。沿着这一研究方向的划分规则可以进一步分为静态规则和动态规则。静态规则采用预定义的度量标准,如IoU或从Anchor中心到GT中心的距离,以匹配对象或背景到每个Anchor。
这种静态匹配策略忽略了具有不同大小和形状的对象的划分边界可能会有所不同的事实。
近年来,人们提出了许多动态匹配策略。例如,ATSS根据目标的IoU分布来分割目标的训练Anchor。预测感知分配策略将预测的置信度得分作为估计Anchor质量的可靠指标。
但是,静态和动态匹配策略都忽略了样本不同样重要这一事实。目标检测的评价指标表明,最优预测不仅应该具有较高的分类分数,还应该具有准确的定位,这意味着在训练中,分类头和回归头之间具有较高一致性的Anchor应该更为重要。
基于上述动机,研究人员选择了为Anchor分配Soft权重。GFL和VFL是基于IoU定义Soft Label目标,然后通过乘以一个调制因子将其转化为损失权重的2种典型方法。
其他一些工作是通过联合考虑reg分数和cls分数来计算样本权重。现有的方法主要集中于pos加权函数的设计,而负样本权重仅由pos权重推导出来,由于负样本权重提供的新监督信息很少,可能会限制检测器的学习能力。作者认为,这种耦合加权机制不能在更精细的水平上区分每个训练样本。
图1为一个例子。4个Anchor有不同的预测结果。然而,GFL和VFL分别为(B、D)和(C、D)分配了几乎相同的(pos、neg)权重对。GFL还将零pos和负样本权重分配给Anchor A和C,因为每个权重都有相同的cls分数和IoU。由于现有Soft LA方法中的负样本加权函数与pos 1高度相关,具有不同属性的Anchor有时可以被分配几乎相同的(pos,neg)权重,这可能会损害训练后的检测器的有效性。
为了给检测器提供更多的具有判别性的监督信号,作者提出了一种新的Label Assignment方案,称为双加权(DW),从不同的角度指定正负样本的权重,并使它们相互互补。
具体来说,pos的权重是由置信度分数(cls head获得)和reg分数(reg head获得)的组合动态决定的。每个Anchor的负样本权重被分解为2项:
Anchor为一个负样本的概率
当Anchor为负样本时,Anchor的重要性
pos权重反映了cls head和reg head之间的一致性程度,它将推动一致性较高的Anchor在Anchor List中向前移动,而负样本权重反映了不一致程度,并将不一致的Anchor推到Anchor List的后面。
通过这种方法,在推断中,cls得分越高、位置更精确的边界框在NMS之后会有更大的概率保存下来,而那些位置不精确的边界框会排在后面并被过滤掉。如图1所示,DW通过分配不同的Anchor(pos、neg)权重对来区分4种不同的Anchor,从而为检测器提供更细粒度的监督训练信号。
为了给权重函数提供更准确的reg分数,作者进一步提出了一个box细化操作。具体来说,设计了一个学习过的预测模块,基于粗回归图生成4个边界位置,然后将它们的预测结果进行聚合,得到当前Anchor的更新边界框。这个轻量级的模块使能够通过引入适度的计算开销,就可以为DW提供更精确的reg分数。
通过对MSCOCO的综合实验,证明了提出的DW方法的优势。特别是,它在单尺度训练方案下,将基于ResNet-50的FCOS检测器在COCO验证集上的结果提升到了42.2AP,超过了其他LA方法。
将每个Anchor标记为pos或neg样本是训练检测器的关键一步。经典的基于Anchor的目标检测器通过用GT目标测量其IoU来设置Anchor的标签。近年来,Anchor-Free检测器因其简洁的设计和性能而引起了广泛的关注。
FCOS和Foveabox都通过中心采样策略来选择pos样本:靠近GT中心的Anchor被采样为正样本,其他Anchor在训练过程中为负样本或被忽略。上述LA方法对不同形状和大小的GT box采用了固定的规则,这是次优的。
很多学者也提出了一些先进的Label Assignment策略来为每个GT动态选择pos样本:
ATSS从特征金字塔的每一层中选择top-k Anchor,并采用这些top-Anchor的mean+std IoU作为pos/neg划分阈值。
PAA根据cls和reg损失的联合状态,自适应地将Anchor分离为pos/neg Anchor。
OTA通过将分配过程定义为一个最优的运输问题,从全局的角度来处理Label Assignment问题。
基于Transformer的检测器采用一对一的分配方案,为每个GT寻找最佳的pos样本。
Hard Label Assignment平等地对待所有样本,但这与目标检测中的评价指标不太兼容。
由于预测的box在评价中有不同的质量,所以在训练时应该对样本进行不同的处理。许多工作已经被提出来解决训练样本的不平等问题。
Focal Loss对交叉熵损失增加了一个调制因子,以减少分配给分类良好的样本的损失,这将推动检测器专注于困难样本。
Generalized focal loss通过联合考虑cls分数和reg质量,给每个Anchor分配一个Soft weight。
Varifocal loss利用IoU感知的cls标签来训练cls head。
上面提到的大多数方法都集中于计算pos权重,并简单地将负样本权重定义为的函数。
在本文中解耦这个过程,并分别为每个Anchor分配pos和负样本损失权重。大多数Soft Label Assignment方法都会为损失分配权重。有一种特殊的情况下,权重被分配给分数,它可以表述为
典型的方法包括FreeAnchor和Auto assign。
应该注意的是,本文方法与它们有所不同。为了以完全差分的方式匹配Anchor,自动分配中的和仍然接收梯度。然而,在本文的方法中,损失权重是精心设计的,并且完全脱离了网络,这也是加权损失的常用做法。
为了与NMS兼容,一个良好的Dense Detector应该能够预测同时具有较高分类得分和精确位置的一致边界框。然而,如果所有的训练样本都被同等处理,2个head之间就会出现错位:类别得分最高的位置通常不是回归目标边界的最佳位置。这种失调会降低检测器的性能,特别是在高IoU指标下。Soft Label Assignment是通过加权损失来以Soft的方式处理训练样本,是一种试图增强cls和reg head之间的一致性。对于Soft Label Assignment,Anchor的损失可以表示为:
式中,s为预测cls得分,b、b’分别为预测边界框和GT目标的位置,为Smooth L1 Looss、IoU Loss、GIoU Loss等回归损失。可以通过将较大的和分配给具有较高一致性的Anchor,来减轻cls和reg head之间的不一致性问题。因此,这些训练有素的Anchor能够同时预测高cls分数和在推断时的精确位置。
现有的工作通常将设置为等于,主要集中在如何定义一致性并将其整合到损失权重中。
表1总结了在最近的代表性方法中,pos Anchor的和的公式。可以看出,目前的方法通常定义一个度量t来表示2个head在Anchor水平之间的一致性程度,然后将不一致性度量设计为1−t的函数。通过分别添加一个比例因子或,最终将一致和不一致的度量值集成到pos和neg损失权重中。
与上述的和高度相关的方法不同,作者建议以预测感知的方式分别设置pos和neg权重。
具体来说,pos加权函数以预测的cls得分s和预测框与GT目标之间的IoU作为输入,并通过估计cls与reg head之间的一致性程度来设置pos权重。
neg加权函数采用与pos加权函数相同的输入,但将负样本权重表示为以下2项的乘法:Anchor是负样本的概率以及其为负样本时的重要性。这样,具有相似pos权值的模糊Anchor可以接收到具有不同负样本权值的更细粒度的监督信号,这是现有方法中是没有的。
DW框架如图2所示。作为一种常见的实践,首先通过选择GT中心附近的Anchor(中心先验),为每个GT目标构建一个候选正样本集合。候选集合外的Anchor被认为是负样本,不会参与加权函数的设计过程,因为它们的统计数据(如IoU,cls分数)在早期训练阶段非常混乱。候选集内的Anchor将被分配到、和三个权重上,以更有效地监督训练过程。
pos权重应该反映其在分类和定位中准确检测对象的重要性。作者试图通过分析目标检测的评价指标来找出影响这一重要性的因素。在进行COCO测试期间,对一个类别的所有预测都应该通过一个排名指标进行适当的排名。现有的方法通常使用cls评分或cls评分与预测的IoU的组合作为排名指标。每个边界框的正确性将从排名列表的开头开始检查。一个预测将被定义为一个正确的预测的条件如下:
预测的边界框与其最近的GT之间的IoU大于一个阈值θ;
当前框前面没有满足上述条件的框。
总之,只有预测列表中IoU大于θ的第1个边界框才会被定义为pos检测,而所有其他边界框都应该被视为同一GT的假阳性。
可以看出,高排名分数和高IoU是pos预测的充分必要条件。这意味着同时满足这2个条件的Anchor在测试过程中更有可能被定义为pos预测,因此它们在训练过程中应该具有更高的重要性。
从这个角度来看,位置权重应该与IoU和排名得分呈正相关,即和。为了指定pos函数,首先定义一个一致性度量,记为t,来度量这2个条件之间的对齐程度:
其中,β被用来平衡这2个条件。为了促进不同Anchor之间的pos权重拉开距离,这里作者添加了一个指数调制因子:
其中,µ是一个控制不同pos权重的相对间隙的超参数。最后,每个实例的每个Anchor的pos权值由候选集内的所有pos权值之和进行归一化。
p_loc = torch.exp(-reg_loss*5)
p_cls = (cls_score * objectness)[:, gt_labels]
p_pos = p_cls * p_loc
p_pos_weight = (torch.exp(5*p_pos) * p_pos * center_prior_weights) / (torch.exp(3*p_pos) * p_pos * center_prior_weights).sum(0, keepdim=True).clamp(min=EPS)
p_pos_weight = p_pos_weight.detach()
虽然pos权重可以强制一致Anchor具有高的cls分数和大的IoUs,但不一致Anchor的重要性不能用pos权重来区分。如图1所示,Anchor D的位置更好(IoU大于θ),但cls得分较低,而Anchor B的位置较粗(IoU小于θ),但cls得分较高。它们可能具有相同的一致性度t,因此将以相同的pos强度向前推进,这不能反映它们的差异。为了为检测器提供更多的鉴别监督信息,我们建议通过为它们分配更明显的负权重来忠实地表明它们的重要性,这定义为以下2项的乘法。
根据COCO的评价指标,小于θ的IoU是一个错误预测的充分条件。这意味着一个不满足IoU度量的预测边界框将被视为一个负样本检测,即使它有一个很高的cls分数。也就是说,IoU是确定成为一个负样本的概率的唯一因素,用表示。由于COCO采用了0.5~0.95的IoU区间来估计AP,因此边界框的概率应满足以下规则:
在区间[0.5,0.95]内定义的任何单调递减函数都适用于。为简单起见,将实例化为以下函数:
它通过点(0.5,1)和(0.95,0)。一旦确定,参数k和b可以用未确定系数的方法得到。图3绘制了 vs.IoU。具有不同值的IoU。
图3 vs.IoU在推理时,Rank列表中的负样本预测不会影响召回率,但会降低精度。为了延迟这一过程,负样本边界框的Rank应该尽可能落后,也就是说,它们的Rank分数应该尽可能小。基于这一点,Rank得分较高的负样本预测比Rank得分较低的负样本预测更重要,因为它们是网络优化的困难样本。
因此,用表示的负样本的重要性应该是Rank分数的函数。为简单起见,将其设置为:
其中,是表明对重要的负样本应该给予多少优先考虑的一个因素。
最后,负样本权重为:
它与IoU呈负相关,但与s呈正相关。可以看出,对于2个pos权重相同的Anchor,IoU较小的Anchor的neg权重较大。的定义与推理过程很好地兼容,它可以进一步区分具有几乎相同pos权重的模糊Anchor。
p_neg_weight = torch.ones_like(joint_conf)
neg_metrics = torch.zeros_like(ious).fill_(-1)
alpha = 2
t = lambda x: 1/(0.5**alpha-1)*x**alpha - 1/(0.5**alpha-1)
if num_gts > 0:
def normalize(x):
x_ = t(x)
t1 = x_.min()
t2 = min(1., x_.max())
y = (x_ - t1 + EPS ) / (t2 - t1 + EPS )
y[x<0.5] = 1
return y
for instance_idx in range(num_gts):
idxs = inside_gt_bbox_mask[:, instance_idx]
if idxs.any():
neg_metrics[idxs, instance_idx] = normalize(ious[idxs, instance_idx])
foreground_idxs = torch.nonzero(neg_metrics != -1, as_tuple=True)
p_neg_weight[foreground_idxs[0], gt_labels[foreground_idxs[1]]] = neg_metrics[foreground_idxs]
p_neg_weight = p_neg_weight.detach()
neg_avg_factor = (1 - p_neg_weight).sum()
p_neg_weight = p_neg_weight * joint_conf ** 2
由于pos和neg加权函数都以IoU作为输入,更准确的IoU可以促使更高质量的样本,有利于学习更强的特征。作者提出一个Box Refinement操作,基于预测偏移图,其中分别表示从当前Anchor中心到最左边的l、最上面的r、最右边的r和最下面的b边的预测距离,如图4所示。由于靠近物体边界的点更有可能预测准确的位置,所以作者设计了一个可学习的预测模块基于粗边界框为每边生成一个边界点。
图4参照图4,4个边界点的坐标定义为:
其中,
Refine的偏移图O'更新为:
if self.with_reg_refine:
reg_dist = bbox_pred.permute(0, 2, 3, 1).reshape(-1, 4)
points = self.prior_generator.single_level_grid_priors((h,w), self.strides.index(stride), dtype=x.dtype, device=x.device)
points = points.repeat(b, 1)
decoded_bbox_preds = distance2bbox(points, reg_dist).reshape(b, h, w, 4).permute(0, 3, 1, 2)
reg_offset = self.reg_offset(reg_feat)
bbox_pred_d = bbox_pred / stride
reg_offset = torch.stack([reg_offset[:,0], reg_offset[:,1] - bbox_pred_d[:, 0],\
reg_offset[:,2] - bbox_pred_d[:, 1], reg_offset[:,3],
reg_offset[:,4], reg_offset[:,5] + bbox_pred_d[:, 2],
reg_offset[:,6] + bbox_pred_d[:, 3], reg_offset[:,7],], 1)
bbox_pred = self.deform_sampling(decoded_bbox_preds.contiguous(), reg_offset.contiguous())
bbox_pred = F.relu(bbox2distance(points, bbox_pred.permute(0, 2, 3, 1).reshape(-1, 4)).reshape(b, h, w, 4).permute(0, 3, 1, 2).contiguous())
所提出的DW方案可以应用于大多数现有的Dense Detectors。这里采用具有代表性的Dense Detectors FCOS来实现DW。如图2所示,整个网络结构由Backbone、FPN和检测Head组成。按照约定将中心度分支和分类分支的输出乘以最终的cls分数,网络的最终损失是:
其中β是一个平衡因子
其中N和M分别是Anchor的总数,FL是Focal Loss,GIoU回归损失,s时预测的cls得分,b和b'分别是预测框和GT的位置。
pos权重有2个超参数:β和µ;
β在一致性度量t中平衡了cls得分和IoU之间的贡献。随着β值的增加,IoU的贡献程度也在增加。- µ控制着pos权重的相对尺度。与较不一致的样本相比,更大的µ使最一致的样本具有相对较大的pos权重。
在表中展示了通过改变β从3到7和µ从3到8来改变DW的性能。可以看到,当β为5,µ为5时,效果最好。β和µ的其他组合会使AP性能从0.1降至0.7。因此,在其余所有实验中,将β和µ设为5。
作者还进行了几个实验来研究DW对超参数和的鲁棒性,这些参数用于调节负样本权重的相对尺度。使用不同的和组合得到的AP结果范围为41~41.5,如表所示。这意味着DW的性能对这2个超参数不敏感。因此,在所有的实验中都采用了,。
作为目标检测的常见做法,Soft LA只应用于候选集的Anchor。作者测试了3种候选集的构建方法,它们都是基于从Anchor到相应的GT中心的距离r(由特征stride归一化)。
第1种方法是选择距离小于阈值的Anchor。
第2种方法是从FPN的每个级别中选择最前k个最近的Anchor。
第3种方法是给每个Anchor一个Soft中心权重,并将其与wpos相乘。
结果如表4所示。可以看出,AP性能在41.1~41.5之间略有波动,这表明我们的DW对候选袋的分离方法具有鲁棒性。
通过用其他替代方法来研究它的影响,如表所示。可以看到,只使用pos权重会将性能降低到39.5,这表明对于一些低质量的Anchor,只分配它们小的不足以降低它们的Rank分数。它们可以强制以更大的 Rank在后面,在测试期间带来更高的AP。
在不使用或的情况下,分别得到了40.5AP和40.0AP,这验证了这两项都是必要的。正如现有方法所做的,试图用替换实现了40.7AP的性能,比标准DW的低0.8点。
在没有Box Refinement的情况下,DW方法达到41.5AP,这是第1个在不增加FCOS-ResNet-50的情况下,在COCO上实现超过41AP性能的方法。通过Box Refinement,DW可达到42.2AP,如表6所示。表7还显示,Box Refinement可以持续地提高具有不同Backbone的DW的性能。
为了证明DW策略的有效性,将其与其他使用不同加权策略的LA方法进行了比较。结果如表所示。前5行是Hard LA方法,而其他的则是Soft LA方法。
Hard LA的最佳性能是通过OTA,40.7AP。由于OTA将LA作为一个最优规划问题,它将增加训练时间的20%以上。GFLv2利用一个额外复杂的分支来估计定位质量,并在Soft LA方法中获得了41.1AP的第2名性能。
与将权重分配给损失的主流方法不同,将自动分配权重分配给cls分数,并在训练期间通过它们的梯度更新它们。作者尝试分离自动分配中的权重并分配给损失,但只得到39.8和36.6AP,分别比原始性能低0.6和3.8分。这意味着自动分配中的加权方案在适应主流实践时不能很好地工作。
为了进一步了解DW与现有方法的区别,我们在图5中展示了DW的cls评分、IoU、pos和负性权重以及两种代表性方法GFL和VFL的可视化图。可以看出,DW中的pos和负性权重主要集中在GT的中心区域,而GFL和VFL则在更宽的区域上分配权重。这种差异意味着DW可以更多地关注重要的样本,并减少容易获得的样本的贡献,比如那些在物体边界附近的样本。这就是为什么DW对候选包的选择更稳健。
我们还可以看到,中心区域的锚在DW中有不同的(pos,neg)重量对。相比之下,GFL和VFL中的阴性权重与pos权重高度相关。橙色圆圈突出显示的锚点在GFL和VFL中具有几乎相同的pos权重和负权重,而DW可以通过分配不同的权重来区分它们,为网络提供更高的学习能力。
虽然DW可以很好地区分不同Anchor对一个物体的重要性,但它会同时减少训练样本的数量,如图5所示。这可能会影响对小目标的训练效果。如表7所示,DW对小目标的改进不如对大目标的改进高。为了缓解这一问题,作者可以根据目标大小动态设置不同的超参数,以平衡大小目标之间的训练样本。
DW 论文和代码下载
在CVer公众号后台回复:DW,即可下载上面论文和代码
目标检测 交流群成立
扫描下方二维码,或者添加微信:CVer6666,即可添加CVer小助手微信,便可申请加入CVer-目标检测微信交流群。另外其他垂直方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch、TensorFlow和Transformer等。
一定要备注:研究方向+地点+学校/公司+昵称(如目标检测+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群
▲扫码或加微信: CVer6666,进交流群
CVer学术交流群(知识星球)来了!想要了解最新最快最好的CV/DL/ML论文速递、优质开源项目、学习教程和实战训练等资料,欢迎扫描下方二维码,加入CVer学术交流群,已汇集数千人!
▲扫码进群
▲点击上方卡片,关注CVer公众号
整理不易,请点赞和在看