结合边缘检测的语义分割算法

2021-07-26 11:56侯志强赵梦琦余旺盛马素刚
计算机工程 2021年7期
关键词:边缘语义卷积

王 囡,侯志强,赵梦琦,余旺盛,马素刚

(1.西安邮电大学计算机学院,西安710121;2.西安邮电大学陕西省网络数据分析与智能处理重点实验室,西安710121;3.空军工程大学信息与导航学院,西安710077)

0 概述

图像分割是将图像中有意义或感兴趣的目标提取出来,用于图像后续处理。传统的图像分割方法根据图像的低层特征信息,例如颜色、纹理、亮度、形状等提取出感兴趣的区域。但在某些复杂情况下,传统方法提取的特征识别度低,分割性能也较差。因此,许多研究者尝试将图像的高级语义信息引入到传统的分割过程中,从而得到图像的语义分割[1]。图像语义分割[2]是计算机视觉中一个重要的研究内容,并且广泛应用于自动驾驶、场景识别、无人机应用等领域[3-5]。

传统的图像分割方法常见的有N-cut 算法[6]、分水岭算法[7]、SLIC 算法[8]等。N-cut 算法[6]通过计算像素与像素之间的关系得到权重参数对图像进行划分,但这种图划分方法需要对一张图像进行多次划分,并且无法对图像中颜色纹理等较为相似的部分进行分割,导致分割结果不佳;分水岭算法[7]是一种典型的区域分割方法,虽然实现简单,并且能够很好地提取图像轮廓信息,但容易产生过分割问题;SLIC算法[8]不仅可以分割彩色图像,而且能够分割灰度图像,它使用像素之间特征的相似性对像素进行分组,并用少量的超像素代替大量的像素来表达图像特征,从而会降低后续图像处理的复杂性,但通常作为其他分割算法的预处理步骤,并且不容易预先确定超像素的个数。

近年来,基于深度学习的图像语义分割方法[9]在语义分割领域中表现出色,分割效果与传统的方法相比有了明显提高。尤其是全卷积网络(Fully Convolution Network,FCN)[10]有效地提升了语义分割的精度,因此出现了很多基于FCN 的改进算法。BADRINARAYANAN 等[11]提出了SegNet 网络用于语义分割,SegNet 网络是一种编解码结构的分割网络,具有更高的分割精度及更快的分割速度,但这种高效的处理会使图像丢失许多高频细节信息,导致目标边缘模糊以及分割结果中的细节丢失;PASZKE等[12]提出的ENet 算法是基于改进SegNet 而来的,虽然提供了较高的分割速度,但同时也影响了分割精度,导致分割精度低;YU 等[13]提出了空洞卷积的思想,在不使用池化操作的情况下会使感受野指数变大,获得全局特征信息,但随之运算量也增大;ZHAO 等[14]提出的金字塔池化模块对不同区域的上下文进行聚合,提升了网络利用全局上下文信息的能力;CHEN 等[15]提出了空洞金字塔池化(Atrous Spatial Pyramid Pooling,ASPP)模块,可以增大空间分辨率,同时不改变感受野效果;CHEN 等[16]提出了DeepLab-v3 结构,在ASPP 模块中加入了批量归一化(Batch Normalization,BN)层,设计了串行和并行的空洞卷积模块,采用多种不同的空洞率来获取多尺度的特征信息,并将所有特征融合一起;之后,CHEN 等[17]提出DeepLab-v3+结构,在DeepLab-v3基础上增加一个解码器模块,构成一个编解码结构的语义分割模型。综上所述,现有方法大多使用空洞卷积、特征融合等方法来提升语义分割效果,但这类方法需要高分辨率的特征图,计算量较大,而且容易丢失边缘细节信息。

针对边缘细节信息丢失的问题,CHEN 等[18]提出通过条件随机场(Conditional Random Field,CRF)对FCN 得到的分割结果进行细节上的优化,但这种处理方法只是利用颜色信息和纹理信息等低层特征来修正分割结果,无法学习目标边缘与输入图像之间的对应关系。HUANG 等[19]在原有的语义分割FCN 结构上构建了边界检测分支,输入图像先进入语义分割模块,从分割模块中构建检测分支来获取目标形状细节信息,但会导致学习的边缘信息不完整,影响语义分割模块的分割效果。

为进一步解决分割中边缘模糊与分割不准确的问题,可考虑结合边缘检测的方法进行语义分割。边缘检测可以得到局部像素灰度的突变,获得封闭或者开放的边缘,提供丰富的低层边缘信息,从而弥补语义分割中的边缘信息丢失。早期边缘检测方法使用Sobel 边缘检测算子[20]、Canny边缘检测算子[21]等方法检测边缘。随着深度学习的发展,很多方法采用卷积神经网络进行边缘检测,如N4-Fields[22]、Deep Edge[23]、Deep Contour[24]等方法。XIE 等[25]提出了整体嵌套边缘检测(Holistically-Nested Edge Detection,HED)算法进行边缘检测,该网络实现了第1 个端到端的边缘检测模型;LIU 等[26]提出了基于更丰富特征的边缘检测(Richer Convolutional Features for Edge Detection,RCF),RCF 首先将网络中每个阶段的特征进行了元素相加操作,然后进行特征融合,RCF 利用了网络中所有卷积层的特征,是目前较好的边缘检测算法。近年来,也出现了一些结合边缘检测的语义分割方法[27-28],但该类方法目前尚不多见。

综上所述,本文提出了一种结合边缘检测网络的语义分割算法。在语义分割网络基础上,并联了边缘检测网络,构建一种结合边缘检测的语义分割模型,利用边缘特征改善语义分割中的目标边缘模糊问题,为语义分割提供丰富准确的边缘信息。设计一个特征融合模块,将边缘特征和语义分割特征进行concat 融合,并对融合后的特征进行多层卷积操作,最终在CamVid 数据集和Cityscapes 数据集上进行实验。

1 本文算法

本文提出一种结合边缘信息的语义分割算法,以此来改善语义分割中边缘模糊、分割不准确等问题,提升语义分割精度。

1.1 网络整体结构

本文所提出的结合边缘检测的语义分割模型采用一种并行结构,如图1所示,主要由边缘检测子网络、语义分割子网络和特征融合模块3 个部分组成(彩图效果见《计算机工程》官网HTML 版)。图1 中的虚线框为边缘检测子网络,该网络能捕获和学习图像的边缘信息,有助于获取目标更多的细节信息,从而可以为语义分割提供更精细的边缘信息。图1中的点线框为语义分割子网络,该网络对输入图像进行下采样,再进行上采样来提取图像的区域特征,得到初步的语义分割特征,但是大量的细节信息在下采样时被丢失。模型的后端是特征融合模块,即图1 中点划线框所包含的部分,将边缘特征和语义分割特征进行卷积操作融合,利用边缘信息更强的边缘特征来改善语义分割中边缘模糊、分割不准确等问题。

图1 语文分割算法模型结构Fig.1 Model structure of semantic segmentation algorithm

1.2 边缘检测子网络

边缘检测子网络的详细网络结构如图2所示。在边缘检测子网络[26]中,整个网络的卷积层分为5 个阶段,每个阶段由卷积层和池化层组成,然后去掉第5 阶段的池化层,最后将第5 阶段的卷积层使用空洞率为2 的空洞卷积[12],空洞卷积的使用有效地避免了池化操作后对高层特征信息的丢失问题,更好地捕获了目标的轮廓特征,使得高层特征中的边缘更加清晰和完整。

图2 边缘检测子网络的结构Fig.2 Structure of edge detection sub-network

5 个阶段的结构如表1所示。

表1 边缘检测子网络5 个阶段的结构Table 1 Structure of edge detection sub-network five-stage

在每个阶段的卷积层之后连接一个核大小为1×1卷积层,然后通过反卷积将特征图进行上采样到原图像大小分辨率,最后利用一个1×1 的卷积层将5 个特征图融合。该网络能捕获和学习图像的边缘信息,可以为语义分割提供更精细的边缘信息。

1.3 语义分割子网络

在语义分割子网络中,其结构采用的是经典的编码器和解码器结构[11]。语义分割子网络的详细网络结构如图3所示。编码阶段沿用VGG16 网络模型,由一连串的卷积层、池化层和BN 层组成。卷积层负责获取图像特征,池化层对图像进行下采样将特征传送到下一层,因为在最大池化过程中会损失一些信息,这里会存储最大池化索引,保存最大池化过程中的位置信息,用于在上采样阶段进行恢复,BN 层主要对图像的分布进行归一化,加速学习。编码器阶段主要对图像进行特征提取。编码器各层的网络结构如表2所示。

图3 语义分割子网络的结构Fig.3 Structure of semantic segmentation sub-network

表2 编码阶段的网络结构Table 2 Network structure of encoding phase

解码器阶段是由对应于每个编码器的解码器组成的,解码器首先使用从相应的编码器存储的最大池化索引来获取目标信息与大致的位置信息,并对缩小后的特征图进行上采样,这种上采样方式可以减少训练的参数数量以及减小池化对信息的损失。然后对上采样后的图像进行卷积处理,弥补编码器阶段池化层对目标造成的细节损失。解码器各层的网络结构如表3所示。

表3 解码阶段的网络结构Table 3 Network structure of decoding phase

1.4 特征融合模块

在本文模型中,当从边缘检测子网络获得边缘信息和语义分割子网络获得语义信息时,需要对2 路特征进行融合。因为边缘检测子网络和语义分割子网络得到的特征表示不同,边缘检测子网络得到的结果更多地表示图像边缘和细节特征,语义分割子网络得到的结果更多的地示图像的区域特征,所以在进行2 路特征融合时,简单地将2 路特征进行加权融合,并不能充分地利用2 路特征,达到预期效果。因此,本文提出了一个特征融合模块来融合边缘检测子网络特征和语义分割子网络特征。

在选择特征融合的方式上,主要有add 融合方式和concat 融合方式2 种[29]。add 融合方式对上下2 路特征图对应位置元素的值进行相加,但这种方式在融合过程中会损失原始特征的信息,不能体现特征之间的互补性,所得到的结果也并不理想;concat 融合方式对上下2 路特征直接级联融合,将不同通道进行合并,这种方式不仅避免了add 融合方式对特征信息造成的损失,而且对上下2 路的特征进行通道数的合并,并结合前面所得到的特征得到后续的特征。

本文设计的特征融合模块包括使用concat 特征融合方式对边缘特征和语义分割特征进行初步融合2 个部分;然后对初步融合后的特征进行多层卷积操作,多层卷积由4 层卷积层组成,其特征图的个数分别为64、128、256 和512,卷积核的大小为3×3。特征融合模块的详细结构如图4所示。

图4 特征融合模块Fig.4 Feature fusion module

具体的融合过程为:首先将边缘检测子网络和语义分割子网络输出的特征进行concat 方式融合;然后进行多层卷积操作,利用卷积去学习融合2 路特征;最后再进行分类,得到最终的分割图。

在对特征融合方式选择上,本文进行实验比较确定选择concat 特征融合方式。首先将得到的边缘特征和语义分割特征分别使用add 方式和concat 方式进行初步融合;然后对融合后的特征进行多层卷积操作;最后进行分类得到最终分割结果。实验结果表明,采用add 融合方式和concat 融合方式对融合结果有不同影响,如图5所示。

图5 不同融合方式对分割结果的影响Fig.5 Impact of different fusion methods on segmentation results

不融合、add 融合和concat 融合方式的平均交并比(mIoU)分别为55.6%、55.7%和57.1%。

1.5 算法步骤

本文针对分割任务中目标边缘模糊、分割不准确等问题,提出一种结合边缘检测的语义分割算法。考虑边缘检测与语义分割的结合,在语义分割网络基础上并联一个边缘检测网络来学习目标的边缘信息,再将边缘特征和语义分割特征进行融合,综合利用2 路数据的特征信息,得到最终的语义分割结果。

本文算法的主要步骤如下:

步骤1输入图像。

步骤2将图像分别送入边缘检测子网络和语义分割子网络,得到图像边缘的特征和图像初步的语义分割特征。

步骤3把得到的2 类特征按concat 方式融合。

步骤4将初步融合后的特征进行多层卷积操作,利用卷积融合2 个子网络的特征。

步骤5将步骤4 得到的特征融合结果进行softmax 分类,得到最终的语义分割图像。

本文算法流程如图6所示。从图6 可以看出,本文算法改善了语义分割中边缘不清晰、分割任务中目标边缘模糊等问题,提高了分割精度。

图6 本文算法流程Fig.6 Algorithm procedure of this paper

2 实验

本文算法实验基于Caffe框架,系统为Linux16.04,使用的GPU 是NVIDIA GTX 1080Ti,并在CamVid数据集和Cityscapes 数据集上进行了实验。

2.1 数据集及评价指标

CamVid 数据集是从驾驶汽车的角度来看的一个街景数据集。它总共包含701 张图像,其中367 张用于训练,101 张用于验证,233 张用于测试。图像分辨率为960 像素×720 像素,数据集包含11 个语义类别。在SegNet[10]中将其进行处理,将图像分辨率改为480 像素×360 像素,所以使用修改后的数据集验证模型的有效性。Cityscapes 是另一个大型城市街道场景数据集,在语义分割领域中广泛使用。它有5 000 张具有高质量精细标注的图像和20 000 张具有粗略标注的图像。在本文的实验中,只使用具有精细标注的图像,它包含2 975 张用于训练的精细注释图像、1 525 张用于测试的图像和500 张用于验证的图像。为了实验方便,将图像分辨率由2 018 像素×1 024 像素改为480 像素×360 像素,其中每个像素都被注释为预定义的19 个类。

本文采用的评价指标为平均交并比(mean Intersection over Union,mIoU)和每秒处理帧数(Frames Per Second,FPS),这2 种评价指标为当前语义分割中使用较多的标准度量。

mIoU 计算2 个集合为真实值和预测值的交集和并集之比,用于评价算法精度。IoU 是每一个类别的交集与并集之比,而mIoU 则是所有类别的平均IoU。其计算公式如下:

其中:k是前景对象的个数;pij是指原本属于第i类却被分类到第j类的像素的数量。

FPS 用于评价算法速度,其计算公式如下:

其中:N为图像数量;Tj为算法处理第j张图像的时间。

2.2 实验方法

本文提出的结合边缘信息的语义分割模型使用端到端的联合训练方式。在模型训练过程中,使用SGD 优化器,初始学习率设置为0.001,将batchsize设置为2,momentum 设置为0.9,weight_decay 设置为0.000 5,最大迭代次数为100 000。在训练过程中,本模型涉及边缘检测和语义分割2 种分类网络,因此采用2 种损失函数。

边缘检测网络是一个对像素点进行是否为边界的二分类问题。边缘检测网络的损失函数采用常用的交叉熵损失函数,其可以定义为:

其中:yedgelab代表真实值;yedgepre代表预测值;n代表图像的总像素点数量。

语义分割网络通常将图像的每个像素点的分类看作是一个多分类问题,因此同样采用交叉熵损失函数,可以定义为:

其中:yseglab代表真实值;ysegpre代表预测值;n代表图像的总像素点数量。

在实验中,因为涉及语义分割和边缘检测2 种分类网络,除了需要已有的语义分割标注外,还需要数据集的边缘标注图像,本文并不需要额外地进行边缘标注,而是利用已有的语义分割标注生成边缘标注图像。

2.3 实验结果与分析

2.3.1 CamVid 数据集

基于CamVid 数据集,采用未结合边缘检测的语义分割算法SegNet[11]、ENet[12]与本文算法进行对比,分析算法的性能表现。图7所示为本文算法与其他对比算法的实验结果。

图7 不同算法分割结果对比1Fig.7 Comparison of different algorithms segmentation results1

从图7 可以看出,本文算法在道路、车辆、路灯杆、指示牌等的边界分割更为精准。在图7(a0)中,本文算法对路灯杆的分割更加连续和清晰;在图7(a1)中,本文算法可以清晰地分割出车辆旁边的行人以及远处车辆之间的黏连;在图7(a2)、图7(a3)中,不仅在道路、路灯杆处边缘更连续,更清晰,而且也较完整地分割出路边指示牌的边缘。

表4 是本文方法与其他语义分割方法在相同的实验环境下的分割效果对比。从表4 可以看出,本文算法在分割精度上高于其他2 种算法,在分割速度上,本文算法相较于SegNet[11]算法没有明显下降,虽然ENet[12]算法的分割速度要优于本文算法,但分割精度远低于本文算法。

表4 不同算法在CamVid 数据集上的对比Table 4 Comparison of different algorithms on CamVid datasets

2.3.2 Cityscapes 数据集

基于Cityscapes 数据集,同样采用未结合边缘检测的语义分割算法SegNet[11]、ENet[12]与本文的算法进行对比,分析算法的性能表现。图8所示为本文算法与其他对比算法的实验结果。

图8 不同算法分割结果对比2Fig.8 Comparison of different algorithms segmentation results 2

从图8 可以看出,在图8(a0)中,本文算法结果可以更好地将路灯杆等细小目标分割出来;在图8(a1)中,SegNet[11]的分割结果图8(c1)将大巴车分割错误,而本文算法分割正确,虽然ENet[12]的结果图8(c2)也分割正确,但本文分割结果相比于ENet[12],道路分割更加平滑清晰;在图8(a2)中,本文算法结果相比于SegNet[11]、ENet[12],可以明显地分割出来交通灯,改善了路边行人黏连的问题;在图8(a3)中,SegNet[11]、ENet[12]不能清晰地分割出路中间的行人,而本文算法可以很好地分割出来。

表5 是本文算法与其他语义分割算法在相同的实验环境下的分割效果对比。从表5 可以看出,本文算法在分割精度上高于其他算法,在分割速度上,本文算法相较于SegNet[11]算法没有明显下降,虽然ENet[12]算法的分割速度要优于本文算法,但本文算法分割精度要高于ENet[12]算法。

表5 不同算法在Cityscapes 数据集上的对比Table 5 Comparison of different algorithms on Cityscapes datasets

通过对以上实验结果的分析,证明了该方法在分割精度方面的有效性,并且与未考虑边缘检测的SegNet[11]算法相比,本文算法在CamVid 数据集和Cityscapes 数据集上的性能分别提升了1.5 和1.8 个百分点。

2.3.3 与现有算法的比较与分析

本文算法采用结合边缘检测的方法改进语义分割中边缘模糊问题,与已有的边缘检测与语义分割相结合的ESNet[27]算法比较结果如表6所示。

表6 与ESNet 算法的比较结果Table 6 Comparison result with ESNet algorithm

本文算法与已有的边缘检测与语义分割相结合的方法主要有以下不同:

1)网络结构不同。本文采用的语义分割网络为SegNet[11]网络,ESNet[27]采用的语义分割网络为ESPNetV2[30]网络,由于选择的语义分割baseline 的差异,ESPNetV2 的分割效果比SegNet 的分割效果要好;本文采用的边缘检测网络为已有的边缘检测算法RCF[26],而ESNet 采用MobileNetV2[31]作为边缘骨架,虽然MobileNetV2 作为轻量级网络,在速度上占有优势,但本文选用的边缘检测网络结构简单,使用了结构中所有卷积层的特征,利用了更多的有用信息,可以提供更好的边缘效果。

2)输入图像分辨率不同。在ESNet 方法中,输入图像分辨率为1 024 像素×512 像素;而本文算法由于baseline 的限制,输入图像分辨率为480 像素×360 像素,不同的图像分辨率会带来不同的分割结果,分辨率越高,分割结果越好。

3)实验环境上的不同。本文实验使用的显卡是1 台NVIDIA GTX 1080Ti,而ESNet 使用了4 台NVIDIA Tesla P40 显卡,可以得到更大更稳定的性能。由此,本文算法精度与ESNet 方法相比略低。

通过以上的比较与分析,验证了本文算法的有效性。

3 结束语

本文提出一种结合边缘检测的语义分割算法。整个网络由边缘检测网络和语义分割网络并行组成,边缘检测网络用来提取图像的边缘特征,语义分割网络用来提取初步的语义分割特征,后端将2 路特征进行融合,以获得最终的语义分割结果。实验结果表明,结合边缘检测的语义分割算法可以有效改善边缘模糊、分割不准确等问题,能够得到较理想的语义分割结果。下一步将研究结合边缘检测的语义分割方法来提高分割精度并加快分割速度。

猜你喜欢
边缘语义卷积
基于3D-Winograd的快速卷积算法设计及FPGA实现
语言与语义
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
一张图看懂边缘计算
“上”与“下”语义的不对称性及其认知阐释
认知范畴模糊与语义模糊
一种基于卷积神经网络的性别识别方法
语义分析与汉俄副名组合
在边缘寻找自我