论文阅读笔记:PIDNet: A Real-time Semantic Segmentation Network Inspired by PID Controllers
代码:https://github.com/XuJiacong/PIDNet
论文:https://arxiv.org/pdf/2206.02066v3
主要是解决实时分割领域常使用的双分支网络架构容易出现细节纹理未被预测出的问题。
1 背景
比例积分微分(PID)控制是被广泛应用在机器人操作,化工过程、电力系统等现代动态系统重的一个概念,由于其良好的控制性能,仍然是大多数工业应用的首选。
此外,PID控制器的思想也被推广到其他许多领域。例如,研究人员将PID概念引入到图像去噪,随机梯度下降和数值优化重,以获得更好的算法性能。在本文中,作者利用PID控制器的基本概念为实时语义分割任务设计了一个新的体系结构,并通过大量的实验证明了本文提出的模型的性能超过了以前的所有工作,并在推理速度和准确信之间取得了最佳平衡,如图1所示。
在本文中,作者从PID控制器的角度来看待双分支网络(two branch network, TBN),并指出TBN相当于一个PI控制器,存在如图2所示的超调问题(超调现象通常指的是一个系统或变量在受到外部扰动或冲击后,其短期内的调整幅度超过了长期稳定均衡值,从而产生了过度的反应,论文里想表明的意思应该是高分辨率的细节特征和低分辨率的上下文语义融合时会被平均掉,导致预测的mask细节不够)。图2左边是二阶系统的PI和PID控制器的越阶响应。右边的第一行到最后一行分别是GT,DDRNet-23的输出和本文提出的ADB-Bag-DDRNet-23模型的预测结果。
2 创新点
-
作者在深度CNN和PID控制器之间建立联系,并基于PID控制器架构提出了一族三分支网络。
-
提出了有效的模块,如平衡细节和上下文特征的Bag融合模块,以提高PIDNet的性能。
-
PIDNet在所有现有模型中实现了推理速度和准确性之间的最佳权衡。其中,PIDNet - S以93.2 FPS的速度获得了78.6 %的mIOU,PIDNet - L在Cityscapes测试集上获得了最高的精度( 80.6 % mIOU ),且无加速工具在实时领域中运行。
3 方法
PID控制器包含三个组成部分:比例(P)控制器,积分(I)控制器和微分(D)控制器。如图3顶部图所示,PI控制器的实现可写为:
P控制器专注于当前信号,而I控制器累积所有过去的信号。由于累积的惯性效应,当信号发生相反变化时,简单的PI控制器的输出会出现超调现象。类似地,TBN通过多个具有或不具有步距的卷积层分别解析上下文和细节信息。考虑一个简单的一维示例,其中细节分支和上下文分支均由3层组成,没有批量归一化和ReLU操作。然后,输出映射可以计算如下:
其中,
K
i
D
=
k
31
k
22
k
13
+
k
31
k
23
k
12
+
k
32
k
21
k
13
+
k
32
k
22
k
12
+
k
32
k
23
k
13
+
k
33
k
21
k
12
+
k
33
k
22
k
11
K_i^D=k_{31}k_{22}k_{13}+k_{31}k_{23}k_{12}+k_{32}k_{21}k_{13}+k_{32}k_{22}k_{12}+k_{32}k_{23}k_{13}+k_{33}k_{21}k_{12}+k_{33}k_{22}k_{11}
KiD=k31k22k13+k31k23k12+k32k21k13+k32k22k12+k32k23k13+k33k21k12+k33k22k11,
K
i
C
=
k
32
k
22
k
12
K_i^C=k_{32}k_{22}k_{12}
KiC=k32k22k12。这里
k
m
n
k_{mn}
kmn指的是第m层中卷积核的第n个值。
这段话可以理解为,将输入先简单地考虑成一个一维图像,即长度为N。细节分支为高分辨率分支,每次只进行步距为1,卷积核大小为3的一维卷积,则过了3层这样的卷积后,当前像素点 i i i 的感受野长度为7,范围是 [ i − 3 , i + 3 ] [i-3,i+3] [i−3,i+3],输入输出的映射关系如式(2)。同理,上下文分支为低分辨率分支,每次进行步距为2(因为要下采样),卷积核为3的一维卷积,则过了3层这样的卷积后,当前像素点的感受野长度为15,范围是 [ i − 7 , i + 7 ] [i-7,i+7] [i−7,i+7],输入输出的映射关系如式(3)。这里感觉论文的 “ K i C = k 32 k 22 k 12 K_i^C=k_{32}k_{22}k_{12} KiC=k32k22k12” 是有问题的。
因为 | k m n k_{mn} kmn| 大多都分布在(0, 0.01)之间(对于DDRNet-23,92%的值在这个范围内)并且都以1为界,每一项的系数都随着层数的增加呈指数下降,因此对于每一个输入向量,更多的项意味着更高的可能性对最终输出做出贡献。在细节分支中, I [ i − 1 ] I[i-1] I[i−1]、 I [ i ] I[i] I[i]和 I [ i + 1 ] I[i+1] I[i+1]占总项数的70%以上,这意味着细节分支更注重局部信息。相反,在上下文分支中, I [ i − 1 ] I[i-1] I[i−1]、 I [ i ] I[i] I[i]和 I [ i + 1 ] I[i+1] I[i+1]占总项数的26%以下,因此上下文分支更注重周围信息。
图3-底部显示了上下文分支对局部信息变化的敏感程度较低。空间域中细节分支和上下文分支的行为类似于时间域中的 P(当前)和 I (所有先前)控制器。
在PID控制器的z变换中用
e
−
j
ω
e^{-jω}
e−jω代替
z
−
1
z^{-1}
z−1,可以表示为:
当输入频率ω增大时,I 和 D 控制器的增益将分别变小和变大,因此 P、I 和 D控制器分别作为全通、低通滤波器(保留上下文信息)和高通滤波器(保留细节)工作。由于 PI 控制器更多地关注输入信号的低频部分,无法对信号的快速变化立即做出反应,因此其本身就存在超调问题。D 控制器通过使控制输出对输入信号的变化敏感来减小超调量。图3底部图分别展示了GT,完整分支的预测,仅细节分支的预测和上下文分支的预测,细节分支虽然不精确,但解析了各种语义信息,而上下文分支聚合了低频上下文信息,在语义上类似于一个大的平均滤波器。直接融合细节信息和上下文信息会导致一些细节特征的缺失。由此,本文得出TBN等价于傅里叶域 PI 控制器的结论。
为了缓解这种超调问题,作者在TBN上附加了一个辅助分支的微分分支(ADB),以在空间上模拟PID控制器,并突出高频语义信息。每个对象内部的像素的语义是一致的,只有在相邻对象的边界上才会变得不一致,因此,语义的差异仅在对象边界处非零,ADB的目标是边界检测。因此,作者建立了一个新的三分支实时语义分割架构,即比例-积分-微分网络(PIDNet),如图4所示。
PIDNet拥有三个职责互补的分支:比例(P)分支解析并保留高分辨率特征图中的详细信息;积分(I)分支聚合了局部和全局的上下文信息来解析长距离依赖关系;微分(D)分支提取高频特征预测边界区域。
4 模块
4.1 损失函数
在第一个Pag模块的输出端放置一个语义头,以产生额外的语义损失
l
0
l_0
l0,从而更好的优化网络。采用加权二进制交叉熵损失
l
1
l_1
l1 来处理边界检测不平衡问题,因为粗边界更有利于突出边界区域,增强小目标的特征。
l
2
l_2
l2 代表CE损失,
l
3
l_3
l3 使用边界感知CE损失,即使用边界头的输出来协调语义分割的边界检测任务,并增强Bag模块的功能。边界感知损失BAS-loss可表示为:
其中,
t
t
t 必是阈值,
b
i
b_i
bi 表示边界头的输出,
s
i
,
c
s_{i,c}
si,c 和
s
i
,
c
^
\hat{s_{i,c}}
si,c^ 表示分割的真值和预测中第 i 个像素对于类别 c 的结果。
相当于是对边界区域进行交叉熵损失计算。
因此PIDNet的总损失为:
实验中超参设置为:
λ
0
=
0.4
,
λ
1
=
20
,
λ
2
=
1
,
λ
3
=
1
,
t
=
0.8
λ_0 = 0.4, λ_1 = 20, λ_2 = 1, λ_3 = 1, t = 0.8
λ0=0.4,λ1=20,λ2=1,λ3=1,t=0.8
4.2 Pag:有选择地学习高级语义信息
在PIDNet中,I分支提供的丰富准确的语义信息对于P分支和D分支的细节解析和边界检测至关重要,而这两个分支的层数和通道相对较少。因此,作者将I分支视为其他两个分支的备份,并使其为它们提供所需的信息。与直接和提供的特征图相加的D分支不同,本文引入了一个像素注意力引导融合模块(Pixel-attention-guided fusion module,Pag),用于P分支以有选择地从I分支学习有用的语义特征,如图5所示。
Pag的概念来自注意力机制,定义来自 P 分支和 I 分支特征图中相应像素的向量
v
p
→
v^→_p
vp→和
v
i
→
v^→_i
vi→ ,则sigmoid函数的输出可表示为:
其中
σ
σ
σ 表示这两个像素属于同一对象的可能性,
f
f
f 表示卷积,归一化和Relu等一系列计算过程。如果σ较高,则更信任
v
p
→
v^→_p
vp→,因为 I 分支语义丰富且准确,反之亦然。因此,Pag的输出可以写为:
4.3 PAPPM:快速聚合上下文
DDRNet中的DAPPM模块:
本文基于DDRNet中的DAPPM进行了改进,修改其连接方式使其可以并行化,如图6所示。并将每个尺度的通道数从128减少到96。这个新的上下文聚合模块称为并行聚合 PPM(PAPPM)。将其应用于PIDNet-M和PIDNet-S以保证它们的速度。对于深层模型PIDNet-L,考虑到它的深度,作者仍然选择DAPPM,但减少了通道数以减少计算量并提高速度。
4.4 Bag:平衡细节和上下文
鉴于ADB提取的边界特征,作者采用边界注意力来引导细节 P 和上下文 I 的融合。具体而言,作者设计了一个边界注意力引导融合模块(Boundary-attention-guided fusion module,Bag),如图7所示,分别用细节特征和上下文特征填充高频和低频区域。
需要注意的是,上下文分支在语义上是准确的,但在空间和几何细节方面损失较大,尤其是在边界区域和小物体上。得益于保留了更好空间细节的细节分支,迫使模型在边界区域更加信任细节分支,并利用上下文特征填充其他区域。定义P、I和D特征图对应像素的向量分别为
v
p
→
v^→_p
vp→,
v
i
→
v^→_i
vi→和
v
d
→
v^→_d
vd→,那么sigmoid的输出,Bag的输出和Light-Bag的输出可以表示为:
其中 f f f 表示卷积,归一化和Relu的组合。尽管在Bag中将3×3的卷积替换为Light-Bag中的两个1×1的卷积,但Bag和Light-Bag的功能是相似的,即当 σ > 0.5 σ > 0.5 σ>0.5 时,模型更加信任细节特征,否则更偏向于上下文信息的利用。
5 实验
5.1 消融实验
ADB分支。为了展示本文方法的有效性,作者将ADB和Bag与现有模型相结合,对比发现使用了ADB和Bag策略后,模型取得了比它们原始模型更好的效果,如表1所示。然后加入策略后,推理速度显著下降,这促使作者自己建立了PIDNet。
Pag和Bag的协作。表2展示了Pag和Bag策略协作的优越性。IM表示在ImageNet上预训练。
图8中的特征图可视化显示,在第二个Pag的Sigmoid图中,小物体相比大物体变得更暗, I 分支丢失了更多的细节信息。所以最终会从P分支中获取更多的信息。
Bag模块的输出极大地增强了边界区域和小物体的特征,如图9所示。
PAPPM的效率。对于实时模块来说,一个复杂的上下文聚合模块可能会严重降低推理速度,并且可能超过网络的表征能力。因此,作者提出了PAPPM,它由并行结构和少量参数组成。表3中的实验结果显示,PAPPM实现了与DAPPM 相同的准确性,但对于轻量级模型,速度提升了9.5 FPS。
**
额外损失的有效性**。为了提升整个网络的优化效果并强调每个组件的功能,组着在PIDNet中引入了三个额外的损失。根据表4,边界损失
l
0
l_0
l0和边界感知损失
l
3
l_3
l3对于更好的性能是必要的,特别是边界损失,它强烈证明了D分支的必要性,而在线困难样本挖掘(OHEM)进一步提高了准确性。
5.2 和SOTA方法对比
RTX3090上,使用720*960的分辨率推理CamVid数据集对比效果如表5。
RTX3090上,使用2048*1024的分辨率推理CityScapes数据集对比效果如65。
在Pascal Context上的效果。
6 结论
PIDNet引入对边界的预测来平衡细节和上下文,这对需要精细分割的场景会有帮助和借鉴意义,但对标注的精确性要求更高。