IoU-balanced Loss Functions for Single-stage Object Detection——用于单阶段目标检测的 IoU 平衡损失函数
《IoU-balanced Loss Functions for Single-stage Object Detection》主要针对单阶段目标检测器中定位精度不足的问题提出了两种新的损失函数——IoU平衡分类损失和IoU平衡定位损失以在不增加推理时间的前提下提升检测性能。 研究动机与问题作者指出现有单阶段检测器如SSD、RetinaNet等存在两个核心问题分类与定位任务相关性弱标准交叉熵损失对所有正例一视同仁导致模型只追求高分类分数忽略了定位精度。结果出现“高分低IoU”或“低分高IoU”的检测框影响NMS和AP计算。定位损失被低质量样本主导Smooth L1损失中定位不准的样本离群点梯度占比大阻碍模型学习精确定位。 提出的方法1.IoU平衡分类损失核心思想根据预测框与真实框的IoU动态调整分类损失的权重。IoU越高权重越大IoU越低权重越小。目的让模型更倾向于为定位更准的样本学习高分类分数增强分类与定位的一致性。2.IoU平衡定位损失核心思想根据IoU调整定位损失的梯度贡献。高IoU样本内点梯度增强低IoU样本离群点梯度抑制。目的让模型更专注于提升已有一定定位精度的样本提升整体定位质量。 实验与结果数据集MS COCO、PASCAL VOC、Cityscapes检测器RetinaNet、SSD、FoveaBox、Faster R-CNN对比主要结果在COCO上AP提升1.0% ~ 1.7%AP0.75提升1.0% ~ 2.4%在VOC上AP0.8/0.9提升1.6% ~ 3.9%在Cityscapes上也有稳定提升消融实验单独使用两种损失均有提升组合效果更佳参数η和λ对性能有影响存在最优值可视化结果表明高IoU样本得分提升低IoU样本得分下降分类与定位更一致✅ 结论提出了两种轻量级、无额外计算成本的损失函数改进方案。有效解决了单阶段检测器中分类与定位不一致、离群点主导训练的问题。在多个数据集和多种检测器上验证了其通用性和有效性。这里是自己的论文阅读记录感兴趣的话可以参考一下如果需要阅读原文的话可以看这里如下所示摘要单阶段目标检测器因其高效率而被广泛应用于计算机视觉任务中。然而我们发现单阶段目标检测器采用的损失函数严重损害了定位精度。首先用于分类的标准交叉熵损失与定位任务无关它在训练过程中会驱使所有正例学习尽可能高的分类分数而不考虑其定位精度。这导致许多检测结果出现高分低定位精度高IoU或低分高定位精度的情况。其次对于标准 Smooth L1 损失其梯度在训练过程中由定位精度较差的离群样本主导。上述两个问题会降低单阶段检测器的定位精度。针对上述问题本文提出了由 IoU 平衡分类损失和 IoU 平衡定位损失组成的 IoU 平衡损失函数。IoU 平衡分类损失更加关注高 IoU 的正例能够增强分类与定位任务之间的相关性。IoU 平衡定位损失降低了低 IoU 样本的梯度同时增加了高 IoU 样本的梯度从而提升模型的定位精度。在 MS COCO、PASCAL VOC 和 Cityscapes 等具有挑战性的公开数据集上进行的大量实验表明两种 IoU 平衡损失均能显著提升流行的单阶段检测器的性能尤其是在定位精度方面。在 COCO test-dev 数据集上所提出的方法能将 AP 显著提高 1.0%∼1.7%将 AP75 提高 1.0%∼2.4%。在 PASCAL VOC 数据集上也能将 AP 显著提高 1.3%∼1.5%并将 AP80、AP90 提高 1.6%∼3.9%。关键词IoU 平衡分类损失IoU 平衡定位损失目标检测精确定位类别不平衡样本挖掘1. 引言随着深度卷积网络的发展涌现出大量的目标检测模型。这些模型可分为单阶段检测器 [1, 2, 3, 4, 5, 6] 和多阶段检测器 [7, 8, 9, 10, 11, 12, 13]。提高目标检测模型的定位精度是一个具有挑战性的课题为此提出了许多方法如 Cascade R-CNN [8]、RefineDet [4]但这些方法通过附加更复杂的子网络来实现损害了模型的效率。本文旨在不牺牲效率的前提下提高模型的定位精度。我们发现大多数检测模型采用的分类和定位损失函数不足以实现精确定位而通过设计更好的损失函数不改变模型架构可以显著提高定位能力。大多数目标检测器采用的损失函数存在两个问题。首先分类与定位任务之间的相关性较弱。大多数目标检测器采用标准交叉熵损失进行分类该损失与定位任务无关这种分类损失会驱使模型对所有正例学习尽可能高的分类分数而不考虑其训练过程中的定位精度。结果预测的分类分数将与定位精度无关产生许多高分低 IoU 或低分高 IoU 的检测框。这些分类分数与定位精度不匹配的检测框会在后续推理过程中损害模型的性能。一方面当应用传统的非极大值抑制NMS或其变体如 Soft-NMS [14] 时会出现高分低 IoU 的检测框抑制了低分高 IoU 的检测框的情况。另一方面在计算 COCO AP 时所有检测框基于分类分数排序会出现高分低 IoU 的检测框排在低分高 IoU 的检测框之前的情况从而降低平均精度。因此我们声称增强分类与定位任务之间的相关性对于精确定位至关重要。其次在训练过程中目标检测器定位损失的梯度由离群样本即定位精度较差的样本主导。这些离群样本会阻碍模型在训练中获得高定位精度。Fast R-CNN [12] 提出了 Smooth L1 损失将离群样本的梯度抑制在一个有界值能有效防止训练过程中梯度爆炸。然而训练过程中离群样本梯度的主导地位仍然存在进一步抑制离群样本的梯度同时增加内点样本的梯度非常重要。本文提出了由 IoU 平衡分类损失和 IoU 平衡定位损失组成的 IoU 平衡损失函数以提高模型的定位精度。IoU 平衡分类损失更加关注高 IoU 的正例。正例的 IoU 越高其对分类损失的贡献就越大。因此IoU 较高的正例在训练过程中会产生更高的梯度更有可能学习到更高的分类分数。相反IoU 较低的正例更可能学习到较低的分类分数。这种方法将增强分类与定位任务之间的相关性。IoU 平衡定位损失提升高 IoU 样本的梯度权重同时抑制低 IoU 样本的梯度使模型更擅长精确定位。在 MS COCO、Pascal VOC 和 Cityscapes 等具有挑战性的数据集上进行的大量实验证明如图 1 所示IoU 平衡损失函数可以在不牺牲效率的情况下显著提高单阶段检测器的性能。此外IoU 平衡损失也能提高多阶段检测器的性能但提升幅度不如单阶段检测器显著。这是因为对于多阶段检测器其第一阶段检测器如 RPN生成的候选区域比单阶段检测器中人为设计的锚点框更精确从而缓解了上述问题。我们的主要贡献如下1我们证明了标准的分类交叉熵损失和定位 Smooth L1 损失会损害模型的定位精度而通过设计更好的损失函数可以显著提高定位能力。2我们提出了 IoU 平衡分类损失以增强分类与定位任务之间的相关性从而显著提升单阶段检测器的性能。3我们引入了 IoU 平衡定位损失以提升内点样本的梯度权重同时抑制离群样本的梯度使模型更擅长精确定位目标。本文的其余部分组织如下。第 2 节介绍相关研究工作。第 3 节详细介绍 IoU 平衡分类损失和 IoU 平衡定位损失。第 4 节在多个具有挑战性的数据集上进行了充分的实验证明了我们方法的有效性。第 5 节给出结论。图 1COCO test-dev 上的速度毫秒与精度AP对比。IoU 平衡损失能够在不增加推理时间的情况下持续提升不同流行单阶段目标检测器的性能。2. 相关工作精确定位。精确定位是目标检测中一个具有挑战性的课题近年来提出了许多提高定位精度的方法。多区域检测器[15]认为单次回归步骤不足以实现精确定位因此提出了迭代边界框回归来细化检测框的坐标随后进行NMS和框投票。Cascade R-CNN[8]逐阶段训练具有递增IoU阈值的多阶段R-CNN使得多阶段R-CNN在精确定位方面依次变得更强大。RefineDet[4]使用两步级联回归改进了单阶段检测器。ARM首先细化人为设计的锚点框然后ODM接收这些细化后的锚点框作为第二级回归的输入这有利于提高定位精度。所有这些方法都向检测模型添加了新模块因此损害了效率。相反IoU平衡损失函数在不改变模型架构的情况下提高了定位精度并且不影响模型的效率。难例挖掘。为了提高模型处理难例的能力人们已经为目标检测开发了许多难例挖掘策略。RPN[7]将IoU与真实框不大于0.3的锚点框定义为难负例。Fast R-CNN[12]将在区间[0.1, 0.5)内与真实框具有最大IoU的候选区域定义为难负例。OHEM[16]计算所有示例的损失然后根据损失对示例进行排序随后进行NMS。最后选择前B/N个示例作为难例来训练模型。SSD[1]将IoU低于0.5的锚点框定义为负例并根据损失对负例进行排序。排名靠前的负例被选为难负例。RetinaNet[3]设计了Focal loss来解决简单示例和难例之间的极端不平衡问题它降低了预测分类分数较低的简单示例的损失并更加关注预测分类分数较高的难例。Libra R-CNN[17]基于IoU为负例构建直方图并从直方图的每个区间中均匀选择示例作为难负例。与这些策略不同IoU平衡损失函数不改变采样过程仅根据正例的IoU为其分配不同的权重。分类与定位任务之间的相关性。大多数检测模型采用并行的分类和定位子网络来处理分类和定位任务。它们依赖独立的分类损失和定位损失来训练模型。这种架构导致分类和定位任务之间的独立性损害了模型的定位精度。Fitness NMS[18]根据回归框的IoU将定位精度分为5个等级并设计子网络为每个检测框预测每个定位等级的概率与类别无关或相关。然后基于这些概率计算fitness并与分类分数结合计算最终的检测分数从而增强了分类和定位任务之间的相关性。增强后的检测分数用作NMS的输入称为Fitness NMS。类似地IoU-Net[19]添加了一个与分类和定位分支并行的IoU预测分支以预测每个检测框的IoU预测的IoU与定位精度高度相关。与Fitness-NMS不同预测的IoU直接用作NMS的输入称为IoU-guided NMS。IoU-aware RetinaNet[20]在回归头旁边附加了一个IoU预测头来预测定位精度。在推理过程中最终的置信度通过将预测的IoU和分类分数相乘来计算。MS R-CNN[21]设计了一个MaskIoU头来预测预测掩膜的IoU旨在解决分类分数与掩膜质量之间弱相关性的问题。在推理过程中预测的掩膜IoU与分类分数相乘作为最终的掩膜置信度该置信度与掩膜质量高度相关。与IoU-Net不同增强的掩膜置信度仅在计算COCO AP时用于对预测掩膜进行排序。与这些方法不同IoU平衡分类损失直接使用正例的IoU来计算分配给正例的权重而不牺牲效率。训练定位子网络过程中的离群样本。与R-CNN[13]和SPPnet[22]相比Fast R-CNN[12]采用Smooth L1损失将离群样本的梯度约束为常数从而防止梯度爆炸。GHM[6]从梯度范数分布的角度分析了单阶段检测器中的样本不平衡问题。分析表明对于收敛模型的定位子网络仍然存在大量离群样本并且在训练过程中梯度可能由这些离群样本主导这损害了精确定位目标的训练过程。因此提出了GHM-R根据每个样本的梯度密度来提升简单样本的权重并降低离群样本的权重。然而梯度密度计算耗时可能减慢训练速度。Libra R-CNN[17]声称在直接平衡分类和定位任务时Smooth L1损失的整体梯度由离群样本主导。因此提出了Balanced L1损失来增加简单样本的梯度同时保持离群样本的梯度不变。与这些方法不同IoU平衡定位损失根据每个正例的IoU计算其权重提升高IoU样本的权重同时降低低IoU样本的权重。3. 方法3.1. 预备知识3.2. IoU 平衡分类损失如上所述分类与定位任务之间的弱相关性会在 NMS 和计算 COCO AP 时损害模型的性能。因此提出 IoU 平衡分类损失来增强分类与定位任务之间的相关性如公式 (3)、(4) 所示。3.3. IoU 平衡定位损失如前述分析如果训练过程由离群样本的梯度主导检测器的定位精度将受损。因此我们提出 IoU 平衡定位损失以提升高 IoU 样本的权重同时降低低 IoU 样本的权重如公式 (5)、(6) 所示。对于精细标注的图像它被划分为 2975 张训练图像、500 张验证图像和 1525 张无标注的测试图像。在我们的实验中仅使用精细标注的图像。我们在训练集上训练模型并在验证集上评估模型。4. 实验4.1. 实验设置我们在流行的单阶段目标检测模型上评估了所提出的 IoU 平衡损失包括基于锚点框的检测器SSD[1]RetinaNet[3]和无锚点检测器 FoveaBox[23]。此外我们还分析了 IoU 平衡损失在两阶段检测器 Faster R-CNN 上的有效性。为了公平比较在训练过程中仅改变了这些模型中的损失函数。数据集。我们在三个流行的目标检测数据集上评估了我们的方法包括 MS COCO[24]、PASCAL VOC[25] 和 Cityscapes[26]。对于 MS COCO它包含 118k 张训练图像train-2017、5k 张验证图像val-2017和 20k 张未公开标签的测试图像test-dev。数据集中总共有来自 80 个类别的超过 500k 个标注的目标实例。对于 PASCAL VOCVOC2007 包含 5011 张训练图像VOC2007 trainval和 4952 张测试图像VOC2007 test。VOC2012 包含 17125 张训练图像VOC2012 trainval和 5138 张测试图像VOC2012 test。我们在 VOC2007 trainval 和 VOC2012 trainval 的并集上训练模型并在 VOC2007 test 上评估模型。对于 Cityscapes它包含大量、多样化的、在 50 个不同城市街道上记录的立体视频序列。其中 5000 张图像具有高质量的像素级标注另外 20000 张图像具有粗略标注。对于精细标注的图像它被划分为 2975 张训练图像、500 张验证图像和 1525 张无标注的测试图像。在我们的实验中仅使用精细标注的图像。我们在训练集上训练模型并在验证集上评估模型。评估指标。对于 MS COCO 和 Cityscapes 数据集的实验结果采用标准的 COCO 风格评估指标包括 AP在 IoU 从 0.5 到 0.95步长 0.05 上的平均值、AP₅₀IoU 阈值为 0.5 时的 AP、AP₇₅IoU 阈值为 0.75 时的 AP、APₛ小尺度目标的 AP、APₘ中尺度目标的 AP和 APₗ大尺度目标的 AP。对于 PASCAL VOC 数据集的实验结果我们报告不同 IoU 阈值下的 AP 和平均 AP。实现细节。所有实验均基于 PyTorch 和 MMDetection [27] 实现。由于只有 2 块 GPU 可用采用线性缩放规则 [28] 调整训练期间的学习率。对于主要结果所有模型均在 COCO test-dev 上进行评估。除 SSD 外所有 IoU 平衡模型及其基线均使用 [800, 1333] 的图像尺度训练总共 12 个周期。IoU 平衡的 SSD 及其基线使用 [300, 300] 和 [512, 512] 的图像尺度训练总共 120 个周期。一些论文报告的主要结果是通过将模型训练总时长延长 1.5 倍并采用尺度抖动获得的。我们的实验未采用这些技巧。在消融研究中以 ResNet50 为骨干网络的 RetinaNet 在 train-2017 上训练并在 val-2017 上使用 [600, 1000] 的图像尺度进行评估。以 ResNet50 为骨干网络的 Faster R-CNN 在 train-2017 上训练并在 val-2017 上使用 [600, 1000] 的图像尺度进行评估。对于 PASCAL VOC 和 Cityscapes 的实验采用在 COCO 实验中搜索到的 IoU 平衡损失的最佳参数。对于 Cityscapes我们在 COCO 上预训练模型然后在 Cityscapes 上进行微调。如未特别说明所有其他设置均保持与 MMDetection 提供的默认设置相同。4.2. 主要结果在主要结果中我们将所提出方法的性能与 COCO test-dev 上最先进的目标检测模型在表 1 中进行了比较。为了公平比较我们采用 MMDetection [27] 中重新实现的模型作为基线。对于基于锚点框的检测器IoU 平衡损失函数能够持续提升不同骨干网络的 RetinaNet 的 AP分别提升 1.1%并将 SSD300 和 SSD512 的 AP 大幅提升 1.7% 和 1.3%。对于无锚点检测器 FoveaBoxIoU 平衡损失将 AP 提高了 1.0%。这表明 IoU 平衡损失在不同类型的单阶段检测器上都是有效的甚至在最新的无锚点检测器上也是如此。此外AP₅₀ 的提升仅为 0.1% ∼ 0.8%而 AP₇₅ 的提升为 1.0% ∼ 2.4%这证明了 IoU 平衡损失函数对于精确定位的有效性。与两阶段检测器 Faster R-CNN 相比使用相同骨干网络的 IoU 平衡 RetinaNet 在 AP 上超过了 Faster R-CNN 0.4% ∼ 0.8%甚至在 AP₇₅ 上也超过了 0.2% ∼ 0.8%。4.3. 分析组件分析。不同组件的有效性如表 2 所示。IoU 平衡分类损失和 IoU 平衡定位损失可以分别将 AP 提高 0.7% 和 0.8%将两者结合可以将 AP 提高 1.3%。此外IoU 平衡分类损失在不同 IoU 阈值下的平均精度均有持续提升。这证明了增强分类与定位任务之间相关性的重要性。IoU 平衡定位损失略微降低了 AP50 0.2%但显著提高了 AP80 和 AP90 分别 1.8% 和 1.9%。这表明对于定位损失提升内点样本的梯度权重同时降低离群样本的梯度权重尤其有利于精确定位。表 2IoU 平衡分类损失和 IoU 平衡定位损失对于 RetinaNet-ResNet50 在 COCO val-2017 上的有效性。IoU-Cls 和 IoU-Loc 的缩写分别代表 IoU 平衡分类损失和 IoU 平衡定位损失。表 3分别改变 IoU 平衡分类损失中的 η 和 IoU 平衡定位损失中的 λ 的有效性。IoU 平衡分类损失的消融研究。IoU 平衡分类损失中的参数 ηη 控制模型关注高 IoU 正例的程度。如表 3 所示当 η 等于 1.5 时模型达到最佳性能 AP 35.1%。如图 3a 所示与基线相比IoU 平衡分类损失可以将高 IoU 样本的平均分类分数提高 0.5%∼2.1%并将低 IoU 样本的平均分类分数降低 2.7%∼4.6%这表明 IoU 平衡分类损失确实增强了分类与定位任务之间的相关性。IoU 平衡定位损失的消融研究。如图 2 所示IoU 平衡定位损失中的参数 λ 控制模型增加内点样本梯度范数和减少离群样本梯度范数的程度。定位损失权重 wloc 被手动调整以在改变参数 λ 时保持定位损失的总和不变。如表 3 所示当 λ 等于 1.5 时获得最佳性能 AP 35.2%。如图 3b 所示IoU 平衡定位损失将高 IoU 检测框的百分比相对于基线模型提高了 0.8%∼4.8%。这表明 IoU 平衡定位损失可以使模型更擅长精确定位。图 3(a) 不同 IoU 范围内检测框的平均分类分数。IoU 平衡分类损失可以将高 IoU (0.6 ∼ 0.95) 检测框的平均分类分数提高 0.5%∼2.1%同时将低 IoU (0.5 ∼ 0.55) 检测框的平均分类分数降低 2.7%∼4.6%。(b) IoU 高于对应阈值的检测框的百分比。IoU 平衡定位损失可以将高 IoU 检测框的百分比相对于基线提高 0.8%∼4.8%。表 4IoU 平衡损失对于不同骨干网络的 RetinaNet 在 COCO val-2017 上使用 [800, 1333] 图像尺度的有效性。4.4. 在其他数据集上的泛化能力为了验证我们方法对其他数据集的泛化能力我们还在 PASCAL VOC 和 CityScapes 上进行了实验。图 4基线模型 (a, c) 和 IoU 平衡 RetinaNet-ResNet50 (b, d) 的检测结果可视化。定性评估。对基线模型和 IoU 平衡 RetinaNet-ResNet50 在 COCO val-2017 图像上的一些检测结果进行了可视化以定性评估 IoU 平衡损失的优势。如图 4 所示IoU 平衡损失可以提高高 IoU 检测框的分类分数同时降低低 IoU 检测框的分类分数。此外定位精度也得到了提升。例如图 4a 右上角的熊在使用基线模型时被两个框 A 和 B 检测到分类分数分别为 0.31 和 0.39。应用 IoU 平衡 RetinaNet 后A 的分类分数降低到可视化阈值 0.2 以下并且 B 的定位精度也得到了提升。对于图 4c 中的领带使用基线时的分类分数为 0.25使用 IoU 平衡 RetinaNet 时提高到 0.40。表 6Cityscapes 上的实验结果。模型在 Cityscapes-train 上训练并在 Cityscapes-val 上使用图像尺度 [2048, 800] 和 [2048, 1024] 进行评估。采用 MMDetection 中的默认设置。4.5. 讨论在两阶段检测器上的实验结果。IoU平衡损失函数是通用方法也可以应用于两阶段检测器Faster R-CNN。如表7所示IoU平衡分类损失和IoU平衡定位损失可以分别将AP提高0.4%和0.6%。此外IoU平衡定位损失可以将AP₇₀ ∼ AP₉₀提高1.1% ∼ 1.4%证明了IoU平衡定位损失在提升模型定位精度方面的有效性。然而将两者结合并未获得进一步提升并且对Faster R-CNN性能的提升幅度略逊于单阶段检测器这证明了第1节中分析的问题在两阶段目标检测器中得到了一定程度的缓解。这是因为Faster R-CNN中由RPN生成的回归候选区域与单阶段检测器中人为设计的锚点框相比具有更高的定位精度。用于训练Faster R-CNN的更精确的候选区域缓解了分类分数与定位精度之间的不匹配问题并减少了训练定位分支时的离群样本数量。5. 结论本文中我们证明了当前大多数单阶段目标检测器采用的标准分类损失和定位损失会严重损害模型的定位精度因此我们提出了由IoU平衡分类损失和IoU平衡定位损失组成的IoU平衡损失函数以提高模型的定位精度。IoU平衡分类损失旨在增强分类与定位任务之间的相关性。IoU平衡定位损失旨在降低离群样本的梯度范数同时增加内点样本的梯度范数。在MS COCO、PASCAL VOC和Cityscapes上进行的大量实验表明IoU平衡损失函数显著提升了单阶段检测器的性能尤其是在定位精度方面。