论文阅读笔记:Context-Guided Spatial Feature Reconstruction for Efficient Semantic Segmentation
代码:https://github.com/nizhenliang/CGRSeg
论文:https://arxiv.org/pdf/2405.06228
1 背景
作者认为如何在有限的计算资源下实现先进的分割性能是当前具有挑战的一个问题。
由于特征表示能力有限,轻量级模型很难对前景物体的边界和类别进行建模,这会导致边界分割不准确和误分类等问题。为了解决这些问题,作者设计了矩形自校准模块(Rectangular Self-Calibration Module,RCM)来改进前景物体的位置建模。此外,还提出了一种动态原型引导(Dynamic Prototype Guided,DPG)头来嵌入类别信息,以提高前景物体的类别辨别力。此外,为了进一步引入金字塔上下文来改善特征表示,作者设计了一种上下文引导的空间特征重构网络( Context-guided Spatial Feature Reconstruction Network,CGRSeg ),该网络由金字塔上下文提取、空间特征重构和轻量级头部组成。
所提出的CGRSeg在ADE20K,COCO-Stuff,Pascal Context以更低的计算量和更高的吞吐量达到了SOTA的表现。ADE20K的表现如图1。
2 创新点
(1)提出矩形自校准模块,提高了定位前景物体和提取金字塔上下文的能力。
(2)提出动态原型引导头,通过显式的类嵌入来改进前景物体的分类。
3 方法
之前的工作已经表明,前景对象建模和金字塔上下文提取对于分割至关重要。为此,作者设计了一个上下文引导的空间特征重构网络( CGRSeg )。如图2所示,CGRSeg由3个关键部分组成:金字塔上下文提取、空间特征重建和轻量级头部。同时提出了矩形自校准模块( RCM )和动态原型引导( Dynamic Prototype Guided,DPG )头部来辅助模型预测更准确。
RCM用于提取金字塔上下文,它应用水平和垂直池化来捕获两个方向的轴向上下文。此外,RCM使用MLP进一步增强特征表示。如图2所示,模型采用逐级下采样编码器,编码器产生不同尺度的特征作为[
F
1
、
F
2
、
F
3
、
F
4
F_1、F_2、F_3、F_4
F1、F2、F3、F4],分辨率分别为[
H
4
×
W
4
,
H
8
×
W
8
,
H
16
×
W
16
,
H
32
×
W
32
\frac{H}{4} × \frac{W}{4} , \frac{H}{8} × \frac{W}{8} , \frac{H}{16} × \frac{W}{16} , \frac{H}{32} × \frac{W}{32}
4H×4W,8H×8W,16H×16W,32H×32W]。为了保证整个网络的效率,解码器去掉最大尺度特征F1。然后,通过平均池化将低尺度特征F2、F3和F4下采样到
H
64
×
W
64
\frac{H}{64} × \frac{W}{64}
64H×64W 大小,并将它们concat在一起,生成金字塔特征F5。F5被送入多个堆叠的RCM中进行金字塔特征交互,并提取尺度感知的语义特征。最后,对金字塔特征提取后的特征进行拆分并上采样到原始尺度。这一过程可以表述为:
其中, A P ( F , x ) AP(F,x) AP(F,x) 表示对特征图 F F F 使用平均池化操作下采样 x x x 倍。 P P P 是具有金字塔上下文的特征。
为了使解码器特征更加聚焦于前景,使用RCM对空间特征进行重构。具体来说,CGRSeg将来自编码器的低层空间特征与对应尺度的高层特征在解码器中进行融合。利用RCM对融合后的特征进行重构。RCM捕获轴向全局上下文对矩形关键区域进行建模,然后利用形状自校准函数将注意力区域调整到前景。特征金字塔用于指导空间特征重构,使重构后的特征感受到多尺度的信息。
感觉解码器输出的特征图到编码器的红色箭头没有论文介绍清楚。
看了代码才明白具体过程如下:
- 先将式(1)中的金字塔上下文特征 P P P 按合并前的通道数重新拆分,得到和原来通道数一样,但分辨率下采样为原来 1 64 \frac{1}{64} 641 的融合特征 F 2 ′ F_2' F2′, F 3 ′ F_3' F3′, F 4 ′ F_4' F4′
- 先将 F 4 ′ F_4' F4′ 上采样到输入的 1 32 \frac{1}{32} 321,再和经过RCM模块的 F 4 F_4 F4 进行点乘,过程可以表述为 F = u p s a m p l e ( F 4 ′ ) ∗ R C M ( F 4 ) F=upsample(F_4')*RCM(F_4) F=upsample(F4′)∗RCM(F4),
- 然后将 F F F 上采样到输入的 1 16 \frac{1}{16} 161,并和 F 3 F_3 F3 相加,再经过RCM模块与上采样到同样分辨率的 F 3 ′ F_3' F3′ 进行点乘,过程可以表述为 F = u p s a m p l e ( F 3 ′ ) ∗ R C M ( u p s a m p l e ( F ) + F 3 ) F=upsample(F_3')*RCM(upsample(F) + F_3) F=upsample(F3′)∗RCM(upsample(F)+F3)
- 最后将 F F F 上采样到输入的 1 8 \frac{1}{8} 81,并和 F 2 F_2 F2 相加,再经过RCM模块与上采样到同样分辨率的 F 2 ′ F_2' F2′ 进行点乘,过程可以表述为 F = u p s a m p l e ( F 2 ′ ) ∗ R C M ( u p s a m p l e ( F ) + F 2 ) F=upsample(F_2')*RCM(upsample(F) + F_2) F=upsample(F2′)∗RCM(upsample(F)+F2)
代码见:https://github.com/nizhenliang/CGRSeg/blob/main/models/decode_heads/cgr_head.py#L143
for i in range(len(self.in_channels)-1,-1,-1): if i==len(self.in_channels)-1: local_tokens = xx[i] else: local_tokens = xx[i]+ self.conv[i](F.interpolate(results[-1], size=xx[i].shape[2:], mode='bilinear', align_corners=False)) global_semantics = f_cat[i] local_tokens=self.meta[i](local_tokens) flag = self.SIM[i](local_tokens, global_semantics) results.append(flag)
为了提高前景物体的分类效果,作者引入了动态原型引导的分割头。分割头生成动态原型嵌入类别信息。类别嵌入有助于增强不同类别之间的区分度,提高分类精度。
4 模块
4.1 矩形自校准模块
该模块由矩形自校准注意力、BN和MLP组成。如下图。
矩形自校准注意力采用水平池化和垂直池化来捕获两个方向的轴向全局上下文,并使用广播加法对矩形感兴趣区域进行建模。然后,作者设计了一种形状自校准函数对感兴趣区域进行校准,可以使感兴趣区域更接近前景物体。在这里,使用两个大核的条形卷积来解耦校准水平和垂直方向上的注意力图。首先使用水平条形卷积来校准水平方向上的形状,它调整每一行元素,使水平形状更接近于前景物体。然后,使用BN对特征进行归一化,并使用ReLU添加非线性。然后在垂直方向上也使用垂直条形卷积进行校准。通过这种方式,两个方向的卷积可以解耦,适应任何形状。
条卷积的权重是可学习的。如图3所示,通过两个不同权重的条形卷积来改变高亮区域的形状。通过训练,该函数可以学习到合适的权重来调整矩形区域到前景目标。
此外,在图2中,可视化结果表明矩形自校准注意力确实有效地对矩形关键区域进行了建模,并通过形状自校准功能调整特征使其更多地聚焦于前景。形状自校准函数可以表述为如下形式:
其中
ψ
\psi
ψ 表示大核条卷积,
k
k
k 表示条卷积的长度,
ϕ
\phi
ϕ 表示BN + ReLU,
δ
\delta
δ 表示sigmoid函数。
此外,作者设计了一个特征融合函数,将注意力特征与输入特征进行融合。具体来说,使用 3×3 的深度卷积来进一步提取特征的局部细节,然后通过哈达玛积对校准后的注意力特征进行加权:
其中 ψ 3 × 3 \psi_{3×3} ψ3×3 表示核为 3×3 的深度卷积。y是公式(2)计算的注意力特征,⊙表示哈达玛积。
最后RCM的整体框架可以表示为:
其中⊕表示广播加法, H p H_p Hp 和 V p V_p Vp 表示水平和垂直池化, ρ \rho ρ 表示BN和MLP。
4.2 动态原型引导头
为了提高前景的分类效果,做做提出了动态原型引导头。DPG头生成动态原型嵌入信息,将类嵌入特征投影到像素特征空间中,对像素特征进行加权,增强不同类之间的区分度。如图4所示。
首先,将特征投影到类特征空间,然后类空间中的特征与像素空间中的特征相乘,得到动态原型。动态原型能够反映不同类别在每幅图上的特征分布,并跟随输入的动态变化。动态原型的生成过程可表述为:
其中,⊗表示矩阵乘法,
F
p
∈
R
C
×
D
F_p∈R^{C×D}
Fp∈RC×D 表示原型,
F
x
F_x
Fx 是输入特征,
δ
D
→
C
\delta_{D→C}
δD→C 表示将
F
x
F_x
Fx 投影到类特征空间,通道数从D投影到C。
然后,DPG头进一步嵌入类别信息,以增强不同类别之间的区分度。采用全连接层将原型压缩到C × 1维以嵌入类信息并生成类嵌入向量,利用Softmax约束取值在0 ~ 1之间。类嵌入向量1 × C表示每个类中的全局信息。类嵌入向量的计算过程总结为:
其中, δ \delta δ 表示全连接层。 δ D → 1 \delta_{D→1} δD→1 表示将 F p F_p Fp 通道数从D投影到1。
为了将类嵌入向量投影到像素特征空间中,将类嵌入向量乘以转置原型。随着类别嵌入的增强,新的注意力向量具有更强的类别区分能力。然后,使用两个全连接层来捕获注意力向量中的上下文。使用LN对两层之间的特征进行归一化处理。最终,将注意力向量对像素特征进行加权,以强调重要特征,增强特征表示。整个计算过程如下:
其中,LN表示层归一化,ReLU表示ReLU激活函数,
δ
\delta
δ 表示两层全连接层,⊙表示广播哈达玛积。
5 效果
5.1 与SOTA方法对比
ADE20K:
ADE20K上和其他SOTA方法的可视化效果对比:
COCO-Stuff:
Pascal Context:
5.2 消融实验
RCM和DPG头的消融实验:
DPG头和其他头的消融实验:
RCM中的RCA的消融实验:
为了证明是本文方法的有效,作者替换了其他的backbone,效果依然良好,如表7。
RCA中使用广播加法和广播乘法的消融实验:
RCA中的卷积核大小实验:
RCA中融合函数的卷积核大小实验:
6 结论
本文着重于提高前景分类能力,特征重建和前景突出的功能对细节预测帮助很大。