IoU-aware single-stage object detector for accurate localization论文阅读笔记

(一)Title

在这里插入图片描述
前言:这篇文章提出了classification score和IoU之间不相关的问题,通过预测detected boxes和Ground Truth之间IoU,并在Inference阶段同时使用预测的IoU和classification score得到一个新的检测置信度,在新的检测置信度基础上进行NMS和AP的计算。

(二)Summary

作者指出目前single-stage检测器存在的问题:classification score和localization accuracy之间的低相关性使得模型性能无法得到提升,为了解决这个问题,提出了IoU-aware single-stage object detector,
核心做法是:

对每一个预测的bounding box,同时预测一个IoU,然后用这个IoU乘上classification score作为最终的检测置信度,使用这个检测执行度来进行后续的NMS操作,通过这个IoU使得我们的预测更加准确。作者通过实验也说明了这一点

性能表现:

在COCO test-dev上AP检测性能提升了1.7%-1.9%,AP75提升了2.2%-2.5%。同时在PASCAL VOC上AP提升了 2.9%–4.4% ,AP80, AP90 by 4.6%–10.2%。从后面COCO的实验结果上Table4来看,我们发现AP升了,AP50降了,AP70,80,90之间的差距变小了,作者提出的方法能够提升网络更加准确的框选目标的能力

本文的主要贡献是:

  • 提出 IoU-aware single-stage object detector,用于解决classification score和localization accuracy之间不匹配的问题(分类和回归使用单独的目标函数进行训练,使得存在着高classification socre却对应低IoU,低classification 对应高IoU的预测结果,使用NMS时会造成性能上有损害),模型的性能,特别是定位精度可以大大提高,而不牺牲效率。
  • 本文进行大量实验,分析了我们方法的工作原理、performance bound以及我们预测的IoU和真实的IoU之间的差异。

(三)Research Object

作者指出single-stage的网络在性能上赶不上multi-stage的网络,但是其简单、高效的特点在实际应用中很受欢迎,因此,作者希望能够提升single-stage检测器的性能,作者这里指出single-stage 检测器classification score和localization accuracy之间的低相关性在一定程度上影响了性能。关于低相关性产生原因以及为什么低相关性会影响性能在后面的Notes 8.1小结有详细的叙述。

作者基于RetinaNet,引入了An IoU prediction head这个IoU 预测head parallel with the regression head is attached to the last layer of the regression branch。相当于现在有了3个头,这个IoU预测头和classification头以及regression头联合进行训练。接着在预测时, classification score和predicted IoU相乘作为检测置信度,从而使得检测置信度和定位精度之间的相关性更强

(四)Problem Statement

当前single-stage 在做inference的时候需要使用NMS来对神经网络输出的bounding boxes进行筛选,目前筛选时主要考虑classification score,但是由于我们的classification score和localization regression是分开训练的,因此,可能会出现high classification score 但是 low iou,或者是high IoU 但是low classification score的情况,导致classification score 和localization quality estimation之间相关性较差,使得网络预测的bounding boxes在AP上的表现较差。

针对该问题,作者提出了通过预测每一个detected boxes的IoU,然后使用预测的IoU乘上classfication score来作为NMS最终的筛框标准,从而在一定程度上提升了AP。

(五)Method

在这里插入图片描述
作者使用RetinaNet相同的backbone以及特征金字塔结构,不同的是在最后的输出上,作者增加了一个IoU Prediction Head,用于预测IoU。并在inference阶段使用Classification score乘上预测IoU作为最终NMS筛框的准则。

5.1 损失函数

分类损失使用Focal Loss
L c l s = 1 N P 0 S ( ∑ i ∈ P o s N F L ( p i , p ^ i ) + ∑ i ∈ N e g M F L ( p i , p ^ i ) ) L_{c l s}=\frac{1}{N_{P 0 S}}\left(\sum_{i \in P o s}^{N} \mathrm{FL}\left(p_{i}, \hat{p}_{i}\right)+\sum_{i \in N e g}^{M} \mathrm{FL}\left(p_{i}, \hat{p}_{i}\right)\right) Lcls=NP0S1iPosNFL(pi,p^i)+iNegMFL(pi,p^i)
回归损失使用smooth L1 Loss
L l o c = 1 N P 0 S ∑ i ∈ P 0 N ∑ m ∈ C X , c , w , h  smooth  L 1 ( l i m − g ^ i m ) L_{l o c}=\frac{1}{N_{P 0 S}} \sum_{i \in P_{0}}^{N} \sum_{m \in C X, c, w, h} \text { smooth }_{\mathrm{L} 1}\left(l_{i}^{m}-\hat{\mathrm{g}}_{i}^{m}\right) Lloc=NP0S1iP0NmCX,c,w,h smooth L1(limg^im)
重头戏:IoU prediction loss 使用的是BCE(但是Ground Truth不是0,1)
并且仅仅对正样本计算损失
L l o U = 1 N P o s ∑ i ∈ P 0 S N B C E ( I o U i , I O ^ U i ) = 1 N P o s ∑ i ∈ P 0 S N [ − I O ^ U i ∗ l o g ( 1 − I o U i ) − ( 1 − I O ^ U i ) ∗ l o g ( 1 − I O U i ) ] L_{l o U}=\frac{1}{N_{P o s}} \sum_{i \in P_{0} S}^{N} \mathrm{BCE}\left(I o U_{i}, I \hat{O} U_{i}\right) = \frac{1}{N_{P o s}} \sum_{i \in P_{0} S}^{N}[- I \hat{O} U_{i}*log(1-I o U_{i})-(1-I \hat{O} U_{i})*log(1-I O U_{i})] LloU=NPos1iP0SNBCE(IoUi,IO^Ui)=NPos1iP0SN[IO^Uilog(1IoUi)(1IO^Ui)log(1IOUi)]
其中这个 I o ^ U i I \hat o U_{i} Io^Ui表示的是预测bounding box和Ground Truth之间真正的IoU,这个值是[0,1]之间的,而 I O U i I {O} U_{i} IOUi是网络输出的预测IoU值。
计算BCE Loss对 I O ^ U i I \hat{O} U_{i} IO^Ui的梯度结果为:
∂ B C E ( I o U i , I O ^ U i ) ∂ I U ^ U i = log ⁡ 1 − I o U i I o U i \frac{\partial \mathrm{BCE}\left(I o U_{i}, I \hat{O} U_{i}\right)}{\partial I \hat{U} U_{i}}=\log \frac{1-I o U_{i}}{I o U_{i}} IU^UiBCE(IoUi,IO^Ui)=logIoUi1IoUi
这里有一点疑问就是:一般的BCE损失是 − y ∗ l o g ( y ^ ) − ( 1 − y ) ∗ l o g ( 1 − y ^ ) -y*log(\hat y)-(1-y)*log(1-\hat y) ylog(y^)(1y)log(1y^),其中y为真实值, y ^ \hat y y^为预测值,上文中给出的BCE,这边的符号有一点乱用了,一般 I O ^ U I \hat O U IO^U表示预测值,作者这里却用来表示真实的IoU。
对应的梯度图像为:
在这里插入图片描述
作者从这个图中指出两个发现为:

  • 对于正样本来说,预测的IOU一般不会小于0.5,此时,从上图中看到的梯度是非正的,因此,沿着梯度方向会使真实的IoU值( I O ^ U I \hat O U IO^U)向着逐渐增大的方向前进
  • 预测的IoU( I O U I O U IOU)增加,网络会向着损失减小的位置移动,从而使得真实的IOU I O ^ U I \hat O U IO^U增加,这怎么看出来减小了预测IoU和真实IoU I O ^ U I \hat O U IO^U之间的gap?并且使得预测的IoU和真实的IoU I O ^ U I \hat O U IO^U之间更加相关呢?

在训练过程中,IoU 预测头是和classfication head以及regression head联合进行训练的。

5.2 Inference 阶段

在Inference阶段,我们将预测的IOU I o U i IoU_{i} IoUi乘上classification score p i p_i pi作为最终的置信度分数 S d e t S_{det} Sdet
S d e t = p i α I o U i ( 1 − α ) S_{d e t}=p_{i}^{\alpha} I o U_{i}^{(1-\alpha)} Sdet=piαIoUi(1α)
其中 α \alpha α是调节classification score 以及 Predicted IoU之间的权重项。

(六)Experiment

6.1 实验设置

使用数据集为MS COCO,PASCAL VOC,对于所有的实验,使用的度量包括:
A P AP AP: averaged AP at IoUs from 0.5 to 0.95 with an interval of 0.05
A P 50 AP_{50} AP50:AP at IoU threshold 0.5
A P 75 AP_{75} AP75:AP at IoU threshold 0.75
A P S AP_S APS:AP for objects of small scales
A P M AP_M APM:AP for objects of medium scales
A P L AP_L APL:AP for objects of large scales

6.2 我们和state-of-art的比较

在这里插入图片描述
其中"+"表示的在计算 L I O U L_{IOU} LIOU梯度的时候,对 I O ^ U I \hat O U IO^U(这个相当于真实的IoU的值)也计算梯度,这样能够得到更好的效果,相比与baseline,我们的AP提升了1.7%~1.9%,AP75大幅提升,达到了2.2% ~ 2.5%,AP50提升在0.7% ∼ 2.3%之间

6.3 我们的Ablation Studies

IoU 预测损失的选择
在这里插入图片描述
从上图中可以看出,使用BCE Loss带来的提升效果最好,作者在接下来的实验中使用BCE Loss进行实验。

最终检测置信度的计算超参数 α \alpha α
不计算 L I O U L_{IOU} LIOU对真实IOU I O ^ U I \hat O U IO^U的梯度
在这里插入图片描述
计算 L I O U L_{IOU} LIOU对真实IOU I O ^ U I \hat O U IO^U的梯度,来自IoU prediction head的梯度会反向传递到regression head。
在这里插入图片描述

6.4 在PASCAL VOC上的Ablation 实验

在这里插入图片描述
在PASCAL VOC上同样验证了我们的实验结果。

6.5 关于我们网络的一些讨论情

我们模型的upper bound
使用真实的IoU值来代替预测的IoU值,得到了该网络能够实现的理想情况:
在这里插入图片描述
可以看出预测的IoU和真实的IoU之间存在着较大的性能差异,作者指出原因为:我们的预测IoU在精度上和真实的IoU之间存在着较大差异,如果能够减小这个差异,就可以提升网络性能。

为什么我们的IoU-aware RetinaNet能够提升模型性能?
首先定义符号: I o U e v a l IoU_{eval} IoUeval:定义为Inference阶段,每一个detected boxes,有一个类别,我们计算这个detected box和该类别下所有Ground Truth之间的IoU,我们将最大的那个IoU定义为 I o U e v a l IoU_{eval} IoUeval
在这里插入图片描述
从上图中可以看出,提出预测IoU和真实IoU之间存在很大差异,上图中的b图相比于a的变换较小。为模型性能提供了很大的改进空间。
一个很有趣的现象是,上图中的c,在 I o U e v a l IoU_{eval} IoUeval很小时,Detection confidence比较大,意味着此时的 I o U T r u t h IoU_{Truth} IoUTruth比较大,但是可能存在着类别分错的问题,使得 I o U e v a l IoU_{eval} IoUeval显得很小。
在这里插入图片描述

(七)Conclusion

在这项工作中,作者说明了single-stage object detection在Classification score和Localization Quality之间的低相关性会严重损害模型的性能(mAP)。因此,作者提出的IoU-aware single-stage object detector是通过在regression分支的最后一层添加IoU Prediction head来预测每个detected box 的IoU。使得模型知道每个detected box的localization Quality。在推断过程中,通过将分类分数和预测IoU相乘最为最终的检测置信度,然后在随后的NMS和AP计算中使用该置信度对所有检测进行排序。

(八)Notes

8.1 classification score和localization accuracy之间低相关性产生的原因

分类子网络和localization子网络使用彼此独立的目标函数进行训练,在不知道预测bounding box和真实Ground Truth之间的IoU就给出了预测的classification score时,因此导致了往往会出现那种IoU分数很低,但是类别置信度很高的检测目标。或者是IoU分数很高,但是预测的类别分数却很低的,从而导致了下图所示的问题:
在这里插入图片描述
这些高分类分数但是低IoU,低分类分数但是高IoU的检测目标在模型推断时,从两个方面影响着模型性能:

  • 我们在检测目标时,有一个阈值,我们只保留这些阈值超过(比如说0.3的)那些bounding boxes,此时,可能有一部分的bounding boxes,他们的预测classification score小于这个阈值,但是和目标Ground Truth之间同样具有较大IoU。这些目标被阈值丢弃掉了
  • 当我们从网络中检测出这些目标后,我们需要按照分类Score对这些阈值超过0.3的bounding boxes进行排序,利用这个排序顺序,我们保留那些和前面的bounding boxes IoU较小的bounding boxes。在这个过程中,我们又会抑制掉一部分的具有高IoU,但是classification score低的预测结果。

8.2 classification score和localization accuracy相关性的研究工作

解决两者之间低相关性的一些方法:
设计额外的子网络

  • Fitness NMS将 localization accuracy 分为5个等级,将定位精度预测问题变换到分类任务上,接着在Inference阶段,每一个detected box的fitness被定义为预测fitness 概率的一个加权和(没看过这篇论文,不是很清楚具体是怎么实现的),将每一个detected box的classification score乘上fitness作为最终的检测标准。
  • IoU-Net 提出an IoU Prediction head 和R-CNN并行预测每一个RoI的回归IoU,在inference阶段,按照predicted IoU对detected box进行排序,
  • MS R-CNN增加a MaskIoU head parallel with the Mask head 去预测 预测Mask和真实Mask之间的IoU,在预测时,预测IoU分数乘上类别分数作为最终的mask 置信度去rank mask。
  • Precise detection,设计了一个Soft-IoU层来预测质量分数,然后在EM merging unit中使用这个quality score检测重叠歧义

设计更好的损失函数

  • PISA在分类损失上的改动是通过IoU-HLR计算出来一个权重,接着使用这个权重对classification loss进行加权。在回归损失上,使用class probability(博主个人觉得这里应该是classfication score)来对regression loss进行一个加权,称之为classification-aware regression loss。从而提升了分类和回归之间的相关性。
  • IoU-balanced classification loss 使用regressed IoU对classification loss进行重新加权(博主认为这里应该是IoU大的,具有较大权重,使得网络能够更专注于降低IoU较大的分类损失),使得higher IoU的能够学习到更高的classification score。

8.3 更加精确的目标定位

  • Multi-region detector
    single-stage 在回归到一个准确的位置时很受限,因此,提出了一个迭代的 bounding box回归过程,重新调整bounding box的坐标,
  • Cascade R-CNN
    使用multi-stage 目标检测框架,它训练一系列具有递增IoU阈值的R-CNN。
  • RefineDet
    通过two-step bounding box 回归提升了single-stage检测器的定位精度。使用anchor refinement module(ARM)细化手动设计的anchors,接着object detection module(ODM)使用更加精细的anchors来进行bounding boxes的回归。
  • Libra R-CNN
    designs balanced L1 loss
  • IoU-balanced localization loss
    使用回归出来的IoU对定位loss进行加权,这个加权增加了inliers的权重,降低了outlier的权重

8.4 Anchor-free single-stage 检测器的研究情况

  • FCOS
    a per-pixel prediction 方式的FCN,它由三个head组成:classification head、regression head以及centerness head。在inference阶段,centerness head乘上classification score作为最终的score。
    我们的IoU预测是anchor-based的方法,而FCOS中提出的方式是anchor-free的。
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值