You Should Look at All Objects笔记

YSLAO 文章来自香港大学 ArXiv网址 https://arxiv.org/abs/2207.07889

Introduction

文章指出,大规模对象的性能下降是由于集成FPN后不正确的反向传播路径引起的。它使得骨干网络的每一层都只能看到一定规模范围内的对象。
You Should Look at All Objects笔记_第1张图片图1.基于MMDetection和Detectron2比较ResNet-50-DC5和ResNet-50-FPN之间的检测性能。训练和验证都用的COCO 2017。这里有个我之前不清楚的点,Detectron2和mmDetectron作为目标检测最出名的使用PyTorch的两个工具箱(Toolkit),也就是造轮子神器,里面集成了多种多样的backbones和模型。而对于Faster/Mask R-CNN,提供了三种不同的 backbone 组合:

  • FPN - 采用标准 conv 的 ResNet+FPN backbone,再接 FC heads 分别进行 mask 和 box 预测. 其得到了最佳的速度与精度的平衡. 但其它两种仍有研究价值.
  • C4 - 采用 ResNet conv4 backbone 和 conv5 head. 其是在 Faster R-CNN论文中采用的 baseline.
  • DC5(Dilated-C5) - 采用 ResNet conv5 backbone,其中最后一个卷积块 conv5 采用了 dilations,其后接标准 conv 和 FC heads 用于 mask 和 box 预测. 这是在 Deformable ConvNet 论文中所采用的.

有篇博客写的挺有意思的,一个完整的目标检测网络主要由三部分构成:
Detector = backbone + neck + head,
分类网络迁移过来,用作特征提取器(通过在目标检测数据集上进行微调,并且与后续的网络的共同训练,使得它提取出来的特征更适合目标检测任务),后续的网络负责从这些特征中,检测目标的位置和类别。那么,我们就将分类网络所在的环节称之为“Backbone”,后续连接的网络层称之为“Detection head”。
目前的话,neck这一部分的研究点还是相对来说比较多的,只需要提出一个好的结构或模块,加到现有的sota的网络中,看涨不涨点,涨点了,那就可以发文章了~
而head这一部分,它的作用上面也说到了,就是分类+定位的,结构没什么新颖的,研究的似乎也比较少。
backbone:提取基础特征网络,比如VGG,ResNet,各种Net
neck:提出一个好的结构或模块,更好适应feature,FPN就是一个很出名的neck,还有诸如ASFF、RFB、SPP等好用的模块【据说好,我还没看】
head:分类+定位,

扯远了回来,文章中提到,最先进的检测器成功的共同点是使用特征金字塔网络(FPN)。但在引入FPN后,发现总体检测性能的提高是建立在小目标(APS)平均精度的提高和大目标(APL)平均精度下降的基础上(可以看到APM中目标效果相对还行)。
然后文章提出了两个假设来解释为什么引入FPN会使得检测器有效:

  1. FPN的使用有助于通过融合多个低级和高级特征地图获得更好的表示。
  2. 每个金字塔层都可以负责检测一定尺度范围内的物体,也就是分而治之。
    两个假设得出相同的结论,即AP的增加是由于APS、APM和APL的共同增加。然而,图1中APL的意外下降表明,无FPN和基于FPN的检测框架之间存在其他关键差异,而很少有研究注意到这一点。

在本文中,作者提出从优化的角度研究FPN。除了多尺度特征融合和分治之外,FPN改变的反向传播路径也将直接影响检测框架的性能。
中间解释了一段为什么FPN可以通过改变反向传播路径来影响检测框架。
因此,实现具有不同尺度范围对象的AP一致性改进的关键就在于使每个主干阶段都能在训练期间看到所有对象。You Should Look at All Objects点题。

作者扩展反向传播路径的方法是引入辅助目标函数,以便原始信号和额外信号可以共同监督相应主干层的学习。这种方法成功的关键技术是引入不确定性,以更好地平衡各种反向传播信号。修正反向传播路径的策略是以更有效的方式构建特征金字塔,从而使各级骨干网都能接收到足够的信号。该方法的关键技术是用于保证同构表示的空间紧凑性的特征分组模块。

Contributions:

  1. 首次从优化的角度说明FPN成功的本质。此外,还提供了新的视角来解释为什么引入传统的FPN会从这个角度抑制大型目标的性能。
  2. 提出了引入由不确定性引导的辅助目标函数,以缓解APS、APM和APL的不一致变化。由于该策略在测试期间没有额外的计算开销,因此可以保持检测器的推理速度不降低。
  3. 提出了一种新的特征金字塔概括范式。其关键思想是使各种尺度目标的反向传播信号能够直接传递到骨干网络的各个层次。还进一步设计了级联结构,以实现更稳健的平均精度(AP)改进。
  4. 在COCO 基准上进行的大量实验验证了分析的合理性和解决方案的有效性。本文的方法在各种框架下(one-stage, two-stage, anchor-based, anchor-free and transformer-based detectors.)的检测性能提高了2%以上。

Revisit FPN

基于FPN的检测框架

  1. 首先基于C建立特征金字塔。
    You Should Look at All Objects笔记_第2张图片
  2. 改写公式,并且用P来预测分配到每个金字塔层次l的目标的分类和回归信息如下:
    在这里插入图片描述
  3. 目标分配规则是用低分辨率金字塔特征(如P5)来预测大尺度目标,用高分辨率金字塔特征(如P2)来预测小尺度目标。在网络优化过程中,金字塔每一级l的损失计算如下:
    在这里插入图片描述
    You Should Look at All Objects笔记_第3张图片
    图2,比较了无FPN检测框架和基于FPN的检测框架之间的反向传播路径。蓝色箭头表示向前,橙色箭头表示向后传播。请注意,只标记到每个主干级别的最重要的反向传播信号。

首先简单回顾了一下 FPN, 其主要包含三个部分:top-down, bottom-up 和 lateral connection, 和基础骨干网络主要的区别如上图2所示。
作者认为从优化的角度来看,有FPN的检测器优于无FPN检测器的关键原因是:无FPN检测框架的浅层在反向传播back-propogation 的时候都没有收到有效地监督信号(只有C5直接接受监督),然而有FPN的检测框架所有的骨干网络特征都能够得到直接的监督信号。

验证实验:简单来说,就是往没有FPN的检测器的特征层添加一些辅助的监督损失。往公式上说,就是除了C都戴上了个帽子。

You Should Look at All Objects笔记_第4张图片
结果肉眼可见的四条柱子都基本平了,这代表着FPN-free 和 FPN-based 检测器没有什么性能差异了。所以可以得出结论,FPN 结构中最底层的特征主要用来监督学习小目标,所以学到的 Feature 仅对小目标有比较好的检测能力。同样的,最底层的特征会向后传播,对大目标检测能力会随着传播不断减弱(梯度消失),所以最后得到的 Feature 对大目标有相对较弱的检测能力。从优化的角度来看,FPN成功的本质是缩短了目标损耗和骨干网络浅层之间的反向传播距离。文章也解释了为什么FPN总体检测性能的改进建立在APS增加和APL减少的基础上的。

Methodology

文章提出两个策略,一是引入辅助损失,二是重构更好的特征金字塔。

辅助损失:

由于引入辅助损失可以帮助拥有查看所有目标的能力,作者仿照上面柱图的方法,提出了将不确定性纳入到各个分类和回归辅助损失中,如下:
在这里插入图片描述
其中 α \alpha α是不确定性,是通过一个预测函数得到。这里 (x) 是 feature map, (w) 和 (b) 是可学习的参数。
在这里插入图片描述

特征金字塔生成范式:

这个里面有两个改动:
Feature Grouping.
原理是通过一些操作使得多层之间的交互更多。主要是通过一些操作交换不同层 feature 的信道。Mk就是用于实现信道交换的大小为Z×Z的矩阵。
大概就是几层网络得到一个特征转换器来变换 feature, 然后按信道分组,最后跨层交换信道.
You Should Look at All Objects笔记_第5张图片
You Should Look at All Objects笔记_第6张图片

Cascade Structure.
为了更好地提高空间紧凑性,作者提出使用级联结构以从粗到细的方式进行特征分组。其实就是上述得到的中间特征通过几层非线性网络fw再转换一下,在第二阶段,首先将P′l作为特征分组模块的输入,从而ˆP′l

在这里插入图片描述

Experiments

组合 Feature Grouping 和 Cascade 结构能够提升明显,而且 Cascade 次数越多效果越好。
You Should Look at All Objects笔记_第7张图片
You Should Look at All Objects笔记_第8张图片
You Should Look at All Objects笔记_第9张图片

Conclusions

这项工作首先从优化的角度确定了FPN成功的性质。基于这一原理,我们成功地解释了为什么引入FPN会抑制大型目标的检测性能。我们进一步得出结论,解决{APS、APM、APL}中不一致更改问题的关键是使每个主干层都能查看所有对象。
因此,我们建议设计两种策略来实现这一目标。一种是引入辅助损失,以便包含所有对象信息的辅助信号可以直接通过主干网络的浅层。另一种是将级联特征分组结构集成到现有的FPN中,也可以修改目标函数与骨干网络浅层之间的反向传播路径。大量实验证明了本文的正确性和策略的有效性。

你可能感兴趣的:(深度学习,目标检测,计算机视觉,人工智能,神经网络)