前言
在大部分目标检测方法中,分类和定位的处理方法是不同的。给定一个proposal,预测的每个类标签的概率就作为这个proposal的分类置信度(classification confidence),而bbox回归模块只是预测了针对该proposal的变换系数,使该proposal更接近gt box,以拟合目标的位置。在这个过程中,定位置信度(localization confidence)并没有被考虑进来,这就会带来两个缺点:
-
在抑制重复检测时忽略了定位精度,而只使用分类置信度对proposal进行排序。在下图中,黄色的bbox是gt,红色和绿色的bbox是检测结果,可以看到一些检测结果虽然分类置信度很高,但它们与相应的gt之间的IoU却很小。而分类置信度与定位精度之间这种不能匹配的问题,可能会导致在NMS过程中选出的是定位不准确的bbox,而过滤掉那些定位更准确的bbox。
-
定位置信度的缺失,可能会使得bbox回归缺少可解释性。之前的一些研究证明了bbox回归在迭代过程中的非单调性,也就是说,如果多次应用bbox回归,可能会损害输入bbox的定位效果。
本文提出了IoU-Net,通过预测检测结果与相应gt box之间的IoU,使得网络能像分类模块那样,也对定位精度有所掌握。通过使用这个预测的IoU也可以解决前面提到的问题:
- IoU对于定位精度来说是一种天然标准,可以用这个预测的IoU替换分类置信度作为NMS操作中的排序依据,从而消除分类置信度的误导性,得到更准确的检测结果。
- 提出一种基于优化的bbox调整方法,在inference时,将预测的IoU作为优化目标,也作为定位置信度的可解释性指示量。Precise RoI Pooling层使得研究者可以利用梯度上升来处理IoU优化问题。实验证明,与基于回归的方法相比,基于优化的bbox调整方法能实现定位精度的提升。
IoU-Net的结构
上图是IoU-Net的整体结构,虚线框内的模块构成了一个单独的IoU-Net,以FPN作为backbone,将RoI Pooling层替换为PrRoI Pooling层。在训练IoU-Net时,使用一组随机参数对gt box进行变换,得到一组候选bbox,也就是图中的Jittered RoIs,然后过滤掉其中与gt box的IoU<0.5的bbox,在剩下的bbox中采样训练数据,作为PrRoI Pooling层的输入。对于每个bbox来说,它的特征来自FPN的输出和PrRoI Pooling层的处理,然后这些bbox被送入IoU predictor中。
由于IoU-Net的训练过程相对于检测器来说是独立的,因此它可以与不同的检测器结合,并且鲁棒性很强。
IoU-guided NMS
本文提出了一种IoU-guided NMS来解决分类置信度与定位精度之间的不匹配问题。具体来说就是,使用预测的IoU替换分类置信度,作为NMS操作时的排序依据。这样在进行NMS时,选出与gt之间的IoU最高的那个bbox b m b_m bm,它的分类置信度为 s s s,将那些与 b m b_m bm的IoU大于阈值的bbox过滤掉,若某个bbox b j b_j bj的分类置信度高于 b m b_m bm,则更新 b m b_m bm的分类置信度为: s = m a x ( s , s j ) s=max(s,s_j) s=max(s,sj