近期,研究者们对 TRansfoRMeR 在目标检测领域的应用进行了深入探讨,而本文则提出了一种新颖的视角:全卷积网络同样可以实现高效的端到端目标检测。
目标检测作为计算机视觉的重要研究领域,旨在利用图像的预定义类标签来预测其边界框。大多数主流检测器依赖于基于锚的标签分配及非极大值抑制(NMS)等手动设计的过程。最近,许多研究者提出了通过距离感知和基于分布的标签分类方法,来规避预定义锚框集的限制。尽管这些方法在性能上取得了显著提升,但去掉手动设计的 NMS 后处理,依然可能妨碍完全的端到端训练。
为了解决这些问题,研究者们提出了 LeaRnable NMS、Soft NMS 和 CenteRNet 等方案,虽然它们在实现重复删除效果方面有所改进,但仍未能提供有效的端到端训练策略。随后,FACEbook AI 的研究者提出了 DETR,将 TRansfoRMeR 应用于目标检测,取得了与 FAsteR R-CNN 相媲美的效果,但训练时间显著增加,小目标的检测性能也相对较低。
因此,来自旷视科技与西安交通大学的研究者提出了一个新问题:全卷积网络能否实现高效的端到端目标检测?他们从标签分配与网络架构两个方面进行了探索和验证。

论文链接:https://aRxiv.oRg/pdf/2012.03544.pdf
项目代码:https://Github.coM/Megvii-BaseDetection/DeFCN
具体来说,研究者基于 FCOS,首次在密集预测中应用全卷积结构实现无 NMS 后处理的端到端检测。研究者分析了常见的密集预测方法(如 RetinaNet、FCOS、ATSS 等),认为 one-to-Many 的标签分配依赖于 NMS 的设计。受到 DETR 启发,他们设计了一种基于预测的 one-to-one 标签分配方法。
此外,研究者还引入了 3D Max FilteRing,以增强特征在局部区域的表达能力,并提出使用 one-to-Many 辅助损失来加速模型收敛。所提出的方法在不修改模型结构的情况下,无需延长训练时间,能够顺利过渡至现有的密集预测方法。该方法在 COCO 数据集上实现了与使用 NMS 的 FCOS 相当的性能;在表现密集场景的 CRowdHuMan 数据集上,本文的方法的 Recall 甚至超越了依赖 NMS 的理论上限。
整体方法流程如下图所示:

One-to-Many 与 One-to-One
自从无锚框方法问世以来,NMS 作为网络最后一个启发式步骤,始终是实现端到端密集预测的主要障碍。可以看出,从 RPN、SSD、RetinaNet 等方法开始,大家普遍遵循这样的流程:首先为每个目标生成多个预测(one-to-Many),然后再对这些预测进行去重(Many-to-one)。因此,如果不对上一步的标签分配进行调整,就必须保留去重步骤,即使去重方法不是 NMS,也会是其替代方案(如 RelationNet 或 CenteRNet 的 Max pooling)。

那么,是否存在直接采用 one-to-one 标签分配的方法呢?实际上是有的。早期有一种叫 MultiBox 的方法,通过双向匹配为每个目标与每个预测建立联系,而 DETR 则是将该方法的网络结构替换为 TRansfoRMeR。此外,还有广为人知的 YOLO,它同样对每个目标仅匹配一个网格,只是采用了中心点作为匹配依据,并且有忽略区域。
基于预测的 One-to-One
接下来的问题是,能否在密集预测中仅依赖 one-to-one 标签分配,从而较好地消除 NMS 的影响?研究者首先在去掉中心度分支的 FCOS 基础上,统一网络结构和训练方法,使用 Focal LoSS 和 GIoU LoSS 进行了相关实验。

研究者设计了两种手工制作的 one-to-one 标签分配方法,分别模仿 RetinaNet(基于锚框)和 FCOS(基于中心点),尽可能减少修改,结果发现已经可以将有无 NMS 的 MAP 差距缩小至 4 个点以内。
然而,研究者认为手工设计的标签分配规则会显著影响 one-to-one 的性能。例如,中心规则对于偏心物体并不友好,而在这种情况下,one-to-one 规则的鲁棒性往往不如 one-to-Many 规则。因此,他们认为规则应当具备预测意识。研究者首先尝试了 DETR 的思路,直接采用损失作为二元匹配的成本,结果无论是绝对性能还是有无 NMS 的差距均得到了进一步改善。
但他们也意识到,损失和指标之间往往并不一致,损失常常需要在优化问题上做一些妥协(如加权等)。因此,研究者提出了一种非常简单的成本:

该方法看似复杂,但实际上是利用网络输出的概率表示分类,网络输出与真实值的 IoU 作为回归,进行加权几何平均,再加上一个类似于真实框内部的空间先验。加权几何平均和空间先验在后续实验中均进行了消融分析。
这就是研究者提出的 POTO 策略,它进一步提升了在无 NMS 状态下的性能,同时也表明损失并不一定是最佳的匹配成本。然而,从表 1 中可以看出,POTO 的性能仍无法与 one-to-Many+NMS 组合相媲美。研究者认为问题出在两个方面:
one-to-one 需要网络输出的特征非常锐利,这对 CNN 提出了较高要求(这也是 TRansfoRMeR 的优势);
one-to-Many 的策略则提供了更强的监督和更快的收敛速度。
因此,研究者分别采用 3D Max FilteRing 和 one-to-Many 辅助损失来缓解上述问题。
3D Max FilteRing

如图 3 所示,该模块仅使用卷积、插值和 3D 最大池化,速度非常快,且无需编写 CUDA 内核。
One-to-Many 辅助损失
为了应对监督不足和收敛缓慢的问题,研究者依然采用 one-to-Many 标签分配设计了辅助损失,该损失仅包含分类损失,而不涉及回归损失。关于标签分配本身并没有太多需要阐述的,附录的实验也表明多种方法都能有效。值得注意的是,图 2 中的乘法是辅助损失能够有效的关键。在乘法前加上 one-to-Many 辅助损失,乘法后则是 one-to-one 的常规损失。由于 1*0=0,1*1=1,因此只需大致保证 one-to-one 标签分配的正样本在 one-to-Many 中依然是正样本即可。
实验
主要的实验结果已在表 1 中展示,此外还有一些消融实验。

这里 Highlight 几点:
α 越低,分类权重越大,有无 NMS 的差距越小,但绝对性能也会下降;α 过高也不理想,后续所有实验中使用 α =0.8;
在 α 合理的情况下,空间先验并非必需,但它可以在匹配过程中帮助排除不良区域,从而提升绝对性能;在 COCO 实验中,研究者采用中心采样半径=1.5,在 CRowdHuMan 实验中则采用真实框内部;
加权几何平均数(Mul)优于加权算术平均数(Add)。
去掉 NMS 的最大收益主要体现在密集场景,这在 COCO 上并未得到很好体现。因此,研究者在 CRowdHuMan 上进行了如下实验:

值得注意的是,CRowdHuMan 的 ground-truth 使用 NMS 阈值=0.6,仅有 95.1% 的 Recall,这也是 NMS 方法的理论上限。而本文方法未采用 NMS,轻松超越了这一上限。
研究者还进行了其他实验和分析,欢迎查看原文。
可视化
经过上述改进,研究者成功将 one-to-one 的性能提升至可与 one-to-Many+NMS 方法相媲美的水平。此外,还对分数图进行了可视化,可以发现 FCN 能够学习到非常锐利的表示,这让研究者十分惊讶。

结果图中,多峰案例的改善尤为明显。例如,当两个物体有一定重叠但未完全重合时,采用 one-to-Many+NMS 方法时,常常会出现除了各自框外,在两个物体之间还生成一个框的情况,而该框的 IoU 不足以达到 NMS 阈值,但置信度却相对较高。这类典型的多峰问题在 POTO 方法中得到了显著缓解。

其他观察
一些人可能会关注训练时间,潜意识里认为在密集预测中进行二元匹配应该会非常耗时。然而,实际上依赖于 scIPy 对线性匹配的优化,实际训练时间仅下降约 10%。
如果对训练时间仍然敏感,可以使用 topk(k=1)替代二元匹配;在密集预测中,top1 实际上是二元匹配的近似解。类似地,k>1 的情况对应了一种新的 one-to-Many 方法,研究者也对此进行了相关工作,后续可能会公开。
参考资料
如果有人感兴趣,可以尝试在 YOLO 上去掉 NMS,接近 30 MAP。
注意这里没有使用 DETR 的 CE+GIoU+L1 组合,而是直接采用损失本身(Focal+GI)。
