分层多尺度注意力 HRNet-OCR

文章地址:

Hierarchical Multi-Scale Attention for Semantic Segmentation

代码地址:

NVIDIA/semantic-segmentation

HRNet-OCR的思想是,精细的细节(例如对象的边缘或薄的结构)通常可以通过按比例放大的图像尺寸来更好地预测。对于较大结构的预测(需要更多的全局语境),通常缩小图像尺寸更好,因为网络的感受野可以观察到更多必要的语境。如图所示

zoom

中间的图序缩小了0.5倍,能够更好的分割大型结构马路,但对小型的行人效果不好。而右侧的放大2倍以后恰好相反

使用多尺度推理可以解决这一问题,使用多个尺度的平均值通常会改善效果。但会遇到最好的预测与最差的预测相结合的情况,这样用平均值合并预测结果可能会比较差。另外Max-pooling只选择N个尺度中的一个用于给定像素,而最佳结果可能是不同尺度预测的加权组合。

为了解决这个问题,采用了一种注意机制来预测如何在像素级将多尺度预测结合在一起,从而提出了一种分级注意机制,通过该机制,网络学习预测相邻尺度之间的相对权重。由于它的层次性,我们只需要用一个额外的尺度来扩充训练管道。为了在城市景观中获得最先进的结果,我们还采用了粗图像的自动标记策略,以增加数据集中的方差,从而提高泛化能力。

相关方法

  • 多尺度上下文方法:金字塔池PPM可通过组合多尺度上下文来抵消缩小的特征图。PSPNet [5]使用空间金字塔池化模块,该模块使用一系列池化和卷积操作,使用从网络干线的最后一层获得的特征,在多个尺度上组合特征。 DeepLab [6]使用atrus Spatial pyramidpooling(ASPP),该方法采用具有不同扩张程度的空洞卷积,因此与PSPNet相比,创建了更密集的特征。一些更新的文章,ZigZagNet[7]和ACNet[8]利用中间特性而不仅仅是网络主干最后一层的特性来创建多尺度上下文。
  • 关系上下文方法:在实践中,金字塔池技术关注固定的正方形上下文区域,因为池和扩展通常以对称方式使用。这些技术往往是静态的,没有学习。关系上下文方法通过关注像素之间的关系来构建上下文,并且不限于正方形区域。 关系上下文方法的学习性质允许基于图像合成来构建上下文。 此类技术可以为非正方形语义区域(例如,长火车或高个的细灯柱)建立更合适的上下文。 OCRNet [9],DANET [10],CFNet [11],OCNet [12]和其他相关工作[13、14、15、16、17、18、19、20]使用此类关系来构建更好的上下文。
  • 多尺度推理:上面两种方法都使用多尺度评估来获得最佳结果。有两种常见的方法可以在多个尺度上组合网络预测:平均和最大池化。平均池更为普遍,但它涉及对不同规模的产出进行同等加权,这可能是次优的。为了解决这个问题[1,24],使用注意力方法组合多个尺度。[1]利用神经网络的最终特征,在所有尺度上同时训练注意力头。[1]使用特定层面的注意力,[24]使用不同网络层面的特征组合来构建更好的上下文信息。然而,这两种方法都有一个共同的特点,即网络和注意头是用一组固定的一套尺度来训练的。运行时只能使用这些尺度,否则必须重新训练网络。因此本文提出了一种基于层次结构的注意机制,该机制对推理过程中的尺度数目不可知。此外,我们证明了我们提出的分层注意机制不仅提高了平均池的性能,而且允许可视化不同尺度对类和场景的重要性。此外,我们的方法与其他注意或金字塔池方法(如[22、25、26、9、27、10、28])不冲突,因为这些方法使用单尺度图像并执行注意以更好地组合多层次特征以生成高分辨率预测。
  • **自动标记:**特别是针对Cityscapes的最新语义分割工作,已按原样利用了约20,000张粗标签图像来训练最新模型[12,29]。然而,由于标签的粗糙度,每个粗略图像中有相当一部分是未标记的。为了在城市景观上获得最新的结果,我们采用了一种自动标记策略,由Xie等人[2]提出,并在语义切分方面采用了其他半监督自我训练[30,31,32,33,34],以及其他基于伪标记的方法,如[4,35,36,3]。我们为Cityscapes中的粗糙图像生成密集标签,生成的标签几乎没有未标记的区域,因此能够利用粗糙图像的全部内容。

分层多尺度注意力

zoom

我们的注意机制在概念上与[1]非常相似,在[1]中,对每个尺度学习一个密集的掩码,并且这些多尺度预测通过在掩码之间执行逐像素乘法,然后在不同尺度之间执行逐像素求和来获得最终结果,如上图左所示。这种方法称为显示方法。我们的分层方法,是学习相邻尺度之间的相对注意力掩码,而不是学习每个固定尺度的所有掩码。我们预测了一个稠密的像素,即两个图像尺度之间的相对注意力。在实际应用中,为了获得一对缩放图像,我们将一个输入图像按0.5的比例缩放。这样得到一个1倍和一个0.5倍的输入。在进行推理时,我们可以分层应用学习到的注意力,将N个预测量表组合在一起形成一个计算链,如上图右侧所示。计算公式如下。优先考虑低尺度,并逐步发展到更高尺度,想法是,它有更多的全局上下文,可以选择需要通过更高级别的预测来完善预测的位置。

$$\begin{equation}\mathcal{L}_{(r=1)}=\mathcal{U}\left(\mathcal{L}_{(r=0.5)} * \alpha_{(r=0.5)}\right)+\left(\left(1-\mathcal{U}\left(\alpha_{(r=0.5)}\right)\right) * \mathcal{L}_{(r=1)}\right)\end{equation}$$

r是缩放率。训练环节,r=1和r=0.5的两个图像通过共享网络中继发送,该中继生成每个尺度的语义逻辑L和注意力掩码($\alpha$) ,用于组合各尺度之间的逻辑。对于两个尺度的训练和推论,$\mathcal{U}$是双线性上采样运算,∗和+分别是像素方向的乘法和加法。

在推导过程可以使用灵活的缩放尺度,这点和之前的方法也不同。

网络结构

backbone: 图中的trunk是RESNET50,stride为8。对于最好的结果,选择更先进的主干网络HRNet-OCR[9]

分割头: 常规全卷积头,注意力预测是使用单独的头部完成,(3x3 conv) → (BN)→ (ReLU) → (3x3 conv) → (BN) → (ReLU) → (1x1 conv)

辅助分割头: 特征直接来自在OCR之前的HRNet主干。(1x1 conv) → (BN) → (ReLU) → (1x1 conv).在注意力应用到语义逻辑之后,通过双线性上采样将预测图像上采样到目标图像大小。

总结

文章提出了一种用于语义分割的分层多尺度注意方法。在提高分割精度的同时,还提高了内存和计算效率。本文创新性主要在于语义头的多尺度,取得的最好成绩使用的这篇文章的backbone

Segmentation Transformer: Object-Contextual Representations for Semantic Segmentation

See Also