在MS COCO上进行的广泛实验表明,我们的VFNet通过使用不同的骨干来围绕2.0 AP不断地超过最强基线。我们最好的模型VFNet-X-1200与Res2Net-101-DCN在COCO测试开发上实现了单模型单尺度AP 55.1,这是各种目标探测器中最先进的。
几周前,当我在做一个物体检测Kaggle竞赛时,我偶然发现了VarifocalNet。我非常惊讶地看到它与许多SOTA对象检测模型(如YoloV5和EfficientDet)相匹配,在某些情况下甚至优于它们。我自己查阅了这篇论文,我非常喜欢。它引入了许多我发现有趣的新概念,如Varifocal Loss,IoU-awareclassificationscore (IACS),等等。
本文重点研究了目标检测的核心问题——精确选取产生的边界框,优化其精度,并对其进行过滤。在一个小区域内有多个物体的密集物体检测任务中,对象检测模型通常表现不佳。在这些情况下,挑选正确的边界框变得很困难,而像IOU的简单损失函数通常表现不佳(即使它们是正确的,但是重叠太多)。
VarifocalNet使用Varifocal Loss来预测每张图像的IACS。Varifocal Loss是以focal Loss为基础的。如果你对这篇文章感兴趣,请继续往下读!
Varifocal Loss介绍
在我们开始解释变焦损失之前,我们需要看一下它的前身,焦损失。聚焦损失是经典交叉熵损失的升级。它试图通过对困难数据点分配更多的权重来优化类不平衡问题。你可能会想是什么导致了职业失衡的问题。典型的目标检测网络评估每幅图像的候选框位置数量非常高,但其中只有一小部分实际包含有效的目标,这模拟了类不平衡问题。
focal loss本质上为交叉熵引入了一个“调制因子”,减少了损耗贡献[1]简单的例子,并增加了假阴性/阳性的重要性(这允许网络更准确)。
这里需要注意的一点是,在典型的对象检测任务中,正面的例子比负面的例子要少得多(特别是在密集的对象检测任务中)。也许值得在这里停一停,思考一下如何利用这一提示来改focal loss。
非对称地处理正样例和负样例的变焦损失与同等地处理它们的焦损失不同。这意味着正例子的损失减少量与负例子的损失减少量并不相同。
我们用训练目标q来衡量正例,如果一个正面实例的 IoU高,则其对损失的贡献将相对较大。这将训练的重点放在那些高质量的积极榜样上,这些榜样对实现更高的AP而言比那些低质量的榜样更为重要。
为了平衡正例和负例之间的损失,我们在负损失项中加入一个可调节的比例因子α。
我认为损失函数可能是ML模型中最重要的内容之一(如果不是最重要的话)。因此,了解此损耗函数在新模型中的变化非常重要。
IACS和星形框特征表示
在解释VFNet为每幅图像预测的新分数之前,我们必须了解FCOS + ATSS(Fully Convolutional One-stage with Adaptive training sample selection)体系结构,因为这是VFNet基础。许多目标检测网络是基于锚点的,这意味着预测框依赖于贴在图像上的预设锚点。然而,FCOS试图远离锚点,提供无锚点网络(不需要IoU匹配),无建议(使检测仅在一个阶段发生),最后只使用卷积(使它更简单)。
自适应训练样本选择(ATSS)是一种根据对象的统计特征自动选择正样本和负样本的方法。它弥合了基于锚的探测器和无锚的探测器之间的差距。
新SOTA模型的优点在于,它们几乎总是建立在几种新技术之上,并且了解每种技术以及如何将它们组合到一个模型中,这才是优秀数据科学家与其他模型之间的区别(当然,我认为是这样 )。本文不足以深入介绍每个概念,因此,我将尽力简要地解释它们。
FCOS网络预测每个图像的分类得分(除了边界框坐标之外)。VFNet的作者发现,用此分类替换预测的边界框和真实值之间的IoU [1](gt_IoU)可以大大提高性能(COCO为74.7 AP对56.1 AP)。这主要是因为高质量对象检测的主要秘诀是从大量的预测盒中选择正确的边界盒,而gt_IoU不仅比经典分类得分更能做到这一点。
作者还设计了一个更加不同的边界框,即一个更适合此IACS分数的星形框。这个星形盒子有9个固定的采样点[1],可以更准确地捕获上下文信息。该星形框还允许在最终预测之前进行更有效和准确的边界框精炼阶段。VFNet在最后一个边界框优化阶段还使用NMS(非最大抑制)来进一步消除冗余框。
我要注意的最后一件事是,在他们的结果部分中,有一个名为“独立组件贡献”的部分。他们用自己的标准组件替换引入的每个组件,并显示结果的差异。这让我们可以看到每个组件对性能改进的贡献有多大。
总结
通过检查该论文是否有最终实验和结果,表明其性能优于其他SOTA模型。我觉得这里没有必要复制和粘贴巨大的结果表,并且我对网络的工作方式更加感兴趣。希望您现在对整个网络的工作原理有一个更一般的了解。综上所述,VFNet建立在3个主要组件上。第一个是FPN(Feature Proposal Network),第二个是主干CNN,第三个是VFNet Head(使用上文讨论的Varifocal loss和IACS)。
代码可在 https://github.com/hyz-xmaster/VarifocalNet获得。
论文地址 https://arxiv.org/abs/2008.13367
本文作者:Mostafa Ibrahim
deephub翻译组