抛弃变压器 E2E检测也可以在全卷积网络中实现
转载自《机器的心脏》
作者:王剑锋
最近,当研究人员热衷于探索变压器在目标检测中的应用时,本文提出了一个新的观点,即使用全卷积网络也可以获得良好的端到端目标检测结果。
目标检测是计算机视觉领域的一个基础研究课题,它利用每幅图像的预定义类别标签来预测包围盒。大多数主流探测器使用人工设计,例如基于锚和非最大抑制的标签分配(NMS)。最近,许多研究者提出了通过距离感知和基于分布的标签分类来消除预定义锚帧集的方法。虽然这些方法已经取得了显著的进步和卓越的性能,但放弃手动设计的NMS后处理可能会阻碍完整的端到端培训。
针对这些问题,研究人员提出了可学习的NMS、软NMS和中心网,可以提高重复数据删除效果,但仍然不能提供有效的端到端培训策略。之后,Facebook AI研究人员提出的DETR将Transformer应用于目标检测任务,取得了与fast R-CNN相当的效果。然而,DETR的训练时间大大延长,在小目标上的表现相对较低。
因此,迪法恩科技和Xi交通大学的研究人员在本文中提出了一个新颖的问题:全卷积网络能否达到良好的端到端目标检测效果?这个问题从标签分配和网络架构两个方面进行了回答和验证。
论文链接:https://arxiv.org/pdf/2012.03544.pdf
项目代码:https://github.com/Megvii-BaseDetection/DeFCN(内部代码迁移审查,稍后发布)
具体来说,基于FCOS,研究人员首次利用全卷积结构实现了E2E对密集预测,即没有NMS后处理。首先,研究人员分析了密集预测的常用方法(如视网膜、FCOS、ATSS等)。),并认为一对多标签分配是依靠NMS的关键。受DETR的启发,研究人员设计了一种具有预测意识的一对一分配方法。
此外,研究人员还提出了3D最大值滤波来增强局部区域特征的表征能力,并提出了一对多辅助损失来加速收敛。该方法基本不修改模型结构,不需要较长的训练时间,可以在现有密集预测方法的基础上平滑过渡。在没有NMS的情况下,该方法在COCO数据集上实现了与FCOS和NMS相同的性能。在代表密集场景的人类数据集上,我们方法的召回率超过了依赖NMS方法的理论上限。
总体方法流程如下图所示:
One-to-many vs. one-to-one
自无锚方法出现以来,NMS作为网络中最后一个启发式环节,一直是实现E2E密集预测的最大障碍。但其实我们可以从RPN、SSD、RetinaNet等上找到。大家一直在遵循这样一个流程:首先为每个目标生成多个预测(一对多),然后移除多个预测(多对一)。因此,如果不移动上一步的标签分配,就必须保留重复数据消除的链接,即使重复数据消除的方法不是NMS,它也会是NMS的替代品(比如RelationNet,比如CenterNet中的max pooling)。
有没有直接做一对一作业的方法?其实有。古代有一种叫MultiBox的方法,对每个目标和每个预测进行二分匹配。事实上,DETR把这种方法的网络变成了变压器。此外,还有一个众所周知的方法:YOLO YOLO也只为每个目标匹配一个网格[1],只是它使用中心点进行匹配,并有一个忽略区域。
Prediction-aware one-to-one
所以,接下来的问题是,我们能否仅仅依靠一对一的标签分配,就能完美摆脱NMS?首先,基于FCOS无中心分支、统一的网络结构和训练方法,研究者对焦损区进行了以下分析实验:
研究人员设计了两种手工制作的一对一赋值方法,模仿RetinaNet(基于锚盒)和FCOS(基于中心点),尽可能做最小的改动,发现NMS和NMS之间的mAP差距可以缩小到4分以内。
然而,研究人员认为,手工设计的标签分配规则将极大地影响一对一的性能。例如,中心规则对偏心对象不友好,在这种情况下,一对一规则不如一对多规则健壮。因此,规则应该具有预测意识。研究人员首先尝试了DETR的想法,并直接采用损失作为双方匹配的成本[2],发现无论是绝对性能还是NMS差距都得到了进一步的提高。
然而,他们知道损失和度量标准经常是不一致的,他们经常不得不为优化问题做出一些妥协(比如加权等)。).也就是说,损失不一定是双方匹配的最佳成本。因此,研究人员提出了一个非常简单的成本:
这看起来有点复杂,但实际上,网络输出的问题代表分类,网络输出的IoU和gt代表回归,进行加权几何平均,并添加一个类似于gt框内部的空间先验。加权几何均值和空间先验分别在后期进行增广。
这是研究人员提出的POTO策略,在没有NMS的情况下进一步提高了性能,也验证了损失不一定是最佳成本[3]。然而,从表1中还发现,POTO的表现仍然不能与一对多的NMS组合相匹配。研究人员认为,问题在于两个方面:
一对一需要网络输出的特性非常尖锐,对CNN提出了严格的要求(这也是Transformer的优势);
一对多带来更强的监管和更快的收敛速度。
因此,采用三维最大值滤波和一对多辅助损失来缓解上述问题。
3D Max Filtering
如图3所示,这个模块只使用卷积、插值和max pooling 3d,速度非常快,不需要写cuda内核。
One-to-many auxiliary loss
鉴于第二点监管力度较弱,收敛速度较慢,研究者仍采用一对多赋值设计辅助损失作为监管,只包括分类损失,不返回损失。作业本身没什么可说的,附录的实验也说明很多做法是可以奏效的。在这里,我想提醒大家注意图2的乘法,这是辅助损失的关键。乘法前一路加一对多辅助损耗,乘法后再加一对一常规损耗。由于1*0=0,1*1=1,所以只需要大致保证一对一赋值的正样本仍然是一对多中的正样本。
实验
除了一些烧蚀实验外,主要实验结果见表1。
此处强调的是什么时间:
越低,分类权重越大,NMS与NMS的差距越小,但绝对性能也会下降[4];太高不好,后续所有实验都用=0.8。
当合理时,空间先验是不必要的,但空间先验可以帮助消除不良区域,提高匹配过程中的绝对性能。研究人员在COCO实验中使用中心采样半径=1.5,在CrowdHuman实验中使用gt盒[5]。
加权几何平均数(Mul)[6]优于加权算术平均数(Add)[7]。
其实去掉NMS最大的好处就是人群场景,这一点在COCO中没有很好的体现。所以我在人类身上做了如下实验:
请注意,CrowdHuman的基本真理是NMS阈值=0.6,只有95.1%的召回率,这也是NMS方法的理论上限。然而,本文的方法没有采用NMS,因此很容易超过这个上限。
研究人员还做了其他一些实验和分析。欢迎阅读原文。
可视化
经过上述改进后,研究人员成功地将一对一的性能提高到了与一对多NMS方法相当的水平。此外,分数图是可视化的,可以发现FCN具有学习非常敏锐的表征的能力,这也是研究人员的一个惊喜。
结果多模态情况下,图形有明显改善。例如,两个对象有一定的重叠(但没有特殊的重叠)。此时,一对多NMS方法除了两个盒子之外,通常在两个对象中间还有一个盒子。这个盒子和前两个盒子之间的欠条不足以达到NMS门槛,但是信心比较高。这种典型的多峰问题在POTO得到了极大的缓解。
Others
有些人可能更关心训练时间,因为在密集预测上做二分匹配,潜意识里应该比较慢。然而实际上,依靠scipy对linear_sum_assignment的优化,实际训练时间只下降了10%左右。
如果对这个时间还是敏感的,可以用topk(k=1)代替二分匹配;Top1实际上是稠密预测中二分匹配的近似解[8]。类似的,k1的情况对应的是一对多的新做法,研究者在这方面做了一些工作,可能会在后面发布。
参考
如果有人感兴趣,你可以尝试摆脱YOLO的NMS,它可以接近30mAP。
注意DETR CE GIoU L1组合这里不用,直接采用损耗本身(Focal GIoU)。研究人员认为,这更符合DETR将损失作为成本的初衷。
其实这里可以给大家留个脑洞,因为成本不需要指导,所以即使是AP也可以直接算成本。
证实了分类和回归之间的冲突在检测任务中是显著的。
原因很简单,CrowdHuman的遮挡问题太严重,中心区域往往被完全遮挡。
实际上,加权几何平均数的负对数是极大损失,而加权算术平均数没有明显的物理意义。
除了锚IoU之外,NoisyAnchor在assign中使用了类似的公式。
更具体地说,top1 (argmin)是Hugarian算法第一次迭代的结果。因为在密集预测下会有很少的冲突,所以在一次迭代中已经接近最佳匹配,这就是为什么匈牙利算法在这里实际上运行得非常快。
知乎链接:https://zhuanlan.zhihu.com/p/332281368
“WAVE SUMMIT 2020深度学习开发者峰会”由深度学习技术与应用国家工程实验室和百度联合主办。来自业界的人工智能专家和开发者将分享AI时代的最新技术发展和工业应用经验。很多顶尖的大学人工智能专家都会有关于AI人才培养的对话,AI开源产品和社区专家也会谈到开源趋势。
这次峰会充满了分享和讨论的干货,以及丰富多彩的展示、体验和互动,为开发者打造专属的AI Party。
12月20日,北京798艺术园751罐,点击阅读原文,参与报名。
剧终
转载,请联系本微信官方账号授权
提交或寻求报告:content@jiqizhixin.com
