室内服务机器人的实时场景分割算法
2021-07-26陈春梅刘桂华祝礼佳
林 杰,陈春梅,刘桂华,祝礼佳
(西南科技大学信息工程学院,四川绵阳621000)
0 概述
场景分割是指对图像中的所有像素进行分类,是自动驾驶和机器人感知领域中一项重要的前置任务。受现有阈值分割算法[1-2]启发,基于阈值的二值分割方法被大量应用于移动服务机器人,如文献[3]设计一种基于直方图的阈值分割方法用于足球机器人,文献[4]利用阈值提取边缘并基于边缘信息对图像进行分割,文献[5]利用Otsu 阈值和炭疽孢子的连通特性及形状特征实现对炭疽孢子的分割,文献[6]设计一种YUV 色彩空间下的阈值分割方法用于番茄机器人。然而,基于传统图像处理技术的分割方法存在较大的局限性,适用的分割场景也较为简单。因此,研究者提出基于聚类的方法,如文献[7]通过结合mean-shift 和Ncut 算法减少计算量和噪声的干扰,使分割速度大幅提升,文献[8]使用mean-shift 算法结合深度信息实现复杂度较高的场景分割。
近年来,随着GPU 算力增长,基于深度学习的语义分割算法飞速发展,图像分割技术水平得到大幅提高。文献[9]提出了全卷积网络(Fully Convolutional Network,FCN)用于实现端到端的逐像素分类,后续深度学习语义分割算法大都以该网络结构为基础改进。SegNet[10]在解码器部分使用上池化操作进行上采样,保留了高频细节的完整性,实现了更精细的分割。UNet[11]在编/解码器间加入了若干跳跃连接,融合了编/解码器不同层次的特征,通过减少信息丢失来提升精度。文献[12]在FCN 的特征提取网络的输出端添加了条件随机场(Conditional Random Field,CRF)模块,进而提出了DeepLab 方法,也大幅提高了分割的精度。上述算法虽然都有效提升了精度,但由于特征提取网络的感受野是固定的,因此没有获得图像全局的一些特征。文献[13]提出了DeepLab-V2 网络,通过引入空洞空间金字塔池化(Atrous Spatial Pyramid Pooling,ASPP)模块增加了感受野,提高了针对小目标的分割精度。文献[14]对DeepLab-V2 中的ASPP 模块进行改进,提出了DeepLabV3+网络。该网络融合了更多尺度特征,大幅提升了细节分割准确率。PSPNet[15]网络则选用大量的池化金字塔获得更多的全局信息。文献[16]考虑样本不均衡因素设计了焦点约束损失(Constrained Focal Loss,CFL)函数,大幅提升了样本量不均衡时模型的分割精度。后续高准确度的分割算法大多致力于增加模型参数量和复杂度,如HRNet[17]。该网络在特征提取时不压缩特征图尺寸,利用巨大的模型参数量和计算量换来了很大的图像感受野,并且充分融合了多尺度特征,在多项任务上都能达到较高的精度。但对于实际工程应用而言,部署算法不仅要考虑精度,同时也要考虑算力成本,自动驾驶无人车、服务机器人的移动端嵌入式计算设备应价格、功耗低且体积小,因此,参数量大且计算复杂度高的分割算法不适合部署在此类设备上。
对于室内服务机器人的应用场景,在算力有限的平台完成高准确度且快速的室内场景分割是一项重要任务。本文在现有语义分割模型的基础上,参考轻量化网络设计方法,提出一种基于轻量级串联特征提取网络的实时语义分割算法。通过深度可分离卷积、膨胀卷积和通道注意力机制设计轻量级的高准确度特征提取瓶颈结构模块,以此为基础构建轻量特征提取骨干网络,使用2 个轻量型的网络级联增加网络深度,同时融合多尺度、多层次的语义特征,在保证算法高精度的前提下,基于TensorRT 技术在NVIDIA Jetson XavierNX 嵌入式平台实现实时室内场景分割。
1 基本原理
设计高准确率的轻量化特征提取网络,需要考虑如何在减少模型参数量的前提下提升精度。本文通过深度可分离卷积、感受野控制和注意力机制来提升准确率并降低模型复杂度。
1.1 深度可分离卷积
深度可分离卷积是很多轻量级网络的关键技术,其将常规的卷积计算分解成两步操作:首先对各个通道进行卷积提取特征,然后使用1×1 卷积进行特征层融合或者特征层的扩充,从而有效地减少卷积计算中的参数量并保留常规卷积相似的性能。
对卷积核的参数量进行分析。如图1所示,假设输入图像的尺寸为w×h×c,w、h、c分别表示图像的宽、高和通道数。若卷积后想要得到b个通道的特征图,使用原始卷积方法,卷积核的参数量为k×k×c×d,其中k为卷积核的边长。深度可分离卷积则先单独对通道卷积,参数量为k×k×c,再使用逐点卷积法将特征图通道扩张到b个,参数量为c×d。因此,总参数量为k×k×c+c×d。
图1 深度可分离卷积的计算过程Fig.1 Calculation process of depth separable convolution
相比传统卷积,深度可分离卷积的参数量大幅减少。传统卷积的计算量为w×h×c×d×k×k,深度可分离卷积的计算量为w×h×c×k×k+w×h×c×d,这2 种方法的参数量之比和计算量之比均为可见无论是参数量还是计算量,通过可分离卷积都得到了很大幅度的压缩,使网络更加轻量化。对于边缘计算设备及无GPU 的移动设备,深度可分离卷积可使CPU 在不需要庞大算力的情况下完成卷积计算。因此,轻量级网络设计大多使用深度可分离卷积,如Xception[18]、GhostNet[19]等,本文也使用深度可分离卷积来实现轻量级的特征提取网络。
1.2 感受野控制
感受野直接影响着网络精度,网络的感受野越大,获取到的图像的全局特征也就越多,这在HRNet上得到了充分验证。HRNet 精度之所以很高,就是因为它有一个固定的、具有极大感受野的特征提取分支。在该分支上,特征图尺寸不会缩小,在特征提取过程中几乎没有丢失信息。但是这种提升感受野的方式会带来巨大的参数量,使模型推理时间大幅增加,对于速度优先级较高的网络并不适用,而膨胀卷积在提升感受野的同时并不会增加参数量,适合用于轻量级网络设计。
膨胀卷积是指在常规的卷积核中添加空洞,此操作可以在计算量不变的情况下增大卷积核的大小和卷积操作的感受野。如图2所示,对于一个3×3 的卷积核,当设置膨胀率为2 时,会在每一对相邻卷积核之间添加一个值为0 的点,从而使卷积核大小变为5×5。
图2 膨胀卷积感受野Fig.2 Receptive field of expanded convolution
膨胀后卷积核大小的计算公式如下:
其中:kdw为膨胀后卷积核的边长;r为膨胀率;kc为未膨胀卷积核的边长。卷积核膨胀后感受野范围得到了扩大,而更大感受野的卷积操作能够提取出更大尺度的图像特征,这对准确的场景理解和分割精度提升非常有效。高精度的分割算法如DeepLab 也大量使用了膨胀卷积,并且并联不同膨胀率的特征图设计了ASPP 模块,以此融合不同尺度的空间特征。但是,膨胀卷积存在特征图稀疏的问题:膨胀率变大,卷积核之间的空洞随之增大,而当膨胀率过大时,卷积核会变得非常离散,也就不能提取到更多全局特征的信息,从而导致特征图非常稀疏,提取到的特征会缺少细节信息,影响图像分割精度。
1.3 注意力机制
随着SE-Net[20]尝试使用基于通道的注意力机制,在图像分类中实现了较好的分割性能,注意力机制便成为深度神经网络的有力工具[21]。它可以利用特征图的通道特征和空间特征约束网络训练,从而学习到有效特征,提升对于细节的分割精度。由于通道注意力机制在提升特征有效性的同时几乎不增加参数量,因此本文在设计编码模块时使用通道注意力机制模块提升模型的准确率。
2 场景分割方法优化
2.1 残差瓶颈结构设计
为减少模型的参数计算量同时达到高分割精度,本文在网络中添加一个残差瓶颈结构作为网络的基础模块。残差瓶颈结构如图3所示。
图3 残差瓶颈结构Fig.3 Residual bottleneck structure
瓶颈编码模块包括2 个调整特征通道的1×1 卷积、1 个深度可分离卷积、1 个通道注意力模块和1 条残差连接,具体设计目的和思路如下:
1)为降低模型的计算量和参数量,使用降维-升维的瓶颈结构。先使用1×1 卷积对通道数进行压缩,压缩后使用3×3 深度可分离卷积提取特征,再使用1×1 卷积进行特征升维。为提升感受野,提取不同尺度的特征信息,3×3 深度可分离卷积带有膨胀系数。
2)进行深度可分离卷积操作后,在升维卷积操作前加入SE-Net 网络使用的通道注意力机制模块。该模块的计算过程如图4所示。首先对特征通道进行全局平均池化操作,然后连接全连接层学习每个通道的权重值,并利用sigmoid 函数归一化到[0,1],最后对特征层进行通道加权,从而筛选特征的每个通道的信息,以此进一步提高分割准确度。
图4 通道注意力模块计算流程Fig.4 Calculation procedure of channel attention module
3)为缓解膨胀卷积引起的稀疏化问题,在瓶颈结构中加入残差边连接,将特征层的输入和提取后的特征层相加,从而补充因膨胀卷积稀疏化而在特征提取时丢失的信息,同时残差连接也可以有效避免由网络深度增加带来的梯度消失问题。
2.2 网络结构设计
本文网络模型使用的是编码器-解码器网络框架,在编码器端获取上下文信息和语义信息,在解码器端对提取的特征进行上采样和图像分割。为实现实时分割,本文没有对解码器进行复杂设计,而是使用高效的特征上采样模块。此外,由于网络越深获取的语义特征越丰富,但是空间信息丢失也越多,因此本文设计的网络在解码阶段对不同层次的特征进行重利用,以高级语义特征融合低级图像特征,从而丰富模型特征,提高模型分割精度。
本文模型结构如图5所示,其中,c 代表concat操作,模型输入图像尺寸为512 像素×512 像素。为有效提取深层语义特征,编码器级联2 个特征提取网络。第1 级主干网络使用7 个残差瓶颈结构模块作为基础单元构成特征提取的主干网络,每一个瓶颈结构模块的参数不同,相同通道数的瓶颈结构模块的膨胀率不同,以此获得不同感受野与不同尺度的特征。经实验验证,当膨胀率在8 以上时,特征图的稀疏化非常严重,严重影响精度。因此,设置膨胀率为2、4 或8。经过7 个瓶颈结构模块提取深层特征以后,对特征图进行上采样送入第2 级特征提取网络,第2 级特征提取网络由4 个瓶颈结构模块和1 个平均池化层构成,4 个瓶颈结构模块在提取特征的同时融合第1 个主干网络特征提取时相同尺度的特征图,减小特征提取时丢失的信息,之后使用平均池化对特征进行多尺度融合,再送入解码器模块。在解码过程中,融合第2 个特征提取网络中相同层次的特征,补充特征图细节,最后进行场景分割结果输出。
图5 本文网络模型结构Fig.5 Structure of the proposed network model
3 实验
3.1 数据集及训练平台
使用NYUDv2 数据集[22]对本文提出的网络模型进行训练和评估。NYUDv2 是针对室内场景专门制作的语义分割数据集,最细分类可以达到895 类。为简化分类任务、增大类间距离以降低分类难度,本文使用的为类别缩减映射后的40 类数据集。该数据集共包括1 448 张精细标注的样本,图像尺寸为640 像素×480 像素。为模拟室内环境变化,本文对1 348 张室内场景图像进行数据增强,对原始图像做小幅度的随机色相和明度偏移,在随机裁剪、缩放、翻转、平移数据增强后进行模型训练,使用400 张未预处理的原始图像进行验证测试。为进一步测试本文模型性能,在CamVid 数据集上进行测试,CamVid数据集是针对道路街景制作的分割数据集,其中采集了50 个城市不同天气的行车视角街景,包括行人、车辆、道路等11 个类别,共1 402 幅精细标注的复杂街景图像。本文使用1 169 幅图像进行训练,在233 张的测试集上进行验证测试。
本文实验的软件环境为Ubuntu18.04 64 bit 操作系统,深度学习软件框架为Pytorch,硬件环境为Intel®Xeon®CPU E5-2620 v4 2.1 GHz 处理器,64 GB内存,GPU 为NVIDIA GTX TITAN XP 12G。
3.2 训练策略与超参数设置
为使网络模型达到较高的准确率,目前在训练网络时一般会使用该模型在ImageNet 数据集训练的参数初始化网络。但是本文网络为自己设计,如果使用迁移学习,需要在ImageNet 数据集上做预训练。考虑到ImageNet 数据集庞大,如果没有大型GPU 集群,训练耗时会非常长,并且Facebook 的AI 实验室的验证[23]表明,即使不做预训练,最终模型精度也会达到接近预训练效果的水平,因此,本文使用多阶段参数调整的训练策略,如图6所示。
图6 训练策略示意图Fig.6 Schematic diagram of training strategy
在第1个阶段,随着迭代次数的上升,学习率降低,模型较好地收敛,之后加大学习率进入第2 个阶段的训练,反复这个过程,能够使模型跳出前一训练阶段损失收敛的局部最小值,使模型找到一个更大范围内的最优参数。训练的损失值变化曲线如图7所示。可以看出,损失值的4 次波动下降状态分别代表着4 个阶段的训练过程,损失值的大小在经历4 个阶段的训练后比第1 个阶段结束时降低较多。
图7 训练损失值变化曲线Fig.7 The training loss change curve
对于优化器,选择Adam[24]优化器来优化模型参数,批样本量设置为16,Dropout 失活率设置为0.5。对于损失函数,使用像素级交叉熵函数作为目标函数,其函数定义如下:
其中:M为类别数量;yic为指示变量,若样本i的分类结果与标签类别c相同,则为1,否则为0;pic代表样本i属于类别c的概率。
3.3 评价指标
为全面地评价模型性能,本文使用像素准确率(Accuracy,ACC)、平均交并比(Mean Intersection over Union,MIoU)和频率加权交并比(Frequency Weight Intersection over Union,FWIoU)这3 个指标来体现分割精度。像素准确率的计算公式如下:
其中:pt代表分类正确的像素数;psum代表像素总数。在平均交并比指标中,IoU 表示预测结果与真实值交集的面积比上他们并集的面积,MIoU 为所有类别IoU 的平均值。频率加权交并比即使用每一类像素出现的频率对IoU 加权计算得到的值,其评价样本分布不均衡的数据更科学,计算公式如式(4)所示:
其中:r为类别数;pn为第n个类别所有的像素数,将其比上psum即可求出该类别样本数量在数据集中的比例,再与该类别的交并比IIoUn相乘即完成加权。
同时,为更全面地评价模型的复杂度,本文使用模型参数衡量模型的空间复杂度,并且使用每秒浮点计算次数(Floating Point Operations,FLOPs)与帧率(FPS)这2 个指标衡量模型的时间复杂度。FLOPs 的计算公式[25]如式(5)所示:
其中:H、W为卷积输入特征图的高和宽;KH、KW为卷积核的长和宽;Cin和Cout为卷积层输入和输出的通道数;pparams为该卷积层的所有参数。
3.4 实验结果与分析
3.4.1 NYUDv2 数据集上的实验结果分析
本文在NYUDv2 数据集上使用40 类分类标准进行训练及测试,并对比了经典、常用的分割算法,精度对比结果如表1所示。可以看出:本文算法总体分割精度,大幅领先于SegNet 和UNet,略低于DeepLabv3+ 和PSPNet,这主要是因为UNet 和SegNet 网络的感受野固定而本文网络使用膨胀卷积,提升了感受野,并且本文多层次特征融合较多,而UNet 与SegNet 较少,而PSPNet 与DeepLabv3+则使用不同的金字塔结构获得了更大的感受野,从而融合了更多全局特征,使得分割更为精准。
表1 在NYDUv2 数据集上的精度对比Table 1 Accuracy comparison on NYDUv2 dataset %
为更全面地对比5 种算法分割准确度,统计各算法针对NYUDv2 数据集不同类别的IoU,结果如表2所示。从表2 可知,本文算法在各类别的分割精度上均处在一个较高的水平,在一些UNet 与SegNet分割效果不好的类别(windows、bookshelf、mirror等)上得到了很高的准确率,并且与DeepLabV3+和PSPNet 精度差距不大,充分验证了感受野提升和特征融合对精度提升的效果,并且各类之间的分割精准度总体也比较均衡,鲁棒性较好。
表2 针对NYUDv2 数据集不同类别的分割结果对比Table 2 Segmentation result comparison for different object categories on NYUDv2 dataset %
5 种算法的复杂度对比如表3所示,可以看出,本文算法无论是计算复杂度、参数量还是推理速度(即帧率)都大幅优于其他算法,再次证明使用深度可分离卷积构建轻量级主干网络可降低参数量与计算复杂度。对比DeepLabV3+与PSPNet 这2 个高精度、高模型复杂度的算法,本文算法计算力仅为其1%,而在PC 端GPU 推理速度是它们的10 倍以上。
表3 复杂度对比Table 3 Complexity comparison
综上所述,本文提出算法在保证较高分割精度的同时,对设备计算力要求不高,十分利于边缘计算设备部署。
5 种算法室内场景分割的视觉效果如图8所示。由图8(c)~图8(d)可以看出:UNet 与SegNet对于大目标的分割还是出现了一些类别混淆,如门、橱柜、镜子等,其他3 个算法对大目标分割都比较精准,得到的大目标的边缘轮廓部分也十分清晰;而对于小目标分割,DeeplabV3+的效果是最好的。对比图8 第4 行图像中橱柜上杯子的真实标签及分割效果可知,除了DeepLabV3+外,其他算法都出现了程度不一的分类混淆。对于小目标的边缘轮廓,如图8 中第1 行、第2 行图像的床头灯、盥洗台等物品,各个算法的分割效果均不太理想,主要原因是数据集小目标样本分布不均衡会导致模型分割效果偏向样本量更多的类别,另外一个原因就是小尺度目标在图像中占像素量少,提取特征时经过几次下采样后,小目标的特征图尺寸已经被压缩到非常小了,提取的特征较为有限,从而导致小目标及其边缘的分割效果不佳。
结合表2所示的精度指标和图8所示的分割效果可知,本文算法对复杂室内场景的分割准确度较高,非常接近PSPNet 及DeepLabV3+的分割精度和效果,可满足室内服务机器人场景理解的基础要求。
图8 NYDUv2 场景分割视觉效果Fig.8 Scene segmentation visual effects on NYUDv2 dataset
3.4.2 CamVid 数据集上的实验结果分析
在CamVid 数据集上的精度分割实验结果如表4所示。可以看出,在非室内场景下,本文算法的分割准确度也是相对较高的,FWIoU 和MIoU 差异相较于NYUDv2 的结果大一些,这是由CamVid 的数据分布不均衡造成的,仅道路、天空、建筑和树等4 个类别样本量就占了数据集的73%,所以,各个算法的加权IoU 都处于较高的水平。从MIoU 的指标可以看出,面对样本分布不太均衡的数据集,本文算法即使不针对均衡样本做处理,分割准确度也优于SegNet和UNet 算法。
表4 在CamVid 数据集上的精度对比Table 4 Accuracy comparison on CamVid dataset %
各个类别的详细分类IoU 如表5所示。可以看出各算法在建筑、天空、道路等大目标上的分割准确度都较高。在车辆这类中型目标上,本文算法大幅领先于SegNet 和UNet,与DeepLabV3+和PSPNet精度非常接近。在标志牌,电线杆这类小目标的分割精度上,本文算法也与DeepLabV3+和PSPNet 在同一水平。
表5 针对CamVid 数据集不同类别的分割结果对比Table 5 Segmentation result comparison for different object categories on CamVid dataset %
在CamVid 数据集上5 种算法分割的视觉效果如图9所示。可以看出,本文算法的分割效果较好,车辆、建筑的边缘清晰。从图9(g)第1 行可以看出,即使在光照效果不佳的情况下,本文算法的分割效果也很好,而Unet 和Segnet 在同场景时,右下角的车辆出现了类别混淆。
图9 CamVid 场景分割视觉效果Fig.9 Scene segmentation visual results on CamVid dataset
综上,本文算法相较常用的先进分割算法取得了较优的效果,从而再次验证了算法的优秀性能,其能有效地学习到图像的语义特征,并准确地表达物体的语义信息,从而大幅提升了场景解析的效果。
3.5 机器人嵌入式端部署
本文使用机器人平台计算核心板为NVIDIA Jetson XavierNX。XavierNX 为NVIDIA 发布的嵌入式GPU平台,在15 W 的低功耗环境下,可以有6.8 TFLOPs 的单精度计算能力,如果以INT8 模式进行计算,则有高达21 TOPs 的计算能力。在PC 端训练模型后,将模型导出并使用NVIDIA 的推理加速引擎TensorRT 对模型进行合并层、并行优化等操作,将其序列化为TensorRT的引擎,将模型从FP32 量化为FP16,从而既压缩了模型大小,又避免了INT8 量化时精度损失较多的问题。在未量化及TensorRT 加速时,模型在嵌入式端对512 像素×512 像素的图像推理速度为19 frame/s,经过TensorRT 加速和量化后,嵌入式端的推理速度提升到42 frame/s,加速比约为2.2,加速后可实现在嵌入式平台上的实时室内场景分割。
4 结束语
本文针对室内服务机器人的场景分割任务,提出一种基于轻量级网络的实时语义分割算法,结合深度可分离卷积、膨胀卷积和通道注意力机制,设计以残差瓶颈结构为基础模块的级联特征提取网络。该网络的参数量较少,能够在保证低时间复杂度的同时提取到更深层的语义信息,并融合多尺度特征得到较高的MIoU 分割精度。实验结果表明,与SegNet、UNet、PSPNet 等先进分割算法相比,本文算法具有优异的预测速度,对移动设备的算力要求不高,可实现实时准确的室内场景分割,满足实际的机器人场景理解需求。然而该算法存在小目标分割和边缘分割不准确的问题,下一步将对此进行改进,通过结合多尺度及边缘分割方法,实现对室内场景更高准确率的精准分割。