来源:2023CVPR
原文链接:https://arxiv.org/abs/2206.02066
源码:GitHub - XuJiacong/PIDNet: This is the official repository for our recent work: PIDNet
双分支网络结构在实时语义分割任务中显示了其有效性和有效性。然而,直接融合高分辨率细节和低频上下文的缺点是细节特征很容易被周围的上下文信息所淹没。这种超调现象限制了现有双分支模型分割精度的提高。在本文中,我们将卷积神经网络(CNN)和比例积分微分(PID)控制器联系起来,揭示了双分支网络等价于比例积分(PI)控制器,后者在本质上存在类似的超调问题。为了解决这一问题,我们提出了一种新的三分支网络结构:PIDNet,它包含三个分支分别解析详细分支、上下文分支和边界信息,并利用边界注意引导详细分支和上下文分支的融合。我们的PIDNets家族实现了推理速度和准确性之间的最佳权衡,它们的准确性超过了在cityscape和CamVid数据集上具有类似推理速度的所有现有模型。其中,PIDNet-S在cityscape上的推理速度为78.6%,推理速度为93.2 FPS;在CamVid上的推理速度为80.1%,推理速度为153.7 FPS。
比例-积分-微分(PID)控制器是一个经典的概念,已广泛应用于现代动态系统和过程,如机器人操作[3],化学过程[24],电力系统[25]。尽管近年来发展了许多具有更好控制性能的先进控制策略,但由于其简单和鲁棒性,PID控制器仍然是大多数工业应用的首选。此外,PID控制器的思想已被推广到许多其它领域。例如,为了更好的算法性能,研究人员将PID概念引入到图像去噪[32]、随机梯度下陷[1]和数值优化[50]中。在本文中,我们利用PID控制器的基本概念设计了一种新颖的实时语义分割任务体系结构,并通过大量实验证明,我们的模型的性能超过了之前的所有工作,实现了推理速度和准确性之间的最佳权衡,如图1所示。
语义分割是视觉场景解析的基本任务,其目标是将输入图像中的每个像素赋给特定的类标签。随着智能需求的不断增加,语义分割已成为自动驾驶[16]、医学影像诊断[2]、遥感影像[54]等应用的基本感知组件。从FCN[31]开始,深度卷积在传统方法上有了很大的改进,逐渐主导了语义分割领域,提出了许多具有代表性的模型[4,6,40,48,59,60]。为了获得更好的性能,我们引入了各种策略来装备这些模型,使其能够在不丢失重要细节的情况下大规模地学习像素之间的上下文相关性。虽然这些模型的分割精度令人鼓舞,但计算成本过高,严重阻碍了其在实时场景中的应用,如自动驾驶汽车[16]和机器人手术[44]。
为了满足实时性或移动性的需求,研究人员提出了许多高效的语义分词模型。具体来说,ENet[36]采用轻量级解码器,在早期阶段对特征图进行下采样。ICNet[58]将小型输入编码到复杂的深度路径中,以解析高级语义。mobilenet[21,42]用深度可分离的卷积取代了传统的卷积。这些早期的工作减少了分割模型的延迟和内存使用,但低精度严重限制了它们在现实世界的应用。最近,文献中提出了许多新颖且有前景的基于双分支网络(Two-Branch Network, TBN)架构的模型,实现了速度和精度之间的SOTA权衡[15,20,38,39,52]。
在本文中,我们从PID控制器的角度来看待TBN的体系结构,并指出TBN等价于PI控制器,其存在如图2所示的超调问题。为了解决这一问题,我们设计了一种新型的三分支网络结构,即PIDNet,并在cityscape[12]、CamVid[5]和PASCAL Context[33]数据集上证明了它的优越性。我们还提供消融研究和特征可视化,以便更好地理解PIDNet中每个模块的功能。源代码可以通过https://github.com/XuJiacong/PIDNet访问
本文的主要贡献有三个方面:
本节将分别讨论实现高精度和实时性要求的代表性方法。
早期的语义分割方法是基于编码器-解码器架构[4,31,40],其中,编码器通过跨步卷积或池化操作逐渐扩大其接受域,解码器使用反卷积或上采样从高级语义恢复详细信息。但是,在对编解码器网络进行下采样的过程中,空间细节很容易被忽略。为了缓解这一问题,提出了扩展卷积[53],在不降低空间分辨率的情况下扩大视场。在此基础上,DeepLab系列[7-9]在网络中采用了不同膨胀率的膨胀卷积,较之前的工作有了很大的改进。注意,由于其非连续的内存访问,扩展卷积不适合硬件实现。PSPNet[59]引入了金字塔池模块(PPM)来解析多尺度的上下文信息,而HRNet[48]则利用多路径和双边连接来学习和融合不同尺度的表示。受到注意机制[47]对语言机器的长期依赖解析能力的启发,将非局部操作[49]引入计算机视觉,得出了许多精确的模型[17,23,55]。
许多网络架构已经被提出,以实现推理速度和准确性之间的最佳平衡,大致可以总结如下。
轻量级编码器和解码器
SwiftNet[35]使用一个低分辨率输入来获得高级语义,另一个高分辨率输入来为其轻量级解码器提供足够的细节。DFANet[27]通过修改Xception[11]的结构引入了一种轻量级主干,Xception[11]是基于深度可分离卷积的,并且减小了输入大小以提高推理速度。ShuffleSeg[18]采用集信道变换和群卷积于一体的ShuffleNet[57]作为骨干,以降低计算量。然而,这些网络大多仍采用编码器-解码器架构,要求信息流经过深层编码器,然后反向通过解码器,这带来了太多的延迟。此外,由于GPU上对深度可分卷积的优化还不成熟,传统的卷积速度更快,具有更多的FLOPs和参数[35]。因此,我们寻求更有效的模型,以避免卷积分解和编码器-解码器架构。
双分支网络架构
大接收域可以提取情境相关性,空间细节对于边界勾画和小尺度目标识别至关重要。为了兼顾这两个方面,BiSeNet[52]的作者提出了一种双分支网络(two-branch network, TBN)架构,该架构包含两个深度不同的分支,用于上下文嵌入和细节解析,以及一个特征融合模块(feature fusion module, FFM),用于融合上下文和细节信息。为了提高该体系结构的表示能力或降低其模型复杂度,人们提出了一些基于该体系结构的后续工作[38,39,51]。具体来说,DDRNet[20]引入了双边连接,增强了上下文和详细分支之间的信息交换,实现了最先进的实时语义分割结果。然而,直接融合原始的详细语义和低频上下文信息,存在对象边界被周围像素过度侵蚀、小对象被相邻的大对象淹没的风险(如图2和3所示)。
PID控制器包含三个部分:比例(P)控制器,积分(I)控制器和微分(D)控制器,如图3-上所示。PI控制器的实现可以写成:
P控制器关注的是当前的信号,而I控制器对过去的所有信号进行累加。由于累加的惯性效应,当信号发生相反变化时,简单PI控制器的输出会发生超调。然后引入D控制器,当信号变小时,D分量变为负值,作为阻尼器减小超调量。类似地,tns通过多个卷积层分别解析上下文和详细信息。考虑一个简单的1D例子,其中详细分支和上下文分支都由3层组成,没有bn和ReLUs。然后,输出映射可以计算为:
其中kmn为m层核的第n个值,由于|kmn|主要分布在(0,0.01)(DDRNet-23为92%),以1为界,每一项的系数随层数增加呈指数递减。因此,对于每个输入向量,项目的数量越大,对最终输出的贡献就越大。对于detail分支,I[I−1]、I[I]和I[I + 1]占总条目的70%以上,说明detail分支更关注局部信息。
而I[I−1]、I[I]、I[I + 1]只占上下文分支总条目的26%以下,因此上下文分支强调的是周围的信息。
如图3-Bottom所示,上下文分支对本地信息变化的敏感度低于细节分支。空间域的细节分支和上下文分支的行为类似于时域的P(当前)和I(之前)控制器。
将PID控制器的z变换中的z−1替换为e−jω,表示为:
当输入频率ω增大时,I、D控制器的增益分别变小、变大,因此P、I、D控制器分别作为全通、低通、高通滤波器工作。由于PI控制器更多地关注输入信号的低频部分,不能立即对信号的快速变化做出反应,所以它本身就存在超调问题。D控制器通过使控制输出对输入信号的变化敏感来减少超调。图3-底部显示了细节分支解析各种语义信息,尽管不准确,而上下文分支聚合低频上下文信息,并类似于在语义上使用一个大型平均过滤器。细节信息与上下文信息的直接融合导致了一些细节特征的缺失。因此,我们得出结论,在傅里叶域中TBN等价于一个PI控制器。
为了缓解超调问题,我们在TBN上附加一个辅助微分分支(ADB)来模拟PID控制器,并在空间上突出高频语义信息。由于每个对象内部像素的语义是一致的,只有在相邻对象的边界上才会发生不一致,所以只有在对象的边界上,语义的差异是非零的,ADB的目标是边界检测。据此,我们建立了一种新的三分支实时语义分割体系结构,即比例-积分-微分网络(PIDNet),如图4所示。
PIDNet拥有三个功能互补的分支:比例(P)分支解析并保存高分辨率特征图中的详细信息;积分(I)分支聚集了局部和全局的上下文信息,以解析长期依赖关系;导数(D)分支提取高频特征,预测边界区域。作为[20],我们也采用级联的剩余块[19]作为骨干,以实现硬件友好性。此外,P、I、D分支的深度设置为适中、深、浅,以实现高效。因此,通过深化和扩大模型,产生了pidnet系列(PIDNet-S, M和L)。
在[20,28,51]之后,我们在第一个Pag模块的输出处放置一个语义头,产生额外的语义损失l0,以便更好地优化整个网络。采用加权二叉交叉熵损失l1来解决边界检测的不平衡问题,而不是dice loss[13]。因为更倾向于粗边界,以突出边界区域,增强小目标的特征。l2和l3表示CE损耗,而l3利用边界头输出的边界感知CE损耗[46]来协调语义分割和边界检测任务,增强Bag模块的功能。BAS-Loss的计算可以写成:
式中,t为预定义阈值,bi, si,c和ˆsi,c分别为c类第i个像素的边界头、分割ground-truth和预测结果的输出。因此,PIDNet的最终损失为:
根据经验,我们设定PIDNet的训练损耗参数为:λ0 = 0.4, λ1 = 20, λ2 = 1, λ3 = 1, t = 0.8。
[20, 35, 48]中使用的横向连接增强了不同比例尺特征图之间的信息传递,提高了特征图模型的表达能力。在PIDNet中,I分支提供的丰富而准确的语义信息对于P和D分支的细节解析和边界检测至关重要,这两个分支所包含的层和通道相对较少。因此,我们将I分支视为其他两个分支的备份,并使其能够向它们提供所需的信息。与D分支直接添加所提供的特征图不同,我们引入了如图5所示的像素注意力引导融合模块(Pixel-attention-guided fusion module, Pag),让P分支有选择地进行融合从I分支中学习有用的语义特性。Pag的基本概念借用了注意力机制[47]。将P分支和I分支的特征图中对应像素的向量分别定义为vp和vi,则Sigmoid函数的输出可以表示为:
σ表示这两个像素属于同一对象的可能性。如果σ高,我们更信任vi,因为I分支语义丰富和准确,反之亦然。因此,Pag的输出可以写成:
(绿色和蓝色对应图4中的上半部分P和I画的比较复杂,实际上这个很常见,作用是融合两个特征,融合的比例σ是根据两者的特征向量自己算出来的)
为了更好地构建全局场景,PSPNet[59]引入了金字塔池化模块(PPM),将多尺度池映射在卷积层之前串联起来,形成局部和全局上下文表示。[20]提出的Deep Aggregation PPM (DAPPM)进一步提高了PPM的上下文嵌入能力,表现出了优越的性能。但DAPPM的计算过程在深度上无法并行化,耗时较长,而且DAPPM在每个尺度上包含的通道太多,可能超出轻量级模型的表示能力。因此,我们修改DAPPM中的连接,使其可并行,如图6所示,并将每个比例的通道数量从128减少到96。这个新的上下文收集模块被称为并行聚合PPM (PAPPM),并应用于PIDNet-M和PIDNet-S以保证它们的速度。对于我们的深度模型:PIDNet-L,考虑到DAPPM的深度,我们仍然选择DAPPM,但是减少了它的通道数,这样计算量更少,速度更快。
考虑到ADB提取的边界特征,我们利用边界注意来指导细节(P)和上下文(I)表示的融合。具体来说,我们设计了一个Boundary-attention-guided fusion module (Bag),如图7所示,分别用细节特征和上下文特征填充高频和低频区域。请注意,上下文分支在语义上是准确的,但它丢失了太多的空间和几何细节,特别是对于边界区域和小对象。由于细节分支更好地保留了空间细节,我们迫使模型更加信任细节分支沿着边界区域,并利用上下文特征填充其他区域。将P、I和D特征映射对应像素的向量分别定义为vp、vi和vd,则Sigmoid、Bag和Light-Bag的输出可表示为:
式中,f为卷积、批量归一化和ReLUs的组合。虽然我们将Bag中的3 × 3卷积替换为Light-Bag中的两个1×1卷积,但Bag和Light-Bag的功能是相似的,即当σ > 0.5时,模型更信任细节特征,而不是上下文信息。
(实际上从上到下是PDI,D作为权重σ,Light-Bag采用1*1小卷积更轻量化,这个和Pag差不多)
在本节中,我们的模型将在cityscape、CamVid和PASCAL Context基准上进行训练和测试。
cityscape。cityscape[12]是最著名的城市场景解析数据集之一,包含了从不同城市的汽车视角收集的5000张图像。这些图像被分为2975、500和1525组,用于训练、验证和测试。图像分辨率为2048×1024,这对于实时模型来说是一个挑战。这里只使用带注释的数据集。
CamVid。CamVid[5]提供701张驾驶场景图片,分为367张、101张和233张,用于训练、验证和测试。图像分辨率960×720,标注类别32个,其中11个类别与以往作品进行了比较。
PASCAL Context 在PASCAL Context[33]中提供了对整个场景的语义标注,其中包含4998张用于训练的图像和5105张用于验证的图像。虽然这个数据集主要用于对高精度模型进行基准测试,但我们在这里使用它来展示PIDNets的泛化能力。对59级和60级场景都进行了评估。
预训练 在对我们的模型进行微调之前,我们通过ImageNet[41]对它们进行预训练,就像之前的大多数工作一样[20,34,35]。我们在最后阶段去掉D分支,直接合并特征来构建分类模型。训练epoch的总数为90个,学习速率最初设定为0.1,并在epoch 30和60乘以0.1。这些图像被随机裁剪到224×224,并水平翻转以增强数据。
训练 我们的训练方案与之前的作品几乎相同[15,20,52]。具体来说,我们采用多聚策略更新学习率,在[0.5,2.0]范围内随机裁剪、随机水平翻转、随机缩放进行数据增强。cityscape、CamVid和PASCAL Context的训练期数、初始学习率、权值衰减、裁剪大小和批处理大小分别为[484,1e−2,5e−4,1024×1024, 12]、[200,1e−3,5e−4,960×720, 12]和[200,1e−3,1e−4,520×520, 16]。在[20,51]之后,我们对cityscape预训练的CamVid模型进行了细调,并在lr < 5e−4时停止训练过程,以避免过拟合
推理 在测试之前,我们的模型都经过训练和val集的城市景观和CamVid。我们在一个由RTX 3090、PyTorch 1.8、CUDA 11.2、cuDNN 8.0和WindowsConda环境组成的平台上测量推理速度。利用[10]及其后提出的度量协议[20,35,45],我们将批处理归一化集成到卷积层中,并将批处理大小设置为1来度量推理速度。
为了证明PID方法的有效性,我们将ADB和Bag与已有的模型相结合。在这里,我们实现了两个具有代表性的双分支网络:BiSeNet[52]和DDRNet[20],它们配备了ADB和Bag,它们在cityscape val集上的精度比原来的模型高得多,如表1所示。然而,额外的计算显著降低了它们的推理速度,这就触发了我们建立PIDNet。
P分支在融合阶段之前利用Pag模块从I分支获取有用信息而不被淹没,引入Bag模块指导详细特征和上下文特征的融合。如表2所示,横向连接可以显著提高模型的精度,而预训练可以进一步提高模型的性能。在我们的方案中,添加横向连接和Bag融合模块或Pag横向连接和添加融合模块的组合是没有意义的,因为在整个网络中要保持细节的一致性。因此,我们只需要比较Add + Add和Pag + Bag的性能就可以了,表2和表3的实验结果说明了Pag与Bag(或Light-Bag)协同的优越性。图8中特征图的可视化显示,在第二个Pag的Sigmoid图中,小对象变得比大对象暗得多,我的分支丢失了更多详细信息。此外,在Bag模块的输出中,边界区域和小目标的特征也得到了很大的增强,如图9所示,这也是我们选择粗边界检测的原因。
对于实时模型,沉重的上下文聚合模块可能会大大降低推理速度,并可能超过网络的表示能力。因此,我们提出了由并行结构和少量参数组成的PAPPM。表3的实验结果表明,在我们的轻量级模型中,PAPPM达到了与DAPPM[20]相同的精度,但加速速度为9.5 FPS。
PIDNet引入了三个额外的损耗,以促进整个网络的优化,并强调每个组件的功能。从表4中可以看出,为了更好的性能,边界损耗l1和边界感知损耗l3是必要的,特别是边界损耗(+1.1% mIOU),这有力地证明了d分支的必要性,而在线Hard Example Mining (OHEM)[43]进一步提高了精度。
对于CamVid[5]数据集,只有DDRNet的准确性可以与我们的模型相比较,所以我们在我们的平台上测试它的速度,为了公平比较,我们的平台比他们的平台更先进。表5的实验结果表明,我们所有模型的精度都超过了80%的mIOU, PIDNet-S-Wider简单地将pidnet的信道数增加了一倍,获得了最高的精度,且比以前的模型有很大的优势。此外,PIDNet-S的精度比先前最先进的模型DDRNet-23-S提高了1.5% mIOU,只增加了约1 ms的延迟。
以往的实时作品都以cityscape[12]作为标准基准,考虑到其高质量的诠释。如表6所示,为了进行公平比较,我们在没有任何加速工具的情况下,在同一个平台上测试了最近两年发布的模型的推理速度。实验结果表明,PIDNets在推理速度和推理精度之间达到了最佳的平衡。其中,PIDNet-L在速度和精度方面超过了SFNet(ResNet18)†和DDRNet-39,测试精度从80.4% mIOU提高到80.64% mIOU,成为实时领域最精确的模型。与其他具有相似推理速度的模型相比,PIDNet-M和PIDNet-S也提供了更高的精度。将Pag和Bag模块从PIDNet-S中移除,我们提供了一个更快的选择:PIDNet-S- simple,它泛化能力较弱,但在延迟小于10 ms的模型中仍然具有最高的准确性。
PAPPM中的Avg(17,8)路径被删除,因为在PASCAL Context[33]中图像大小太小。与其他两个数据集不同的是,本文采用了多尺度和翻转推理的方法,以便与之前的模型进行比较。尽管与之前的两个数据集相比,PASCAL Context中有更少的详细注释,但我们的模型仍然在现有的重型网络中取得了竞争性能,如表7所示。
提出了一种新颖的三分支网络结构:实时语义分割网络PIDNet。PIDNet实现了推理时间和准确性之间的最佳平衡。但由于PIDNet利用边界预测来平衡细节信息和上下文信息,因此为了获得更好的性能,需要在边界附近进行精确的注释,而这通常需要大量的时间。
(思路有点像bmaskrcnn,将边缘信息加进来,但是真的PID有关系吗,还是说只是借用这个形式,和真正的积分微分感觉没有太大关系,不过不得不说效果肯定是好的)