张志文,刘天歌,聂鹏举
(燕山大学信息科学与工程学院,河北秦皇岛 066000)
语义分割的目的是为每个图像像素分配密集标签[1],是计算机视觉的一项重要任务,在自动驾驶、视频监控、机器人传感等领域具有许多潜在的应用前景[2,3].随着全卷积神经网络(Fully Convolutional Networks,FCN)[4]的提出,以FCN 为基础的网络[5~8]不断地提高着语义分割的性能.然而在实际应用中,如何在保持高效推理速度的同时,保证分割结果的精确性,仍亟待解决.
现有高精度分割算法很难满足街景图像实时性的要求.比如残差网络(Residual Networks,ResNet38)[9]和金字塔场景解析网络(Pyramid Scene Parsing Networks,PSPNet)[10]等方法,在Nvidia 1080Ti GPU 上预测一张1 024×2 048 分辨率图像需要大约1 s 的时间.图像级联网络(Image Cascade Neworks,ICNet)[11]设计了一种图像级联网络,使用级联图像输入(即低、中、高分辨率图像),其中低分辨率分支用来获取语义信息,中、高分辨率分支进行粗糙预测的恢复和细化.SwiftNet[12]提出了一种基于共享参数的分辨率金字塔来增加深度模型感受野的新方法,通过一个带有横向连接的轻量级编码器,有效提高了预测的准确性.但上述两种方法的推理速度仍难以满足实时性要求.其他一些方法[13~15]通过降低分辨率和减少特征通道,降低计算成本来满足实时性,但却导致了网络性能的下降.
另一方面,由于街景图像具有光照变化明显、目标遮挡严重、类别分布不均衡等特点,因此整体分割精度不高,小物体的分割尤为明显.然而,小目标(例如交通灯、交通标志等)在街景图像分割任务中通常十分重要.以上问题一定程度上阻碍了街景图像实时分割的可应用性,因此,对街景图像分割技术的进一步研究具有非常重要的现实意义.
为了解决以上问题,本文建立了一个快速的语义分割网络,该网络由细节路径和空间路径组成,网络还包括两个特有模块:图像预处理模块和条状注意力细化模块,同时,本文设计了基于小目标重组的数据增强算法来提升分割结果.本文的主要贡献如下:
(1)提出了基于小目标重组的数据增强方法,通过在一张街景图像上选取合适的小目标,利用对应标签复制小目标,并在另一张图像中,根据语义信息选取合适位置粘贴复制的小目标,同时利用直方图匹配来解决小目标和背景光照不一致的问题,该算法可以提升分割结果2%的平均交并比(mIoU).
(2)设计了一种新型的双路径实时语义分割网络,分为细节路径和空间路径,与其他双路径网络不同,本文网络的两条路径不是相互独立的,而是将细节路径产生的不同分辨率的特征图作为空间路径输入的一部分,实现不同尺度信息的交流和融合,更好地获取图像中的语义信息.
(3)设计了基于不同光照程度的图像预处理模块,并把它嵌入到网络中,通过可训练参数来调控输入图像的亮度和对比度,使不同光照的街景图像在RGB 通道上分别具有亮度和对比度的一致性.
(4)设计了一个条状注意力细化模块,该模块同时包含全局池化和条状池化,其中全局池化获取全局信息,条状池化增强细长形物体的特征表示,把全局信息和局部条状信息结合起来,使用该模块,可以提升结果3%的mIoU.
多尺度信息:由于图像中的物体大小不同,所以多尺度信息对分割结果起到十分重要的作用.图像分割网络Deeplab-V3[16]利用空洞卷积来控制感受野.PSPNet[10]直接采用不同大小的池化操作来获取多尺度信息.但是上述方法依赖于计算量,不适用于实时语义分割.Inception[17~19]系列设计了4 个并行的具有不同卷积核的分支结构,最后对4 个通道进行组合,但同时也增加了计算量.深层特征聚合网络(Deep Feature Aggregation Networks,DFANet)[20]提出了一个具有多次连接结构的语义分割模块来最大化多尺度感受野.双边网络BiSeNetV2[21]提出了一种双分支分割网络,利用细节分支获取细节信息,空间分支扩大感受野,并有效融合二者.HyperSeg[22]设计了一种嵌套的U 型网络用于获取多尺度语义信息.上述3 种算法只适用于低分辨率街景图像,当输入的街景图像分辨率较大时,推理速度会明显下降.
注意力机制:注意力机制可以利用高层信息来指导前馈网络,冻结激活网络(Squeeze-and-Excitation Networks,SENet)[23]对特征图作Squeeze 和Excitation 操作从而对不同通道特征图加权.条状池化网络(Strip Pooling Networks,SPNet)[24]则利用了条状注意力模块来提高捕获远程空间依赖关系和利用通道间依赖项的能力.全局信息和局部信息对于语义分割同等重要,但上述注意力模块均未同时考虑二者.
数据增强:利用合成数据集进行数据增强在近年来得到了广泛的关注.在文献[25,26]中,合成图像是通过从真实世界的图像中复制对象并简单地粘贴在前者中而生成的,在目标检测方面取得了好的结果.在文献[27]中,作者利用已知的真实标签来增加小物体到城市场景中,使用类似的“复制粘贴”策略,同时指出过多或者过少的小目标都不能最大限度地提升分割结果.但是该策略没有考虑到图像之间的光照程度不同的问题,导致粘贴的小物体与背景不匹配,引入了大量噪声.
本文通过“复制粘贴”小目标来对数据集进行增强,本文对小目标(如CityScapes 数据集中的栏杆、交通灯等)均进行数据增强,从而使训练集中的图像扩充一倍,同时可以有效增加小目标在训练集中所占的比例,从而提升了网络的分割结果准确性.
基于小目标重组算法的数据增强算法如图1 所示.其中h代表小目标最低点在图像中的纵坐标,h+10 与h-10 是待插入区域的最高与最低点纵坐标,图1 左半部分展示了直接将小目标物体插入到待插入图像中的算法流程图,图1 右半部分展示了将原图与待插入图像直方图匹配后插入小目标物体的算法流程图.
图1 基于小目标重组算法的数据增强算法示意图
本文算法将共同出现的小目标(如交通灯和电线杆等)同时提取.同时,将小目标粘贴到合适位置,如电线杆粘贴在人行道上,确保插入后符合语义信息.数据增强算法如算法1所示.
基于小目标重组算法的数据增强算法结果如图2所示,图中分别展示了待插入图像、小目标所在图像、直方图匹配后的小目标所在图像、仅使用复制粘贴算法所生成的结果,以及使用本文算法所生成的结果.图中红色框标识的为插入小目标,由图2 可以看到,使用本文算法与仅使用复制粘贴算法[26]相比,插入小目标后的街景图像更自然.
图2 基于小目标重组算法的数据增强算法结果展示
本文的网络整体架构如图3所示,网络骨干部分由细节路径和空间路径组成;网络中还包含图像预处理模块,注意力细化模块和特征融合模块,其中特征融合模块为BiSeNetV2[21]所设计的特征融合模块,故之后不做详细介绍.本文还在空间路径每个卷积块的输出位置加入了辅助损失函数.
图3 网络结构
3.2.1 光照预处理模块
由于街景图像的光照变化明显,同时训练集有限,所以网络在实际预测时结果往往很差,其部分原因是图像预处理通常使用z-score 归一化,但训练集与预测图像的分布有一定差异.针对这一问题,本文设计了一个预处理模块,对图像作线性和非线性变化,优化了街景图像光照不同的问题,同时,该模块随神经网络一起,实现了端到端训练.该模块的步骤如算法2所示.
通过观察图4街景图像的直方图发现,光照程度越强的图像在直方图上数值越大,所以预处理模块首先使用伽马变换改变图像的直方图分布,γ代表直方图的偏移量,γ<1 时,直方图右移;γ>1 时,直方图左移.本文用图像在每个通道上的均值代替γ,经过伽马变换后,不同光照的街景图像在直方图上的分布趋于一致,但图像均值和方差仍有很大差异,因此本文引入线性变化控制图像均值和方差.
图4 街景图像直方图
此外,本文引入了可训练参数α,β来控制l和d,使RGB 三个通道的信息相互交流,其中α为对比度调节因子,β为亮度调节因子,如式(1)所示.
图像预处理模块详细设计如图5所示.通过1×1卷积实现α,β的训练,从而对l和d起到调控作用,又可以加强RGB 三通道的信息交互.不同光照的街景图像经过预处理模块后保持亮度和对比度的一致性.同时,图像预处理模块的运算量可以忽略.
图5 光照预处理模块
3.2.2 特征融合
BiSeNetV2[21]提出的双分支分割网络,其两个分支相互独立,只通过特征融合模块融合了两个分支的最终特征.如图3 所示,本文网络采用横向连接方式将细节路径的信息不断传向空间路径,并利用特征融合模块融合两条路径的信息.同时,本文在空间路径设计了空间多尺度模块,利用不同大小的卷积核获取并融合不同特征.这些设计使得网络可以更好地融合不同的特征.
考虑到运行时间,本文的细节路径只包含3×3 卷积,如表1 所示,网络的细节路径包含4 个阶段,其中第2~4 阶段所产生的特征图将送到空间路径.本文细节路径在第一个阶段使用两个步长为2 的3×3 卷积降低图像分辨率,节省推理时间,同时保留一定的细节信息.细节路径的作用在于获取细节信息,以及为空间路径提供高质量特征图.
表1 细节路径
相对于细节路径,网络的空间路径设计的更为复杂,其利用细节路径提供的1/8,1/16和1/32的特征图去获取多尺度信息,以此来缓解信息丢失的问题.空间路径的详细设计如表2所示.
表2 空间路径
本文空间路径由空间多尺度模块(Space Multiscale Module,SMM)组成,图6中详细展示了SMM 模块,其中图6(a)和图6(b)是空间路径的基础模块,当步长为1时,使用图6(a)模块;当步长为2时,使用图6(b)模块.图6(a)和图6(b)中的MGConv,即图6(c)模块,是SMM 模块的核心组成,多尺度卷积在图6(c)中完成,考虑到推理时间的要求,该模块中的卷积为分组卷积[28],分组数为输入特征图的数量,相当于分别在每张特征图上做卷积,而不进行通道间的信息交互.分组卷积的扩展比为6,即输出特征图是分组数的6倍.该模块首先将特征图按照1∶2∶1的比例分成三部分,分别用1×3、3×3和3×1卷积核进行分组卷积,之后将分组卷积得到的特征图叠加,该模块很好地获取了多尺度信息,同时,相比只使用3×3分组卷积,计算量减少了2/3.
图6 空间多尺度模块(SMM)
3.2.3 注意力模块
在注意力模块中,本文利用全局池化来捕捉全局信息,同时计算一个注意力向量来对通道级的特征进行加权,指导特征学习.本文采用条形池化来获取条状信息,并将其与全局注意力进行结合,增强如栏杆等条状物体的特征表示.
该模块如图7所示,包含一个全局池化和两个条状池化,条状池化的大小分别为(1×W)和(H×1),其中(H,W)是输入特征图的尺寸,该模块可由式(2)表示:
图7 注意力细化模块
其中,fin和fout代表输入和输出特征,ki是可训练参数,对于全局注意力来说mean()代表全局均值,而对于条状注意力来说,mean()代表条状均值,即特征图的行或者列均值.本文提出的注意力模块实现了对通道级信息和局部条状信息的选取和组合.
3.2.4 损失函数
除了网络最终的预测损失,本文还引入多个辅助损失来监督网络训练,增强网络的特征表示,如图3 所示,本文在每个空间路径卷积块之后插入辅助损失.
如式(3)所示,网络的损失函数是最终的分割损失和辅助损失的总和.其中p和q分别是辅助损失和最后损失的系数,本文在训练网络时,将p和q设为1.
其中,loss1为分割损失,loss2为辅助损失,二者计算方法相同,均如式(4)所示,为交叉熵损失与mIoU 损失之和.该公式的前半部分为交叉熵损失函数,解决mIoU损失的训练不稳定的问题;后半部分为mIoU 损失,一定程度上解决正负样本不平衡问题.
其中,N代表类别数,辅助损失函数中,ytrue表示对应分辨率标签,ypred表示空间路径的预测概率值;最终预测损失函数中,ytrue为真实标签,ypred为网络最后的预测概率值.
本文分析了不同优化器之间的优缺点,采用文献[29]提出的方法,即随机梯度下降法(Stochastic Gradient Descent,SGD)和Adam 配合使用,前期使用Adam 快速收敛,后期切换到SGD,避免Adam 所产生的振荡问题.
对 于CityScapes[30]数据集的前40 000 次迭代 和CamVid[31]数据集的前20 000 次迭代,本文使用Adam优化器,初始学习率为1e-3,bata_1 为0.9,beta_2 为0.999.对于CityScapes 数据集的最后10 000 次迭代和CamVid 数据集的最后5 000 次迭代,使用SGD 优化器,动量为0.9,权重衰减为1e-5,使用“poly”学习率策略,初始学习率设为1e-2.对于CityScapes 数据集,批处理大小为10,对于CamVid数据集,批处理大小为16.在数据增强方面,本文使用随机水平翻转、随机缩放和随机裁剪策略,随机缩放尺度在[0.75,2]范围内.CityScapes裁剪分辨率大小为1 024×2 048,CamVid 裁剪分辨率大小为720×960.
本文不采用任何可以提升分割准确率的评估技巧,比如图像翻转和多尺度测试.对于1 024×2 048 分辨率大小的图像,本文只使用一张1080Ti 卡来测量推理时间,并重复1 000 次迭代,以减小误差.同时,本文采用mIoU来衡量分割精度.
在这一小节中,本文详细研究了框架中每个模块的影响.在下面的实验中,使用相同的网络结构,且网络中的训练策略完全一致,分别对添加各个模块前后的网络在CityScapes[30]和CamVid[31]数据集上进行实验和评估,对于CityScapes 数据集,本文用验证集进行评估.
4.2.1 数据增强
为了验证数据增强算法的有效性,本文在CityScapes 数据集上做了相关实验,统计了每个类别的分割结果,实验结果如表3所示.
由表3 可以看出,与不使用数据增强算法相比,使用本文数据增强算法的8 类小目标的IoU 全部得到了提升,同时,由于本文算法可以有效扩充训练数据,其他未使用数据增强的类别结果也得到了提升.本文算法的mIoU 比不使用数据增强的算法的mIoU 提升了2%,比只“复制粘贴”算法[26]的mIoU 提升了1.1%.本文的数据增强算法同样适用于其他街景图像分割网络.
表3 数据增强实验结果
图8 展示了CityScapes 数据集的可视化分割结果,其中第一列为街景图像原图,第二列为图像标签,第三列为不使用数据增强算法所得到的结果,第四列为使用本文算法所得到的结果.图中红框标识的为不使用数据增强算法所产生的错分区域,可以看出,错分区域得到了明显改善.
图8 数据增强结果展示
4.2.2 预处理模块
为了验证图像预处理模块的有效性,本文在Cam-Vid 数据集和CityScapes 数据集做了相关实验,如表4所示.
表4 预处理模块结果
预处理模块能够有效提升CamVid 数据集分割效果,但对于CityScapes 数据集基本没有提升.其原因在于CamVid 数据集包含图像较少,且光线变化强烈.相比之下,CityScapes 数据集只包含白天的街景图像,而且训练集足够大.因此本文只对CamVid 数据集使用图像预处理模块.
4.2.3 注意力模块
为了验证本文条状注意力细化模块的作用,本文在CityScapes数据集上进行了以下实验.实验结果如表5所示.
表5 注意力模块结果
图9 展示了3 个实验在CityScapes 数据集上的可视化结果,其中第一列为街景图像原图,第二列为图像标签,第三列为不使用注意力模块所得到的分割结果,第四列为使用注意力模块所得到的分割结果.图中红框标识的为不使用数据增强算法所产生的错分区域,使用本文的注意力模块后,错分区域得到了明显改善.
图9 注意力细化模块结果展示
4.2.4 空间多尺度模块
本文在空间路径中设计了空间多尺度模块,本文在CityScapes 数据集和CamVid 数据集上进行了实验,统计了每秒处理帧数(FPS)和mIoU,实验结果如表6所示.
表6 空间多尺度聚合模块
在推理速度方面,空间多尺度模块对输入图像尺寸敏感,随着输入图像尺寸增大,其对推理速度影响减小.在推理准确度方面,空间多尺度模块具有比较稳定的提升,该模块可提升同一数据集mIoU约1%.
在本节中,本文将上述最佳模型与2个基准数据集的其他先进的方法进行比较.
CitysSapes:CityScapes 数据集的输入尺寸分为512×1 024[20~22,32~36]和1 024×2 048[4,10~12,37~43]两组,本文网络针对高分辨率图像,故主要与其余输入为1 024×2 048的模型进行对比.如表7所示.
表7 CityScapes实验结果
由表7 可以看出,对于高分辨率的街景图像,本文所提出方法的推理速度明显优于最先进方法,同时保持了较高的分割精度准确性.对于CityScapes 数据集,对比1 024×2 048 的输入,本文方法同样达到了最快的推理速度,比其余方法中最快的SwiftNet[12]要快58 FPS,是其速度的2倍以上.综上所述,本文的方法在分割速度上取得了现有领先水平,同时保持了高精度的分割.
CamVid:CamVid 数据集的输入尺寸为720×960,本文与其他实时分割网络[11,15,20,21,31,40]进行比较,比较的指标包括FPS和mIoU.如表8所示.
表8 CamVid实验结果
本文方法在CamVid 数据集上达到了65.7%的mIoU 和208 FPS,在对比算法中是唯一一个超过200 FPS 的,与ENet[15]、DFANetA[20]、DFANetB[20]、RefineNet[40]、BiSeNetV1[36]相比,本文方法在mIoU 和FPS上都取得了领先地位;与ICNet[11]、SwiftNet[12]等网络相比,本文方法虽然在mIoU 上相对落后,但推理速度比ICNet[11]快180 FPS,比BiSeNetV1-L[36]快92 FPS,比BiSeNetV2[21]快83.5 FPS,比BiSeNetV2-L[21]快175 FPS.在CamVid 数据集上与现有方法相比,本文方法在推理速度上取得了极大的领先,同时保持了较高的分割精度.同时本文的参数数量只有3.4 M,只比ENet[15]的参数量多.
本文提出了一种新的双路径分割网络,极大提升了街景图像实时语义分割的性能.本文设计了光照预处理模块来处理不同光照的图像,提升了不同光照图像的分割精度;本文设计了特殊的注意力模块,同时对全局和局部特征进行组合;本文设计了基于小目标重组的图像增强算法,有效扩充数据集,使mIoU提升了1.8%.最后,本文验证了所提算法在CityScapes 和CamVid 基准数据集上的有效性.对于输入尺寸为1 024×2 048 的CityScapes数据集,FPS和mIoU分别达到了98和70.1%;对于输入尺寸为720×960 的CamVid 数据集,FPS 和mIoU分别达到了208和65.7%.结果显示本文方法在速度上取得极大提升的同时保持了分割精度.