实时语义分割:PIDNet
PIDNet: A Real-time Semantic Segmentation Network Inspired from PID Controller
Jun 2022
在paperswithcode的实时语义分割任务上靠前:
作者:Jiacong Xu, Zixiang Xiong, Shankar P. Bhattacharyya
原文:https://arxiv.org/pdf/2206.02066.pdf
开源:https://github.com/XuJiacong/PIDNet
https://paperswithcode.com/paper/pidnet-a-real-time-semantic-segmentation
Two-branch network architecture has shown its efficiency and effectiveness for real-time semantic segmentation tasks. However, direct fusion of low-level details and high-level semantics will lead to a phenomenon that the detailed features are easily overwhelmed by surrounding contextual information, namely overshoot in this paper, which limits the improvement of the accuracy of existed two-branch models. In this paper, we bridge a connection between Convolutional Neural Network (CNN) and Proportional-Integral-Derivative (PID) controller and reveal that the two-branch network is nothing but a Proportional-Integral (PI) controller, which inherently suffers from the similar overshoot issue. To alleviate this issue, we propose a novel three-branch network architecture: PIDNet, which possesses three branches to parse the detailed, context and boundary information (derivative of semantics), respectively, and employs boundary attention to guide the fusion of detailed and context branches in final stage. The family of PIDNets achieve the best trade-off between inference speed and accuracy and their test accuracy surpasses all the existed models with similar inference speed on Cityscapes, CamVid and COCO-Stuff datasets. Especially, PIDNet-S achieves 78.6% mIOU with inference speed of 93.2 FPS on Cityscapes test set and 80.1% mIOU with speed of 153.7 FPS on CamVid test set.
摘要:双支路网络结构在实时语义分割任务中显示了其效率和有效性。然而,低层细节和高层语义的直接融合将导致细节特征容易被周围语境信息淹没的现象,即本文中的过冲,这限制了现有两分支模型准确性的提高。在本文中,我们在卷积神经网络(CNN)和比例-积分-微分(PID)控制器之间建立了联系,并揭示了这两个分支网络只是一个比例-积分(PI)控制器,其固有地存在类似的超调问题。为了缓解这个问题,我们提出了一种新的三分支网络体系结构:PIDNet,它具有三个分支,分别解析细节、上下文和边界信息(语义的导数),并在最后阶段使用边界注意来指导细节和上下文分支的融合。PIDNet家族在推理速度和准确性之间实现了最佳权衡,其测试精度优于所有现有模型,在城市景观、CamVid和COCO数据集上具有相似的推理速度。特别是,PIDNet-S在Cityscapes测试集上的推理速度为93.2 FPS,达到78.6%mIOU;在CamVid测试集上的推理速度为153.7 FPS,达到80.1%mIOU。
1 引言
比例-积分-微分(PID)控制器是上个世纪提出的传统概念,已广泛应用于现代动态系统或过程,如机器人操作[3]、化学过程[25]、电力系统[26]。尽管近年来开发了许多具有更好控制性能的先进控制策略,但PID控制器由于其简单但鲁棒的特点,仍然是大多数工业应用的首选。一个科学领域的经典概念可以扩展到许多其他领域。例如,将PID控制器的基本方法引入图像去噪[32]、随机梯度下降[1]和数值优化[49],并与原始方法相比取得了很大的改进。在本文中,我们利用PID控制器的基本概念设计了一种用于实时语义分割任务的深度神经网络架构,该新模型的性能优于所有以前的网络,从而实现了推理速度和准确性之间的最佳权衡,如图1所示。
图1.Cityscapes测试集上实时模型的推理速度和准确性(报告)之间的权衡。蓝星代表我们的模型,而绿色三角形代表其他模型。语义分割是视觉场景分析的一项基本任务,其目标是为给定图像中的每个像素指定一个特定的类标签。随着智能需求的逐渐增加,准确的语义分割已成为许多应用的基本感知组件,例如自动驾驶[17]、医学图像诊断[2]和遥感图像[53]。从FCN[31]开始,深度学习方法在语义分割领域逐渐占据主导地位,并提出了许多具有代表性的模型[4、7、39、47、57、58]。这些学习模型的发展表明,具有良好分割性能的网络体系结构必须具备在不丢失重要细节信息的情况下大规模学习像素之间上下文依赖关系的能力。尽管这些模型取得了令人鼓舞的分割精度,但由于牺牲了太多的空间和时间复杂性,这大大限制了它们在实时情况下的应用,例如自主车辆[17]和机器人辅助手术[43]。
为了满足实时或移动的需求,研究人员提出了许多高效和有效的模型。具体来说,ENet[35]通过采用轻量级解码器和在早期阶段对特征图进行降采样,大大提高了推理速度。ICNet[56]以复杂和深度路径对小尺寸输入进行编码以解析语义,并利用简单和浅路径对大尺寸输入的细节进行编码。MobileNetv2[41]用深度可分离卷积取代了传统卷积,以降低整体模型复杂度,并提出了反向残差块来缓解正则化效应;这些早期工作在减少分割模型的延迟和内存使用方面做出了巨大贡献,但其低精度显著限制了其实际应用。最近,提出了一些基于双支路网络的优秀模型,并在速度和精度方面取得了最先进的性能[16、22、37、38、50、51]。
本文从PID控制器的角度深入分析了双支路网络的基本架构,指出双支路网络只是一个PI控制器,固有地存在超调问题,如图2所示。为了缓解这个问题,我们建立了一种新的三支路网络架构,即比例-积分-微分网络(PIDNet),它具有一个用于边界检测的多个分支。然后,我们在城市景观[13]、CamVid[5]和COCOStuff[6]基准上比较了PIDNet与其他先进模型的性能,以证明其优越性。此外,还提供了烧蚀研究和特征可视化,以更好地理解每个细节模块的功能。代码和预训练模型可通过以下方式访问:https://github.com/XuJiacong/PIDNet
本文的主要贡献有三个方面:
• 我们将深度学习模型与PID控制器连接起来,并提出了一系列基于PID控制器架构的三分支网络。
• 提出了基于选择性学习的连接、快速上下文聚合模块和边界引导融合模块,以提高PIDNET的性能。
• 我们的模型在所有现有模型中实现了推理速度和准确性之间的最佳权衡。特别是,在没有加速工具的Cityscapes测试集上,PIDNet-S以93.2 FPS的速度达到78.6%mIOU,PIDNet-L以31.1 FPS的速度达到80.6%mIOU(实时域中最高)。
2 相关工作
由于实时和普通情况下的网络设计理念有很大不同,我们简要介绍了这两种情况下的一些代表性架构。
2.1 高精度语义分割
大多数早期的语义分割深度学习方法都基于编码器-解码器架构[4,31,39],其中编码器通过级联跨步卷积或池运算逐渐扩大其感受野,解码器使用反卷积或上采样从高层语义恢复细节信息。然而,在编码器-解码器网络的下采样过程中,空间细节很容易被忽略。针对这个问题,提出了扩展卷积[52],它可以在不降低空间分辨率的情况下扩大视野。在此基础上,DeepLab系列[8-10]通过将扩张卷积与网络中不同的扩张率相结合,实现了对以往工作的极大改进。DeepLabs面临的一个关键问题是,由于存在大量非连续内存访问,扩展卷积不适用于当前的硬件。为了缓解这个问题,PSPNet[57]引入了金字塔池模块(PPM)来解析多尺度上下文信息,HRNet[47]采用多路径和双边连接来学习和融合不同尺度表示。受机器翻译中自注意力机制[46]的上下文聚合能力的启发,非局部操作[48]被引入计算机视觉,并引发了许多有意义的语义分割工作[18,24,54]。
2.2 实时语义分割
为了在推理速度和准确性之间实现最佳权衡,研究人员投入了大量精力重新设计网络架构,可以概括为:轻量级编码器和解码器(卷积分解或组卷积)、多尺度输入和双分支网络。具体来说,SwiftNet[34]使用一个低分辨率输入来获得高级语义,另一个高分辨率输入为其轻量级解码器提供足够的细节。DFANet[28]通过修改基于深度可分离卷积的异常[12]的架构,引入了一种轻量级主干,并减少了输入大小以提高推理速度。ShuffleSeg[19]采用ShuffleNet[55]作为主干,将信道洗牌和组卷积相结合,以降低计算成本。然而,这些网络大多仍以编码器-解码器架构的形式存在,需要信息流通过深度编码器,然后反向返回以通过解码器,这给这些模型带来了很大的延迟。此外,由于GPU上深度可分离卷积的优化尚不成熟,传统卷积虽然有更多的浮点和参数,但速度更快[34]。
2.3双支路网络架构
如前几节所讨论的,语境依赖性可以通过大的感受野提取,空间细节对于精确的边界划定和小尺度物体识别至关重要。考虑到这一点,BiSeNet[51]提出了一种双分支网络架构,该架构包含用于上下文嵌入和细节解析的两个不同深度的分支,以及用于融合上下文和细节信息的特征融合模块(FFM)。然后,提出了几种基于该架构的工作,以提高其表示能力或降低模型复杂性[37、38、50]。特别是,DDRNet[22]引入了双边连接,以增强上下文和细节分支之间的信息交换,并实现了实时语义分割的最新成果。然而,细节分支的输出大小是DDRNet中上下文分支的8倍(在BiSeNet中是4倍),它们的直接融合将不可避免地导致对象边界容易被其周围像素腐蚀的现象,并且小规模对象可能被其相邻的大对象淹没,即本文中的过冲,如图2所示。为了缓解超调问题,我们借鉴了自动化工程领域的PID概念,提出了一种三分支网络体系结构:PIDNet,它简单地补充了一个用于边界提取的额外分支,并利用边界来监督上下文和细节特征的融合。
3、方法
PID控制器包含三个具有互补功能的组件:比例(P)控制器表示当前误差,积分(I)控制器累积以前的误差,微分(D)控制器预测未来的误差变化,如图3所示。因此,PID控制器的输出是基于整个时域中的误差生成的。通常,PI控制器可以满足大多数设定点控制场景,但其固有的超调问题[15]。为了获得更好的动态响应,研究人员引入导数控制器进行预测,并在超调发生之前调整控制输出。在双支路网络中,上下文支路通过级联跨步卷积或池层来不断聚合从局部到全局的语义信息,以解析像素之间的长期依赖关系,而细节支路维护高分辨率特征地图,以保留每个像素的语义和定位信息。因此,细节和上下文分支可以被视为空间域中的比例和积分控制器,这解释了分割超调问题的根本原因。
3.1 PIDNet:一种新型的三分支网络
为了缓解超调问题,我们建议为双支路网络提供一个辅助导数支路(ADB),并在空间域中完全模拟PID控制器。每个对象内部像素的语义是一致的,仅在相邻对象的边界上变得不一致,因此语义导数仅在对象边界处非零,ADB的功能应为边界检测。因此,我们建立了一种新的三分支实时语义分割体系结构,即比例积分微分网络(PIDNet),如图4所示。PIDNet具有三个职责互补的分支:比例(P)分支解析并保留其高分辨率特征图中的细节信息;积分(I)分支局部和全局聚合上下文信息,以解析长期依赖关系;导数(D)分支提取高频特征以预测边界区域。整个网络是按照[22]开发的,它采用级联残差块[21]作为主干,用于硬件友好的架构。此外,考虑到相应任务的复杂性,P、I和D分支的深度被安排为中等深度、深度和浅深度,以便高效实现。此外,通过深化和扩展模型,生成了一系列PIDNet(PIDNet-S、PIDNet-M和PIDNet-L)。
根据[22,29,50],我们在第一个Pag模块的输出端放置一个语义头,以生成额外的语义损失l0,从而更好地优化整个网络。代替Dice损失[14],采用加权二进制交叉熵损失l1来处理边界检测的不平衡问题,因为粗边界优先用于突出边界区域并增强小对象的特征。l2和l3代表CE损失,而我们利用边界感知CE损失[45]为l3使用边界头的输出来协调语义分割和边界检测任务,并增强行李模块的功能,可以写成:
其中t表示预定义阈值,bi、si、c和siˆ、c分别是c类第i个像素的边界头输出、分割地面真值和预测结果。因此,PIDNet的最终损失可以总结为:
根据经验,我们将PIDNet的训练损失参数设置为λ0=0.4、λ1=20、λ2=1、λ3=1和t=0.8。
3.2 Pag:选择性学习高级语义
[22、34、47]中使用的横向连接增强了不同特征地图之间的信息传输,并提高了其模型的表示能力。在PIDNet中,I分支提供的丰富而准确的语义信息对于P分支的细节解析至关重要,P分支包含相对较少的层和通道。因此,我们可以将I分支视为其他两个分支的备份,并使其能够向它们提供所需的信息。与直接添加提供的特征图的D分支不同,我们引入了像素注意力引导融合模块(Pag),如图5所示,P分支可以选择性地从I分支学习有用的语义特征,而不会不知所措。基本上,Pag的基本概念借用自自注意力机制[46],但Pag根据实时性要求局部计算注意力。将P支路和I支路提供的特征图中对应像素的向量分别定义为v~P和~ vi,则S形函数的输出将变为:
其中σ表示这两个像素来自同一对象的可能性。如果σ高,我们更信任vi,因为I分支在语义上是准确的,反之亦然。因此,Pag模块的输出可以写成:
3.3 PAPPM:快速聚合上下文
为了更好地构建全局场景,SwiftNet[34]采用了空间金字塔池(SPP)[20]来解析全局依存关系。此外,PSPNet[57]引入了金字塔池模块(PPM),该模块在卷积层之前连接多尺度池映射,以形成局部和全局上下文表示。[22]提出的深度聚合PPM(DAPPM)进一步提高了PPM的上下文嵌入能力,并显示出优越的性能。然而,就深度而言,DAPPM的计算无法并行化,这很耗时,并且DAPPM对于每个尺度包含太多通道,这超过了轻量级模型的表示能力。因此,我们稍微改变了DAPPM中的连接,使其并行化,如图6所示,并将每个尺度的通道数从128个减少到96个。这种新的上下文获取模块称为并行聚合PPM(PAPPM),并应用于PIDNet-M和PIDNet-S中,以提高其速度。对于我们的深度模型:PIDNet-L,考虑到深度,我们仍然选择DAPPM,但将每个比例的通道数从128更改为112。
3.4 Bag:平衡细节和语境
鉴于ADB提取的边界特征,我们建议使用边界注意来指导细节(P)和上下文(I)表示的融合。因此,我们设计了一个边界注意力引导融合模块(Bag)来融合三个分支提供的特征。注意,上下文分支语义丰富,可以提供更准确的语义,但它丢失了太多的空间和几何细节,尤其是对于边界区域和小对象。由于细节分支更好地保留了空间细节,我们迫使模型沿边界区域更信任细节分支,并利用上下文特征填充对象内部区域,这可以通过图7中的Bag来实现。将P、I和D分支输出中对应像素的向量分别定义为v~P、~ vi和v~D,然后,Sigmoid、Bag和Light Bag的输出可以表示为:
其中f表示卷积、批量归一化和RELU的组成。尽管我们用Light Bag中的两个1×1卷积代替了Light Bag中的3×3卷积,但Light Bag和Light Bag的功能是相似的,即当σ>0.5时,模型更信任细节特征,否则首选上下文信息。
4 实验
为了验证我们提出的方法的优越性,我们在Cityscapes、CamVid和COCO Stuff基准数据集上训练了我们的模型,并将其测试精度和推理速度与其他最先进的实时网络进行了比较。
4.1 数据集
城市景观。
Cityscapes[13]是最著名的城市场景解析数据集之一,其中包含5000张从不同城市的汽车角度收集的精细注释图像。这些图像分为2975、500和1525组,用于训练、验证和测试。注释包含30个类,但其中只有19个用于语义分割。所有数据的图像大小为2048×1024,这对实时分割是一个挑战。在这里,我们只使用精细注释的数据集来训练我们的模型,以便与其他网络进行公平比较。
摄像机。
CamVid[5]提供701幅驾驶场景图像,分为367、101和233幅,用于训练、验证和测试。图像分辨率为960×720,注释类别数为32,其中11类用于语义分割。为了与其他像素进行公平比较,忽略了这11类之外的像素。
可可的东西。
我们选择了COCOStuff[6]数据集的10K版本,该数据集也在[22,50]中被利用。该数据集由10K个密集注释图像组成,分为9K个用于训练,1K个用于测试。COCO素材的复杂类别对每个分割模型都是挑战,其中包括91个素材和91个素材类。
4.2 实施细节
预训练。
在三个数据集上训练我们的模型之前,我们首先通过ImageNet[40]对这些模型进行预训练,考虑到预训练对于[22,34]中的横向连接至关重要。我们去掉了D分支,并在最后阶段遵循与DDRNet[22]相同的合并方法来构建分类模型。训练阶段总数为90,初始学习率计划为0.1,在第30和60个阶段乘以0.1。CE损失和SGD,动量为0.9,权重衰减为1e−4用于优化网络。图像被随机裁剪成224×224,并水平翻转以增加数据。
训练
为了公平比较,我们的训练协议几乎与以前的工作相同[16、22、50、51]。具体来说,我们采用多学习率策略来更新每次迭代中的学习率。此外,采用[0.5,2.0]范围内的随机裁剪、随机水平翻转和随机缩放进行数据增强。城市景观、CamVid和COCO材料的训练次数、初始学习率、重量衰减、裁剪大小和批量大小可总结为[484,1e]−2,5e−4,1024×1024,12],[200,1e−3,5e−4960×720,12]和[180,5e]−3,1e−分别为4,640×640,16]。在[22,50]之后,我们微调了由Cityscapes为CamVid预先训练的模型,并提前停止训练过程,以避免过度拟合。
推论
在测试集上进行评估之前,我们的模型通过城市景观和CamVid的训练集和验证集进行训练。我们在由单个RTX 3090、PyTorch 1.8、CUDA 11.2、cuDNN 8.0和Anaconda环境组成的平台上测量了推理速度。使用[11]提出的速度测量协议,继[22,34,44]之后,我们将批量归一化集成到卷积层中,对于Cityscapes、CamVid和COCO Stuff,分别将批量大小设置为1,输入图像大小设置为2048×1024、960×720和640×640。
4.3消融研究
ADB用于两个分支网络。
为了证明ADB的有效性,我们借用PIDNet中的ADB和Bag,并将其与现有模型相结合。在这里,实现了两个具有代表性的两个分支网络:配备ADB和Bag的BiSeNet[51]和DDRNet[22],与原始模型相比,它们在城市景观val集上实现了更高的精度,如表1所示。然而,额外的计算显著降低了它们的推理速度,从而触发我们建立PIDNet。
Pag和Bag的合作。
按元素求和是在横向连接中合并特征的传统方法。我们为P branch提供了Pag模块,以帮助其从I branch学习有用信息,而不是直接添加特征图。此外,在最后阶段引入了Bag模块,以使用边界注意来指导细节和上下文特征的融合。如表2所示,横向连接可以显著提高模型精度,预训练可以进一步提高其性能。在我们的场景中,添加横向连接和行李融合模块或Pag横向连接和添加融合模块的组合没有什么意义,因为细节的保存应该在整个网络中保持一致。因此,我们只需要比较Add+Add和Pag+Bag的性能,表2和表3中的实验结果证明了Pag和Bag(或轻型Bag)协作的优越性。图8中特征图的可视化显示,与第二个Pag的S形图中的大对象相比,小对象变得更暗,其中I分支丢失了更细节的信息。此外,边界区域和小对象的特征在行李模块的输出中得到了极大增强,如图9所示,并解释了我们选择粗边界检测的原因。
PAPPM的效率。
对于实时模型,重上下文聚合模块可能会大大降低推理速度,并可能超过网络的表示能力。因此,我们提出了PAPPM,它由并行结构和少量参数组成。表3中的实验结果表明,PAPPM实现了与DAPPM相同的精度[22],但对于我们的轻型模型,速度提高了9.5 FPS。
额外损失的有效性。
在PIDNet中引入了三个额外的损耗,以促进整个网络的优化,并强调每个组件的功能。根据表4,边界损失l1和边界感知损失l3对于更好的PIDNet性能是必要的,尤其是边界损失(+1.1%mIOU),这有力地证明了D分支的必要性,在线硬示例挖掘(OHEM)[42]进一步提高了准确性。
4.4 比较
摄像机。
对于CamVid[5]数据集,只有DDRNet的精度与我们的模型相当,如表5所示,因此我们在相同设置的平台上测试其速度,以进行公平比较,考虑到我们的平台比他们的更先进。实验结果表明,我们的轻量级模型的精度超过80%mIOU,PIDNet-M达到了最高的精度,比以前的模型有很大的差距,这有力地证明了我们模型的优越性。此外,PIDNet S的准确性超过了以前最先进的模型:DDRNet-23-S 1.5%mIOU,延迟仅增加约1毫秒。
城市景观。
以前的实时作品将城市景观[13]作为标准基准。如表6所示,只有SFNet和DDRNet与我们的模型具有相似的准确性,因此我们在与PIDNet相同的平台上测试它们的速度,以进行公平比较。实验结果表明,PID网络在推理速度和准确性之间达到了最佳平衡。具体来说,PIDNet-L在速度和精度方面超过了SFNet(ResNet-18)和DDRNet-39,并通过将测试精度从80.4%提高到80.6%mIOU而成为实时域中最精确的模型。与推理速度相似的模型相比,PIDNet-M和PIDNet-S也提供了更高的精度。尤其是PIDNet-S成为所有模型中速度最快的一个,其精度高于77.5%mIOU,将满足大多数具有严格延迟和精度要求的应用。实际性能见图10。
可可的东西。
由于COCO文件中的图像大小太小,因此删除了PAPPM中的(17,8)-平均池路径[6]。尽管COCO材料在边界区域的注释不如前两个数据集精确,但我们的模型在效率方面仍具有竞争力,如表7所示。
5、结论
本文提出了一系列三分支网络:用于实时语义分割任务的PIDNET。大量实验表明,PID网络在推理时间和准确性之间实现了最佳权衡。然而,由于PIDNET利用边界预测来平衡细节和上下文信息,因此需要在边界周围进行精确注释以获得更好的性能。