Localize to Classify and Classify to Localize:Mutual Guidance in Object Detection——目标检测中的相互指导

本文主要是自己闲暇时间里阅读论文 《Localize to Classify and Classify to Localize:Mutual Guidance in Object Detection》的整理记录,定位以分类,分类以定位——目标检测中的相互指导,这是一篇有新颖想法的作品,感兴趣的话可以自行移步阅读原论文,地址在这里,如下所示:

摘要

大多数基于深度学习的目标检测器都基于锚点机制,并依赖于预定义锚点框与真实框之间的交并比(IoU)来评估锚点与对象之间的匹配质量。本文质疑这种IoU的使用,并提出了一种新的锚点匹配标准,该标准在训练阶段由定位和分类任务的优化共同指导:与一个任务相关的预测用于动态分配样本锚点,并改进模型在另一个任务上的表现,反之亦然。尽管所提出的方法简单,但我们在PASCAL VOC和MS COCO数据集上对不同最先进的深度学习架构进行的实验表明,我们的相互指导策略的有效性和普遍性。

1 引言

监督目标检测是计算机视觉中的一项流行任务,旨在通过边界框定位对象并为每个对象分配预定义的类别。基于深度学习的方法在这一研究领域占据主导地位,大多数最新的方法都基于锚点机制[1-12]。锚点是不同尺寸和宽高比的预定义参考框,均匀分布在整个图像上。它们通过将目标检测问题转化为基于锚点的边界框回归和分类问题,帮助网络处理对象的尺度和形状变化。大多数基于锚点的最先进目标检测器依赖于预定义锚点框与真实框之间的交并比(IoU)(在下文中称为IoUanchor)来将样本锚点分配给对象(正锚点)或背景(负锚点)类别。这些分配的锚点随后用于在训练期间最小化边界框回归和分类损失。

在假设具有高IoUanchor的锚点框适合于定位和分类的情况下,这种基于IoUanchor的锚点匹配标准是合理的。然而,在现实中,IoUanchor对对象的内容/上下文不敏感,因此不适合直接用于锚点匹配。在图1中,我们展示了几种IoUanchor不能很好地反映锚点与对象之间匹配质量的示例:锚点A和锚点B具有完全相同的IoUanchor,但具有非常不同的匹配质量。例如,在图1的第一行中,锚点A覆盖了对象更具代表性和信息性的部分,而锚点B则不如锚点A;在第二行中,锚点B包含附近对象的部分,这阻碍了对骑师/左侧人物的预测。
基于深度学习的目标检测涉及两个子任务:实例定位和分类。这两个任务的预测分别告诉我们图像上的对象“在哪里”和“是什么”。在训练阶段,这两个任务通过梯度下降联合优化,但静态锚点匹配策略并未从这两个任务的联合解决中显式受益,这可能导致任务错位问题,即在评估阶段,模型可能会生成分类正确但定位不精确的边界框预测,以及定位精确但分类错误的预测。这两种预测都显著降低了整体检测质量。
为了解决现有基于IoUanchor策略的这两个限制,我们提出了一种新的、由定位和分类任务相互指导的自适应锚点匹配标准,即利用边界框回归预测动态分配训练锚点样本以优化分类,反之亦然。具体来说,我们约束定位良好的锚点也具有良好的分类(定位以分类),并且分类良好的锚点也具有良好的定位(分类以定位)。这些策略导致了一种内容/上下文敏感的锚点匹配,并避免了任务错位问题。尽管所提出的策略简单,但相互指导在PASCAL VOC[13]和MS COCO[14]数据集上使用不同深度学习架构的传统静态策略上带来了持续的平均精度(AP)提升,尤其是在严格的指标如AP75上。我们的方法预计在需要精确实例定位的应用中更为高效,例如自动驾驶、机器人、户外视频监控等。
本文的其余部分组织如下:在第2节中,我们讨论了一些在目标检测中的代表性相关工作。第3节提供了所提出的相互指导的实现细节。第4节将我们的动态锚点匹配标准与传统静态标准在不同公共目标检测数据集上使用不同深度学习架构进行了比较,并讨论了精度提升的原因。第5节给出了结论性评述。

2 相关工作

现代基于CNN的目标检测方法可以分为两大类:两阶段检测器和单阶段检测器。这两类检测器在性能上相似,前者在准确性上略有优势,后者在效率上略有优势。此外,这两类检测器都大量基于锚点机制,通常依赖于IoUanchor来评估锚点与对象之间的匹配质量,以便在分配训练标签和计算训练示例的边界框回归和分类损失时使用。我们的方法旨在改进这一锚点匹配标准。

2.1 基于锚点的目标检测

两阶段目标检测器。Faster RCNN [1] 为两阶段目标检测器定义了通用范式:它首先使用区域提议网络(RPN)生成一组稀疏的感兴趣区域(RoIs),然后对这些区域进行分类并细化其边界框。RoIs是通过锚点机制生成的。基于这一框架,已经提出了多项改进:R-FCN [2] 提出了位置敏感的得分图,以共享几乎所有在整个图像上的计算;FPN [3] 使用自上而下的架构和横向连接,在所有尺度上构建高层次语义特征图;PANet [4] 通过添加自下而上的路径增强来增强多尺度特征融合,以在较低层引入精确的定位信号;Libra RCNN [5] 提出了平衡特征金字塔,以进一步将多尺度信息集成到FPN中;TridentNet [15] 构建了一个并行的多分支架构,并采用了一种尺度感知的训练方案,用于训练专门针对对象尺度的检测分支。Cascade RCNN [6] 进一步将两阶段范式扩展为多阶段范式,其中一系列检测器按阶段进行训练。

单阶段目标检测器。SSD [7] 和 YOLO [16] 是单阶段目标检测的基本方法。基于此,已经提出了许多其他工作:FSSD [10] 通过连接不同尺度的特征来将上下文信息聚合到检测器中;RetinaNet [9] 提出了焦点损失(Focal Loss),以解决在尝试从大量背景中分离实际检测对象时出现的分类不平衡问题;RFBNet [11] 提出了感受野块(Receptive Field Block),考虑了感受野大小与偏心率之间的关系;RefineDet [17] 引入了对锚点框的额外细化阶段;M2Det [12] 堆叠了多个薄化的U形模块,以解决所谓的外观复杂性变化问题。尽管这些方法引入了新颖的架构来改进目标检测任务的结果,但它们都依赖于标准的基于IoUanchor的匹配。我们将这一组件识别为可能的限制,并提出了一种新颖的匹配标准,可以适应任何现有的深度架构用于目标检测。

2.2 无锚点目标检测

无锚点目标检测的思想是通过检测对象而不是从预定义的锚点框,而是直接从特定的关键点[18-21]或对象中心[22-25]来检测对象。然而,这些方法与基于锚点的方法相比,并没有带来显著的准确性优势。我们的相互指导的主要思想也可以应用于这类无锚点目标检测器,并且无锚点检测器的实验结果包含在补充材料中。

扫描二维码关注公众号,回复: 17413754 查看本文章

3 方法

如引言中所述,为了训练基于锚点的目标检测器,预定义的锚点应根据锚点与真实对象之间的匹配评估被分配为正样本(“它是真实对象”)或负样本(“它是背景的一部分”)。然后,根据正锚点优化边界框回归损失,并根据正锚点和负锚点优化实例分类损失。当使用静态锚点匹配策略训练基于锚点的单阶段目标检测器时,预定义锚点框与真实框之间的IoU(IoUanchor)是常用的匹配标准。如图2的IoUanchor列所示,IoUanchor超过50%的锚点被标记为“正样本”,IoUanchor低于40%的锚点被标记为“负样本”,其余的被标记为“忽略锚点”。请注意,至少应有一个锚点被分配为正样本,因此如果没有锚点的IoUanchor超过50%,则IoUanchor最高的锚点被视为正样本。
所提出的相互指导由两个部分组成:定位以分类和分类以定位。

3.1 定位以分类

如果一个锚点能够精确地定位一个对象,那么这个锚点必须覆盖该对象语义重要区域的良好部分,因此可以被视为分类的适当正样本。基于此,我们提出利用回归边界框(即网络的定位预测)与真实框之间的IoU(记为IoUregressed)来更好地分配锚点标签进行分类。受通常的IoUanchor启发,我们将IoUregressed与一些给定的阈值(在下一节中讨论)进行比较,然后将IoUregressed大于高阈值的锚点定义为正样本,IoUregressed低于低阈值的锚点定义为负样本(见图2的IoUregressed列)。
我们现在讨论一种动态设置阈值的解决方案。固定的阈值(例如50%或40%)似乎不是最优的,因为网络的定位能力在训练过程中逐渐提高,每个锚点的IoUregressed也随之提高,导致分配越来越多的正锚点,这会破坏训练的稳定性。为了解决这个问题,我们提出了一种动态阈值策略。尽管IoUanchor不是准确指示锚点与对象之间匹配质量的最佳选择,但分配的正锚点和忽略锚点的数量确实反映了全局匹配条件(由检测对象的大小和宽高比带来),因此这些数量可以作为我们动态标准的参考值。如图2所示,在应用基于IoUanchor的锚点匹配策略时,阈值为50%和40%,正锚点(Np)和忽略锚点(Ni)的数量被记录下来(对于船,Np = 6,Ni = 3)。然后我们使用这些数量将Np个最高IoUregressed的锚点标记为正样本,接下来的Ni个锚点标记为忽略。更正式地说,我们利用第Np个最大的IoUregressed作为我们的正锚点阈值,第(Np+Ni)个最大的IoUregressed作为我们的忽略锚点阈值。通过这种方式,我们的定位以分类锚点匹配策略随着网络的定位能力而演变,并在整个训练过程中保持分配给正/负类别的锚点样本数量一致。

3.2 分类以定位

与定位以分类过程类似,分类以定位中的正锚点样本根据网络的分类预测(记为Classif score)进行分配。具体来说,Classif score是对象类别的预测分类得分,例如,图2中的Classif score表示船类别的分类得分。
然而,这个Classif score不足以直接用于为边界框回归优化分配好的正锚点。在训练过程的开始尤其如此,此时网络的权重几乎是随机值,所有预测的分类得分都接近于零。IoUregressed是基于IoUanchor优化的,因此在大多数情况下(甚至在训练开始时),我们有IoUregressed ≥ IoUanchor,这一特性有助于避免冷启动问题并确保训练的稳定性。对称地,我们提出了基于IoUamplif ied的分类以定位策略,定义为:

其中σ是一个超参数,旨在调整放大的程度,p表示前面提到的Classif score。受“焦点损失”[9]的启发,我们选择了等式1作为最简单的能够根据正确的分类预测p放大锚点IoU的方法。其行为如图3所示。IoUamplif ied总是高于IoUanchor,并且放大与预测的Classif score成比例。特别是,对于较小的σ(注意σ应大于1),放大更强,当σ变大时,放大消失。
与定位以分类策略类似,我们应用动态阈值策略,以保持分配给定位任务和分类任务的正样本数量一致,例如,在图2中,我们将IoUamplif ied最高的6个锚点分配为正样本。请注意,对于定位任务,不需要选择忽略或负锚点,因为背景没有相关的真实框。

3.3 关于任务错位问题

由于定位以分类和分类以定位是独立的策略,它们可能会分配相互矛盾的正/负标签(例如,图2中的锚点C在分类任务中被标记为负样本,但在边界框回归任务中被标记为正样本)。这种情况发生在一个锚点在一个任务上预测良好,而在另一个任务上预测较差时(即它们是错位预测)。处理这种矛盾标签,正如我们在相互指导中所做的那样,不会损害训练过程。相反,我们的方法解决了任务错位问题,因为一个任务的标签是根据另一个任务的预测质量分配的,反之亦然。这种机制迫使网络生成对齐的预测:如果一个锚点的分类预测良好,而其定位预测较差,相互指导将在定位任务上给这个锚点一个正标签,以约束它也能更好地定位,同时在分类任务上给一个负标签(即背景),以避免错位预测。实际上,这个定位不准确的锚点的预测分类得分应该足够低,以便在推理阶段被NMS过程抑制。同样的推理适用于定位预测良好但分类预测较差的情况。
相反,如果网络在训练过程中总是为两个任务分配相似的正/负标签(如标准的基于IoUanchor的方法),则无法保证在推理时定位和分类预测不会错位。保持NMS后的错位预测锚点对严格的评估指标(如AP75)是有害的。

4 实验

4.1 实验设置

网络架构和参数。为了测试所提出方法的泛化性能,我们在单阶段目标检测器FSSD [10]、RetinaNet [9]和RFBNet [11]上实现了我们的方法,使用ResNet-18 [26]或VGG-16 [27]作为骨干网络进行实验。请注意,RFBNet没有使用ResNet-18作为骨干网络,因为这两种架构不兼容。骨干网络在ImageNet-1k分类数据集[28]上进行了预训练。我们采用焦点损失[9]和平衡L1损失[5]分别作为所有实验中的实例分类和边界框回归损失函数。所有实验的输入图像分辨率固定为320 × 320像素(单尺度训练和评估)。除非另有说明,所有其他实现细节与[11]相同。根据图3的结果,我们决定将我们唯一的超参数σ固定为2用于所有实验。σ用于在计算等式(1)中的IoUamplif ied时设置放大的程度。它需要大于1以使指数为正,并且小于3,因为如图3所示,这不会带来任何放大。

数据集和评估指标。我们在两个基准数据集上进行了广泛的实验:PASCAL VOC [13]和MS COCO [14]。PASCAL VOC数据集有20个对象类别。与之前的工作类似,我们使用VOC2007和VOC2012 trainval集的组合进行训练,并依赖VOC2007测试集进行评估。MS COCO数据集包含80个类别。我们在该数据集上的实验分别在train2017和val2017集上进行训练和评估。对于所有数据集,我们使用MS COCO基准引入的评估指标:平均精度(AP)在10个IoU阈值(从0.5到0.95)上平均,还包括AP50、AP75、APs、APm、APl。AP50和AP75分别测量给定IoU阈值(50%和75%)的平均精度。最后三个指标分别关注小(面积 < 322)、中(322 < 面积 < 962)和大(面积 > 962)对象。由于MS COCO和PASCAL VOC之间的对象大小差异很大,因此在实验PASCAL VOC数据集时忽略了这些依赖于大小的指标。

4.2 结果

PASCAL VOC上的实验。我们评估了所提出方法的两个组成部分(定位以分类和分类以定位)相对于通常的基于IoUanchor的匹配策略在相同深度学习架构上的有效性。在PASCAL VOC数据集上获得的结果如表1所示。所提出的两种锚点匹配策略一致地提升了“原始”网络的性能,它们的组合(相互指导)在所有评估指标上达到了最佳的AP。

特别是,我们观察到AP50的改进较小(约0.5%),但在AP75上的改进显著(约3%),这意味着我们获得了更精确的检测结果。如第3.3节所述,这是由于通常的静态锚点匹配方法面临的任务错位问题。这个问题导致保留分类良好但定位不准确的预测,并抑制定位准确但分类错误的预测,从而导致在严格的IoU阈值(如AP75)下AP得分显著下降。然而,在相互指导中,一个任务的训练标签根据另一个任务的预测质量动态分配,反之亦然。这种联系使得分类和定位任务在整个训练阶段保持一致,从而避免了任务错位问题。

我们还注意到,对于所有五种架构,定位以分类单独带来的改进高于分类以定位单独带来的改进。我们假设有两个可能的原因:1)大多数目标检测错误来自错误的分类而不是不精确的定位,因此分类任务比定位任务更困难,因此在这个任务上有更多的改进空间;2)等式(1)中提出的放大可能不是最合适的,无法充分利用分类任务来优化边界框回归任务。

MS COCO上的实验。然后,我们在更困难的MS COCO [14]数据集上进行实验,并在表2中报告了我们的结果。请注意,根据MS COCO定义的尺度范围,列出了小、中和大对象的APs。在这个数据集上,我们的相互指导策略也一致地带来了相对于基于IoUanchor的基线的性能提升。我们注意到,我们在大对象上的AP提升显著(约2%)。这是因为较大的对象通常有更多的匹配正锚点,这为我们的方法提供了更多的改进空间。由于相互指导策略仅涉及训练阶段,并且在评估阶段与基于IoUanchor的方法没有区别,因此这些改进可以被认为是无成本的。

4.3 定性分析

标签分配的可视化。在这里,我们希望通过可视化训练期间基于IoUanchor的策略和相互指导策略之间的标签分配差异,来探讨性能提升的原因。一些示例如图4所示。白色虚线框表示真实框;红色锚点框由基于IoUanchor的策略分配为正样本,但被定位以分类(图4的前两行)或分类以定位(图4的后两行)视为负样本或忽略;绿色锚点框由定位以分类分配为正样本,但被基于IoUanchor的策略视为负样本或忽略;黄色锚点框由分类以定位分配为正样本,但被基于IoUanchor的策略视为负样本或忽略。从这些示例中,我们可以得出结论,基于IoUanchor的策略仅将“正样本”标签分配给与真实框有足够IoU的锚点,而不管其内容/上下文,而我们所提出的定位以分类和分类以定位策略动态地将“正样本”标签分配给覆盖对象语义判别部分的锚点(例如,人的上半身,动物的主体),并将“负样本”标签分配给具有复杂背景、遮挡部分或包含附近对象的锚点。我们相信,我们提出的实例自适应策略使标签分配更加合理,这是性能提升的主要原因。

检测结果的可视化。图5展示了PASCAL VOC数据集中的一些图像,说明了我们的相互指导方法和基线锚点匹配策略的不同行为。如第3.3节所述,我们可以从基于IoUanchor的锚点匹配策略中发现错位预测(分类良好但定位不佳)。如图所示,当图像中不同对象彼此靠近时,我们的方法给出了更好的结果,例如“人骑马”或“人骑自行车”。使用通常的基于IoUanchor的锚点匹配策略,实例定位和分类任务彼此独立优化。因此,在评估阶段,分类预测可能依赖于一个对象,而边界框回归则针对另一个对象。然而,这种问题在相互指导策略中较少见。显然,我们的锚点匹配策略在两个任务之间引入了交互,并使定位和分类的预测对齐,从而显著消除了这种误报预测。

5 结论

在本文中,我们质疑将预定义锚点框与真实框之间的IoU作为目标检测中锚点匹配的良好标准,并研究了检测过程中涉及的两个子任务(即定位和分类)之间的相互依赖性。我们提出了一种相互指导机制,通过根据另一个任务的预测质量为一个任务分配锚点标签,并反之亦然,从而提供锚点与对象之间的自适应匹配。我们在不同的架构和不同的公共数据集上评估了我们的方法,并与传统的静态锚点匹配策略进行了比较。报告的结果显示了这种相互指导机制在目标检测中的有效性和普遍性。

猜你喜欢

转载自blog.csdn.net/Together_CZ/article/details/143320518