计算机系统应用教程网站

网站首页 > 技术文章 正文

PSRR-MaxpoolNMS:和GreedyNMS效果相当,速度快6倍

btikc 2024-09-14 01:04:58 技术文章 25 ℃ 0 评论

导读

可以用在所有类型的物体检测器中,用来替代NMS,速度快,准确率高。

PSRR-MaxpoolNMS: Pyramid Shifted MaxpoolNMS with Relationship Recovery

摘要:NMS是物体检测后处理的重要步骤,默认的NMS叫做GreedyNMS,不像卷积操作,这种NMS是不能并行的,可能成为整个物体检测pipeline的瓶颈。MaxpoolNMS是GreedyNMS的替代品,速度更快,准确率也差不多。但是,在二阶段的物体检测中,MaxpoolNMS只是替代了第一阶段的GreedyNMS。当在第二阶段用MaxpoolNMS的时候,会发现准确率下降很多,这是由于在包围框的选取方面,MaxpoolNMS的准确率并不能很好的逼近GreedyNMS。本文,我们提出一种通用的,可并行的,可配置的方法,叫做PSRR-MaxpoolNMS,可以完全替代GreedyNMS,适用于所有的物体检测器的所有阶段。

1. 介绍

本文的贡献如下:

  • 提出了一个通用的PSRR-MaxpoolNMS方法,用来加速NMS,对于所有的物体检测器都适用。
  • 使用一个相关性恢复模块来校正当把包围框得分和置信度得分上的不匹配问题,使得框之间的尺度,比例和空间关系更加准确。
  • 使用金字塔偏移MaxpoolNMS,使用置信度得分图来显著提升得分图的稀疏性,抑制更多的重叠框。
  • 在PSRR-MaxpoolNMS中,相关性校正模块和金字塔偏移MaxpoolNMS都是很简单的操作,并且可并行。因此,PSRR-MaxpoolNMS首次提供了一个完全并行的方案。
  • PSRR-MaxpoolNMS的效果大大优于MaxpoolNMS,并且速度相比GreedyNMS更快,准确率相当。

2. NMS

最常用的NMS是GreedyNMS,该方法首先对所有的框,用置信度进行排序,然后循环选取置信度最高的框,和剩下的其他的框计算重叠图,去除掉重叠大的框。NMS有很多的变体,SoftNMS不是直接把要去除的框删掉,而是降低其置信度。自适应NMS,通过目标的分布自己去学习一个阈值,而不是使用预设的阈值。还有将NMS放到ConvNet中,端到端进行学习的。Visibility guided NMS利用全部的目标和检测到的可见部分来处理遮挡物体的问题。FeatureNMS利用了特征嵌入距离来决定去除哪些候选框。

NMS的硬件加速很少研究,MaxpoolNMS将NMS变成了置信度图上的max pool操作来去除冗余框。MaxpoolNMS可以并行,比GreedyNMS更高效,但是MaxpoolNMS只能在二阶段的RPN中使用,无法用在所有的检测器中。

3. 方法

3.1 MaxpoolNMS回顾

RPN中的MaxpoolNMS包括2个模块,如图2,首先,构建一组置信度得分图,每个特征图对应特定的anchor的尺寸和比例,特征图上的每个位置编码了objectness得分和anchor box的空间位置,比如,我们使用4个尺度和3个比例的anchor box,下采样率为β,就会有12个特征图,每个特征度的分辨率为和。

第二,由于目标都是对应的特征图中的峰值位置,因此,一个简单的操作就是只在特征图上保留峰值的位置。由于每个特征图具有特定的anchor尺寸,maxpool的kernel size和stride由相关的anchor box尺寸来决定。

这里,w和h是anchor的尺寸,β是下采样率,α越大能抑制的框越多,但是会有漏框的风险。

MaxpoolNMS有3个变体:(1)Single-Channel MaxpoolNMS ,对每个得分图独立的进行max pool的操作。(2)Cross-Ratio MaxpoolNMS,对于每个尺度,将不同比例的anchor的得分图拼接起来,然后用3D max pool来操作。(3)Cross-Scale MaxpoolNMS,对于每个anchor比例,将邻近的尺度的得分图拼接起来,然后用3D max pool来操作。

最后,留下来的anchor框再进行排序,只保留最前面的部分作为最终的结果。

3.2 MaxpoolNMS的局限性

尽管MaxpoolNMS速度很快,但是缺点也很大,只能在二阶段物体检测器的第一个阶段中使用。为了保持高准确率,在第二个阶段,还是需要使用GreedyNMS。我们发现,当在第二阶段使用MaxpoolNMS的时候,performance下降很多,具体来说,见表1,在VOC数据集上,降了约50%。

从图1也可以看到,用MaxpoolNMS选出来的框和GreedyNMS选出来的框也是很不一样的。我们猜测,MaxpoolNMS效果差是由于它没法去很好的近似GreedyNMS。我们度量了MaxpoolNMS选出来的框和GreedyNMS选出来的框之间的重叠比例,在表1中。随着重叠率的上升,mAP也上升。

我们发现了2个重要的因素导致MaxpoolNMS的重叠率低,置信度图和得分图之间不匹配,以及很难用置信度图上的单次max pooling扫描最大化得分图上的稀疏性。

  • 得分图不匹配 发生于构建置信度图的时候,MaxpoolNMS将anchor box投影到得分图上,并没有考虑框的回归。这导致了如果anchor box对应的回归框位置,尺度,比例偏移很多的时候,得分图就匹配不上了。图2显示了这样的例子。这种不匹配会导致得分图上框的错误投影,在后面的max pool的操作的时候会有负面的影响。
  • 得分图上的低稀疏性 由于MaxpoolNMS只是在置信度图上做了一遍max pooling的扫描,很难得到高稀疏性的效果,因此,还是会留下很多的高重叠的框,如图4,而且,单次扫描的max pooling操作还会导致边界效应,如图5左边,邻近的网格中的box在max pooling之后,都保留了下来,但是其中一个可以认为是重复的。

3.3 相关性恢复

我们的相关性恢复投影并不是直接将anchor box投影到置信度得分图上,而是将回归框投影到得分图上,这解决了得分不匹配的问题。回归框通常在空间位置,尺度,形状上要比anchor box更加贴合实际的物体。具体来说,相关性恢复模块包括3个部分:空间和通道恢复,用来确定回归框应该映射到的空间位置和通道,还有得分赋值,用来决定每个网格的置信度得分。

空间恢复 由于回归框的偏移,MaxpoolNMS将anchor box投影到错误的空间位置,为了解决这个问题,给定回归框再输入图上的坐标,空间恢复图将其投影到得分图上:

其中β是下采样率。

通道恢复 MaxpoolNMS将anchor box投影到通道上的时候,简单的根据anchor box的模型尺度和比例进行的投影。类似的问题,如果对应的回归框和anchor box的尺度和比例变化很大的时候,这个投影就会出错。为了解决这个问题,给定一个回归框的尺寸w'和h‘,通道恢复计算最解决的尺度和比例,并选择对应的通道作为该回归框的投影通道。

得分赋值 在空间定位以及通道确定了之后,每个网格有可能有不止一个框的投影。因此,对于每个网格,保留得分最高的那个框。这其实就是一个1x1的 max pooling,这个可以作为去除冗余框的预过滤的步骤。

重点 所有的相关性恢复的方法都很简单而且高度并行化。而且,该方法是anchor free的。也就是说,相关性恢复,作为我们的PSRR MaxpoolNMS的第一个步骤,有可能扩展到一阶段的anchor free的物体检测器中。

3.4 金字塔偏移 MaxpoolNMS

我们提出了Pyramid Shifted MaxpoolNMS来去除冗余框,Pyramid MaxpoolNMS的作用是在通道之间进行框的抑制,Shifted MaxpoolNMS的作用是解决边界效应。在Pyramid Shifted MaxpoolNMS之后,得分图变得高度稀疏,只留下了很少的非零网格。

Pyramid Shifted MaxpoolNMS 一方面,MaxpoolNMS只是在置信度图上进行了一次max pooling的扫描,另一方面,MaxpoolNMS假设重叠框只是存在于不同的通道上,在相邻的尺度和比例的得分图上,但实际情况并不完全是这样。

我们提出了Pyramid MaxpoolNMS来提高得分图上的稀疏性,如图4,max pooling从单通道的max pooling开始,再进行cross-ratio和cross-scale的max pooling,最后再做cross-all-channels的max pooling。另外,我们提出了cross-all-channels的max pooling,在所有的通道上做pooling,这样的话,我们的方法从局部的感受野逐步提升到了全局感受野,并且不需要重叠框的分布的假设。

当在单个通道上独立的做max pooling的时候,每个通道的kernel size和stride的设置和式子1一样。当在多个通道上做max pooling的时候,kernel的size和stride设置为所有通道上的最小值。首先,如果kernel size比最小值大,就会压制掉真实的正样本,第二,如果尺度/比例的gap越大,出现重叠框的可能性越小,因为小的kernel size(和stride)会降低压制真实正样本的可能性。

Shifted MaxpoolNMS Shifted MaxpoolNMS可以进一步增加得分图的稀疏性,更有效的抑制重叠框。这是通过在得分图上使用空间偏移增加一个额外的max pooling来实现的,用来解决边缘效应的问题。如图5,具体来说,给定kernel size k,shifted max pooling是在得分图上使用做填充0的padding,然后再做max pooling实现的。

4. 实验

4.1 实验设置

我们只在Faster-RCNN和SSD的推理步骤上评估。(1)对于Faster-RCNN的训练,我们使用https://github.com/jwyang/faster-rcnn.pytorch中的默认训练设置进行训练,由于MaxpoolNMS是我们的PSRR-MaxpoolNMS的简化版本,我们简单的用Multi-Scale(或者Single-Channel)MaxpoolNMS作为Faster-RCNN的第一个步中的后处理方法,相比GreedyNMS,取得了相近的准确率,并且速度快得多。(2)SSD是一阶段的物体检测器,我们使用了https://github.com/qfgaohao/pytorch-ssd中默认的训练配置,在预处理阶段,SSD首先过滤掉score<0.01的框。对于GreedyNMS,它进一步选取了200个得分最高的框。我们的PSRR-MaxpoolNMS使用了所有的框作为了预处理阶段的输入。

对于Faster-RCNN和SSD,我们在最后的步骤上都使用了PSRR-MaxpoolNMS。我们把α固定为0.75,在通道恢复阶段,我们将anchors和尺度设置为和[0.5,1,2]。对于Cross-Ratio MaxpoolNMS,每个尺度的所有的3个比例拼接起来做MaxpoolNMS。对于Cross-Ratio MaxpoolNMS,我们只拼接了2个相邻尺度的通道来做max pooling。

4.2 和MaxpoolNMS对比

对比结果见表1:

首先,我们发现VOC数据集上MaxpoolNMS表现很差,其次,我们的PSRR-MaxpoolNMS能够很好逼近GreedyNMS的效果,<1%的掉点。我们的方法唯一要设置的超参数就是α,因此,我们的方法相比MaxpoolNMS不需要引入额外的超参数,准确率要高很多。

4.3 和GreedyNMS对比

我们将PSRR-MaxpoolNMS和GreedyNMS进行对比,在KITTI数据集上和不同的卷积网络检测器上。见表2:

我们发现,在不同的主干上,PSRR-MaxpoolNMS都能接近GreedyNMS的效果。

在PASCAL VOC上的比较:

4.4 效率

我们同时在理论上和实验上比较了我们的方法的效率。表4表示了GreedyNMS和我们的方法的理论时间复杂度。

给定输入框的数量N,相关性恢复以及金字塔偏移MaxpoolNMS的时间复杂度都是O(N),远小于GreedyNMS的时间复杂度O(NlogN) + O(N^2^)。而且,相关性恢复和金字塔偏移MaxpoolNMS可以方便的并行,更加降低了执行时间。我们也在cpu上度量了实际的时间,使用了不同数量的包围框。我们在Pascal VOC数据集上使用了SSD,用VGG16作为主干。结果见图6:

我们发现,随着框的数量越来越多,我们的方法相比GreedyNMS效率提升越多。当框的数量提高到8000,我们的方法的时间为89ms,GreedyNMS的是将为512ms,比我们的方法慢6倍。我们还发现,金字塔偏移MaxpoolNMS的时间基本是固定的,相关性恢复的时间是线性增加的,这是由于我们的实现还没有做成并行。

4.5 消融实验

4.5.1 相关性恢复

空间和通道恢复 我们分析了Pyramid MaxpoolNMS在空间和通道恢复上的每个部分。结果见表5,我们可以看到,相比baseline,空间和通道恢复的步骤都可以大大缓解得分图的不匹配的问题。

得分对齐 之前提过,对于每个得分图的每个网格,我们只保留得分最高的框,这个可以作为max pooling的前置步骤(max-assign)。我们还提出了一个替代max-assign的方法,random-assign和sum-assign,random-assign就是随机选一个框,sum-assign就是把所框的得分都加起来。表6显示了不同的方法的效果:

我们发现,max-assign的效果是最好的。

4.5.2 Pyramid Shifted MaxpoolNMS

Pyramid MaxpoolNMS 我们评估了通道组合数量的效果,以及不同的顺序的效果。见表7:

首先,我们发现,single-scan max pooling的结果要比multi-scan max pooling的效果差。这说明了Pyramid MaxpoolNMS是有必要的,第二,当使用相反的顺序的时候,比如,先在不同比例的特征图上执行,再做其他的,效果要略微差一点。

Shifted MaxpoolNMS的边界效应 结果见表8:

5. 总结

本文中,我们提出了PSRR-MaxpoolNMS,作为GreedyNMS的替代方法。我们使用了相关性恢复模块以及Pyramid Shifted MaxpoolNMS模块,来解决得分图不匹配的问题,以及低稀疏性的问题。我们用对比试验表明了我们的方法的有效性,和GreedyNMS的准确率相当,但是速度要快得多。

—END—

论文链接:https://arxiv.org/abs/2105.12990

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表