摘要:本文介绍了全局上下文网络(GCNet),通过深入分析非局部网络(NLNet),发现其在重要视觉识别任务中学习的全局上下文与查询位置无关。基于此,提出简化的非局部模块、全局上下文建模框架和GC模块,GCNet在多个视觉任务中性能优异,计算量更低。
关键词:全局上下文网络;非局部网络;自注意力机制;视觉识别;长距离依赖建模
一、引言
在计算机视觉领域,捕捉图像中像素间的长距离依赖关系对理解视觉场景至关重要,这一技术广泛应用于图像分类、目标检测与分割、视频动作识别等任务。传统卷积神经网络主要通过堆叠卷积层来建模长距离依赖,但存在计算效率低和优化困难的问题。非局部网络(NLNet)利用自注意力机制为解决该问题提供了新途径,然而经研究发现,NLNet所建模的全局上下文在不同查询位置近乎相同。
基于此发现,本文提出全局上下文网络(GCNet)。GCNet通过简化非局部模块,构建全局上下文建模框架,并引入全局上下文(GC)模块,有效提升了视觉识别性能,且计算量显著降低,在多个视觉任务中展现出卓越的效果。
二、相关工作
2.1 深度架构
深度架构的发展是推动计算机视觉进步的关键力量。一方面,诸多研究致力于设计基础组件的功能公式,提升网络的图像特征提取能力。例如AlexNet证明了增加卷积神经网络的深度和宽度可提高图像分类准确率;VGG进一步增加深度和宽度,并采用小内核卷积层;GoogLeNet引入1×1卷积减少参数;ResNet提出跳跃连接解决梯度消失问题;DenseNet通过连接操作增强层间信息流动;ResNeXt和Xception利用分组卷积优化网络参数;可变形卷积网络增强几何建模能力;局部关系网络基于像素对关系确定聚合权重。另一方面,针对特定任务的深度架构不断涌现,如MobileNet用于移动视觉应用,ShuffleNet采用通道洗牌优化分组卷积,FCN用于语义分割,YOLO系列实现快速目标检测,I3D和P3D分别通过3D卷积和分离卷积处理视频动作识别任务。
2.2 长距离依赖建模
长距离依赖建模方法主要分为基于成对关系和基于上下文融合两类。基于成对关系的方法多基于自注意力机制,NLNet是其中的开创性工作,其通过计算像素间的成对关系来建模长距离依赖,在多个视觉任务中取得了良好效果。此外,还有OCNet、DANet和CCNet等扩展方法。然而,本文通过实证分析表明,NLNet在许多重要视觉识别任务中实际上是在学习查询无关的全局上下文,而非成对关系。
基于上下文融合的方法则通过聚合全局信息来增强每个位置的特征,如SENet、GENet、PSANet和CBAM等。但这些方法在全局上下文建模方面可能存在局限性。
2.3 自注意力建模
自注意力机制在自然语言处理和视觉识别等领域广泛应用。在自然语言处理中,Transformer通过自注意力机制建模单词间的长距离依赖,推动了机器翻译的发展;在视觉识别中,注意力机制不仅用于像素关系建模,还用于对象 - 对象/对象 - 像素关系建模,在目标检测中发挥了重要作用。本文围绕自注意力机制在像素 - 像素关系建模中的应用展开研究,提出的GCNet及相关分析为该领域提供了新的思路。
三、非局部网络分析
3.1 回顾非局部模块
非局部模块旨在通过聚合其他位置的信息来增强查询位置的特征,其公式为:
z
i
=
x
i
+
W
z
∑
j
=
1
N
p
f
(
x
i
,
x
j
)
C
(
x
)
(
W
v
⋅
x
j
)
z_{i}=x_{i}+W_{z} \sum_{j = 1}^{N_{p}} \frac{f(x_{i}, x_{j})}{\mathcal{C}(x)}(W_{v} \cdot x_{j})
zi=xi+Wz∑j=1NpC(x)f(xi,xj)(Wv⋅xj)
其中,
i
i
i为查询位置索引,
j
j
j枚举所有位置,
f
(
x
i
,
x
j
)
f(x_{i}, x_{j})
f(xi,xj)表示位置
i
i
i和
j
j
j之间的关系,
C
(
x
)
\mathcal{C}(x)
C(x)为归一化因子,
W
z
W_{z}
Wz和
W
v
W_{v}
Wv为线性变换矩阵。
为简化表示,记 ω i j = f ( x i , x j ) C ( x ) \omega_{i j}=\frac{f(x_{i}, x_{j})}{\mathcal{C}(x)} ωij=C(x)f(xi,xj)为归一化的成对关系。非局部模块有高斯、嵌入高斯、点积和拼接四种实例化方式,其中嵌入高斯和高斯应用较为广泛,其架构如图3所示。
非局部模块可视为查询特定的全局上下文建模模块,通过加权求和计算全局上下文向量,进而增强查询位置的特征。然而,其时间和空间复杂度较高,通常仅应用于网络架构的少数位置。
非局部模块的两种实例化方式:嵌入高斯和高斯。特征图以其维度展示,如CxHxW。⊗表示矩阵乘法,⊕表示逐元素广播加法。对于两个不同维度的矩阵,广播操作会首先在各个维度上扩展特征,使两个矩阵维度匹配。
3.2 分析
3.2.1 可视化
为直观理解非局部模块的行为,我们可视化了不同查询位置的注意力图。以嵌入高斯实例化方式为例,在COCO目标检测任务中,我们在Mask R-CNN(FPN和ResNet50骨干网络)上进行实验,仅在
r
e
s
4
res4
res4的最后一个残差模块前添加一个非局部模块。
从COCO数据集中随机选取六张图像,为每张图像可视化三个不同查询位置(红色点)的注意力图(热图)。结果令人惊讶,不同查询位置的注意力图几乎相同,这表明在目标检测任务中,非局部模块可能并未学习像素 - 像素关系,而是在学习全局上下文,计算不同的注意力图可能是多余的。
3.2.2 统计分析
为进一步验证可视化观察结果,我们进行了统计分析。通过计算不同位置的输入特征、注意力图和输出特征之间的余弦距离,来评估它们的差异。平均距离度量定义为:
a
v
g
_
d
i
s
t
=
1
N
p
2
∑
i
=
1
N
p
∑
j
=
1
N
ˉ
p
d
i
s
t
(
v
i
,
v
j
)
avg\_dist = \frac{1}{N_{p}^{2}} \sum_{i = 1}^{N_{p}} \sum_{j = 1}^{\bar{N}_{p}} dist(v_{i}, v_{j})
avg_dist=Np21∑i=1Np∑j=1Nˉpdist(vi,vj)
其中,
d
i
s
t
(
v
i
,
v
j
)
=
(
1
−
c
o
s
(
v
i
,
v
j
)
)
/
2
dist(v_{i}, v_{j})=(1 - cos (v_{i}, v_{j})) / 2
dist(vi,vj)=(1−cos(vi,vj))/2为余弦距离。
在COCO目标检测、Kinetics动作识别和ImageNet图像分类三个标准任务中,对非局部模块的四种实例化方式进行分析。结果显示,输入特征在不同位置具有区分度,但输出的全局上下文特征在不同查询位置几乎相同,注意力图的余弦距离也很小,这再次验证了可视化的结论。
此外,我们还分析了非局部模块在不同网络阶段的表现。随着网络层次的升高,输出特征对查询的依赖性增强。同时,对嵌入高斯和高斯实例化方式进行细粒度分析,进一步揭示了非局部模块在不同任务中的行为差异。
值得注意的是,虽然非局部网络在多数任务中未学习成对关系,但在Cityscapes语义分割任务中,它成功学习了成对关系。然而,简化版的NLNet(仅建模全局上下文)在该任务上也表现出与NLNet相当的性能,这表明在语义分割任务中,准确率的提升可能主要归因于全局上下文建模。
四、方法
主要模块的架构。特征图以特征维度表示,例如C×H×W表示一个通道数为C、高度为H、宽度为W的特征图。⊗表示矩阵乘法,⊕表示广播逐元素加法,⊙表示广播逐元素乘法。
4.1 简化非局部模块
基于嵌入高斯实例化方式在标准任务中的代表性性能,我们以其为基础进行简化。由于不同查询位置的注意力图几乎相同,我们计算一个全局(查询无关)的注意力图,并在所有查询位置共享。同时,省略
W
z
W_{z}
Wz,简化后的非局部模块公式为:
z
i
=
x
i
+
∑
j
=
1
N
p
exp
(
W
k
x
j
)
∑
m
=
1
N
p
exp
(
W
k
x
m
)
(
W
v
⋅
x
j
)
z_{i}=x_{i}+\sum_{j = 1}^{N_{p}} \frac{\exp(W_{k}x_{j})}{\sum_{m = 1}^{N_{p}} \exp(W_{k}x_{m})}(W_{v} \cdot x_{j})
zi=xi+∑j=1Np∑m=1Npexp(Wkxm)exp(Wkxj)(Wv⋅xj)
进一步应用分配律,将
W
v
W_{v}
Wv移到注意力池化之外,得到:
z
i
=
x
i
+
W
v
∑
j
=
1
N
p
exp
(
W
k
x
j
)
∑
m
=
1
N
p
exp
(
W
k
x
m
)
x
j
z_{i}=x_{i}+W_{v} \sum_{j = 1}^{N_{p}} \frac{\exp(W_{k}x_{j})}{\sum_{m = 1}^{N_{p}} \exp(W_{k}x_{m})}x_{j}
zi=xi+Wv∑j=1Np∑m=1Npexp(Wkxm)exp(Wkxj)xj
此简化模块的计算量显著降低,实验表明,它在多个任务上与原始非局部模块性能相当,但计算成本更低。
4.2 全局上下文建模框架
简化的非局部模块可抽象为三个部分:全局注意力池化、特征变换和特征聚合。我们将其视为全局上下文建模框架,定义为:
z
i
=
F
(
x
i
,
δ
(
∑
j
=
1
N
p
α
j
x
j
)
)
z_{i}=F\left(x_{i}, \delta\left(\sum_{j = 1}^{N_{p}} \alpha_{j}x_{j}\right)\right)
zi=F(xi,δ(∑j=1Npαjxj))
其中,
∑
j
α
j
x
j
\sum_{j} \alpha_{j}x_{j}
∑jαjxj为上下文建模模块,通过加权平均聚合所有位置的特征得到全局上下文特征;
δ
(
⋅
)
\delta(\cdot)
δ(⋅)表示特征变换,用于捕捉通道间的依赖关系;
F
(
⋅
,
⋅
)
F(\cdot, \cdot)
F(⋅,⋅)表示融合函数,将全局上下文特征聚合到每个位置的特征中。
有趣的是,挤压激励(SE)模块也是该框架的一个实例。SE模块通过全局平均池化、瓶颈变换和重新缩放函数实现对通道重要性的校准,与我们的框架存在相似之处。
4.3 全局上下文模块
为进一步优化,我们提出全局上下文(GC)模块。在简化非局部模块的基础上,将变换模块的1x1卷积替换为瓶颈变换模块,减少参数数量。同时,在瓶颈变换内部(ReLU之前)添加层归一化,以简化优化并提升性能。
GC模块的公式为:
z
i
=
x
i
+
W
v
2
R
e
L
U
(
L
N
(
W
v
1
∑
j
=
1
N
p
e
W
k
x
j
∑
m
=
1
N
p
e
W
k
x
m
x
j
)
)
z_{i}=x_{i}+W_{v2}ReLU\left(LN\left(W_{v1} \sum_{j = 1}^{N_{p}} \frac{e^{W_{k}x_{j}}}{\sum_{m = 1}^{N_{p}} e^{W_{k}x_{m}}}x_{j}\right)\right)
zi=xi+Wv2ReLU(LN(Wv1∑j=1Np∑m=1NpeWkxmeWkxjxj))
GC模块计算量轻,可应用于多个层,有效捕捉长距离依赖关系。以ResNet-50为例,添加GC模块后,计算量仅增加0.26%,参数增加约9.86%,但性能提升显著。
与非局部模块相比,GC模块建模的全局上下文相同,但计算成本更低;与SE模块相比,GC模块在捕捉长距离依赖方面更具优势,且通过层归一化优化了瓶颈变换的性能。
五、实验
5.1 COCO上的目标检测/实例分割
我们在COCO 2017数据集上进行目标检测和实例分割实验,遵循标准评估设置,使用PyTorch和mmdetection框架进行实验。
5.1.1 消融研究
在COCO 2017验证集上进行消融研究,结果表明:SNL和GC模块在参数和计算量减少的情况下,性能与NL模块相当,显示出原始非局部设计的冗余;在所有残差模块中添加GC模块可显著提升性能;不同位置插入GC模块效果相似,我们选择after1x1作为默认设置;较高层插入GC模块效果更好,且插入所有层(c3+c4+c5)性能提升更明显;瓶颈设计中,层归一化可有效优化性能,且随着瓶颈比率r减小,性能提升;在融合阶段,加法比缩放更有效,注意力池化与加法结合(att+add)效果最佳。
此外,不同归一化方式对GCNet性能有影响,将骨干网络中的fixBN替换为syncBN可提升性能,且在骨干网络和头部都应用syncBN时,GCNet与基线的差距仍然存在。
5.1.2 更强骨干网络实验
在更强的骨干网络(如ResNet-101、ResNeXt-101)上进行实验,添加可变形卷积和采用级联策略。结果显示,即使采用更强的骨干网络,GCNet相比基线仍有显著性能提升,在测试开发集上也验证了方法的鲁棒性。
5.2 ImageNet上的图像分类
在ImageNet数据集上进行图像分类实验,遵循标准设置进行训练和评估。
实验结果表明,GC模块在参数和计算量更低的情况下,性能略优于NL和SNL模块。在所有残差模块中插入GC模块可显著提升Top-1准确率,且计算开销增加极少。与其他方法相比,GCNet在Top-1准确率上优于SENet和CBAM。
5.3 Kinetics上的动作识别
在Kinetics数据集上进行动作识别实验,采用slow-only基线。
消融研究显示,简化的NL模块和GC模块替换NL模块时性能相当,添加更多GC模块可进一步提升性能且计算量更低。与其他方法相比,GCNet在Top-1准确率上优于GloRE和NLNet。
5.4 Cityscapes上的语义分割
在Cityscapes数据集上进行语义分割实验,遵循CCNet的训练设置和超参数。
实验结果表明,SNL头和NL头性能相当,说明自注意力机制的准确率提升主要源于全局上下文建模。所有头相比基线都显著提升性能,表明长距离依赖在语义分割任务中的重要性。在头部集成GC模块后,骨干网络中的GC模块效果不明显。注意力池化与加法结合(GCNet)在参数和计算量相同的情况下,优于普通平均池化与缩放结合(SENet带层归一化)。与其他方法相比,GCNet与DANet、ANN、CCNet和NLNet性能相当。
5.5 可视化
通过可视化GCNet和NLNet的注意力图,发现两者学习到的注意力图相似,且都聚焦于小或薄的物体,有助于检测这些物体。可视化GC模块的输出激活,发现浅层通道激活与类别无关,深层更依赖类别。通过类别选择性指数分析,发现GCNet在深层的类别选择性更低,这表明其全局上下文计算可能避免了局部模糊带来的问题。
六、结论
本文通过实证分析揭示了非局部网络在重要视觉识别任务中学习查询无关全局上下文的现象,基于此提出了GCNet。GCNet通过简化非局部模块、构建全局上下文建模框架和引入GC模块,在多个视觉任务中取得了优异的性能,且计算量显著降低。未来,全局上下文模块有望在生成模型、图学习模型和自监督模型等领域得到进一步扩展和应用。