【CV】PAA论文解读:在物体检测中利用概率分布来将anchor分配为正负样本
共 3655字,需浏览 8分钟
·
2021-08-01 12:19
本文转自|机器学习初学者
导读
又一篇anchor匹配策略的文章,不过确实是简单有效,在ATSS上只需要很小的修改就可以提升性能。GFL2在框的预测上用上了概率分布,这里又在anchor匹配上用上了概率分布。
代码:https://github.com/kkhoot/PAA
论文:https://arxiv.org/abs/2007.08103
摘要:文章提出了一种新的anchor分配机制,根据模型的学习状态,自适应的将anchor分配成正负样本。我们首先计算anchor在当前模型条件下的得分,然后用这些得分拟合一个概率分布出来,然后利用这个概率分布来区分正负样本,然后模型再用这些正负样本进行训练。然后,我们研究了训练和推理之间的gap,提出了用预测IoU的方式来作为定位质量的度量。我们把定位质量得分和分类得分结合起来用到NMS中来进行anchor的分配。这个方法只需要增加一个卷积层,而且每个位置不需要多个anchor,所以非常的高效。
1. 介绍
对原有的基于anchor和gt的IoU的正负样本的分配规则进行了扩展,考虑到了模型的当前的状态信息,这样的话,正样本的分配是和模型有关的,当没有一个anchor和gt有较高的IoU的时候,需要把一些anchors分配为正样本,来降低由于anchor设计的不合理造成的影响。在这种情况下,模型认为的最优的anchor可以作为正样本。另外,当有太多的anchors模型都认为质量很高的时候,这些anchor都可以认为是正样本。因此,最重要的是,为了满足这些条件,anchor的质量评估需要可以反映出模型当前的学习状态,也就是其参数值。
基于这个动机,我们提出了probabilistic anchor assignment(PAA)策略,自适应的将所有的anchor分配成正负样本。首先,我们定义一个得分,可以反映出检测框分类和定位的质量,然后,我们识别出这个得分和训练时候两个损失之间的关系。基于这种评分方法,我们为每个anchor都进行打分,得到模型认为的这个anchor是否对于检测目标物体非常有用的评价。基于这些anchor得分,我们可以得到两种形式的概率分布,可以最好的表示出模型是正样本或者是负样本的概率。如图1,然后,在找到的概率分布下,选择那些正样本概率高的作为正样本。这样的话,就把anchor分配的问题变成了最大似然估计问题。基于这种假设,模型计算出来的得分是从这个概率分布中采样出来的,我们期望模型可以从概率的角度去infer具有可分性的样本,让训练变得更加容易。另外,由于正样本是从anchor得分的概率分布中选择出来的,因此,不需要预先设置正样本的数量和IoU的阈值。
另外,我们发现在训练和测试的时候,存在不一致的情况,训练的时候需要同时优化分类和定位,在测试的时候,只根据分类得分来选择框。理想情况下,检测框的质量应该是由分类和定位一起决定的,为了解决这个问题,我们提出了预测IoU的值来作为定位质量,然后将这个IoU的预测值乘上分类得分,来对框进行排序。如图2:
本文贡献如下:
1、提出了一种新的anchor框的分配策略,计算模型得分的概率分布,用最大似然来估计这个概率分布,自适应的选取正负样本。
2、为了对齐anchor分配,优化和后处理过程,提出对IoU进行预测,同时使用分类和定位得分一起来对检测框进行排序来做NMS,最后,我们提出了一种得分投票的方法来进一步提升performance。
3、进行了消融实验,进一步验证了我们方法的有效性。
2. 方法
2.1 基于概率分布的anchor分配策略
我们这个anchor的匹配策略应该关注一下几点:首先,应该可以度量给定anchor的质量,基于使用这个anchor可以用来预测这个目标的线索的多少来定义这个质量。第二,anchor的正负样本的分割应该是要可以自适应的,最后,这个匹配策略的表示形式应该是一个概率分布的最大似然估计,这样模型可以从概率的方式来实现这个anchor的分配。因此,我们设计了一个anchor的评分方法和一个anchor的分配策略。
具体来说,我们先定义这个anchor的质量评分,这个评分应该可以反映出这个预测框预测离它最近的那个GT的时候的质量,一个直觉的方法计算分类得分定位得分,并相乘:
得分可以从分类的head中得到,但是如何定义不是很明显,因为定位的分支给出的是坐标的offset,而不是得分,这里,我们使用这个预测框和GT的IoU作为:
对这个质量得分取负log,我们可以得到:
其中,和分别是二元交叉熵损失和IoU损失,也可以替换为Focal Loss和GIoU Loss,这两个Loss的和可以认为是给定的anchor对于GT的质量评分函数。
为了让模型可以从概率的方法分配这个anchor到底是正样本还是负样本,我们把这个anchor对于给定GT的得分看成是从一个分布中采样得到的,然后用最大似然的方法来估计这个分布的参数,然后,通过这个概率分布来将anchor分配为正负样本。由于我们的目的是将anchor分为两组,正样本和负样本,任意可以建模这个多峰分布的概率分布都可以满足,这里我们选择了GMM(高斯混合模型),用两个高斯分布来建模这个anchor的得分分布。
给定一组anchor得分,我们使用EM算法来估计这个概率分布的参数。
得到了这个概率分布之后,就可以用各种方法来分出正负样本,图3给出了不同的分割方法。为了计算这个anchor的得分,先将anchor分配到具有最高IoU的GT上,为了让EM算法更加高效,我们从每个特征level上选择了topk个anchor,然后进行EM的估计,topK之外的anchor被分配为负样本。
正样本数量是由这个概率分布自适应的决定的,这个是和其他不利用模型状态的分配方法的最大的区别。
总结一下我们这个方法,并将其嵌入到训练过程和目标函数中,如下:
2.2 IoU预测作为质量评分
在训练的时候,anchor的得分是从训练目标中得到的(包括两种loss),但是在推理的时候,NMS只使用分类的得分,为了改进这个问题,可以预测一个质量得分,这样,训练时候的评分函数可以直接用到推理的NMS的时候。这只需要一个额外的卷积层就可以实现,用sigmoid进行激活,得到合理范围内的IoU的预测,训练目标现在变成:
实验表明,在推理时使用预测的IoU值可以显著提升performance。
2.3 评分投票
这是一个简单有效的后处理步骤,在NMS之后,对于每个留下来的预测框b,我们进行如下操作:
其中,si是评分,σt是超参数用来调整近邻的框b的权重。我们发现,使用pi作为框的权重本身已经可以有提升,使用pi和si相乘可以进一步提升。
3. 实验
不同正负样本分割策略的效果以及单独方法的效果:
和其他自适应anchor的方法的对比以及不同backbone的对比:
正样本数量的稳定性的对比:
和其他sota方法的对比:
4. 个人总结
在目标检测中,anchor匹配被认为是可以有效提升效果的方向之一,最近在这个方向上的研究也挺多的,自适应匹配应该是一个趋势,但是感觉对anchor的评价基本上还是在用分类得分和IoU,希望可以看到有更好的可以将anchor分配为正负样本的指标出现。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~