秦 操,曹 旺,王 静
(四川大学电子信息学院,成都 610065)
随着人们对幸福生活的需求日益增长,科技水平不断提高,人们对于出行方式有了更多期待,交通工具由传统的依赖人力的驾驶方式逐渐开始转向机器辅助人类,甚至有着逐渐由人工智能替代人力的趋势。然而,传统的驾驶方式在很长一段时间仍然没有被取代,其可靠性在复杂状况下往往更令人信服。受制于劳动力短缺、成本上涨,自动驾驶技术目前在物流仓储,园区交通中落地更多。为了解放社会生产力于机械重复的驾驶流程,发展和提升现有的技术手段来解决上述问题,让其变得更可靠成为了人们的关注点。
自动驾驶是一个综合了周围状况感知、决策机制和控制系统等方面的综合软硬件系统,集成了很多方面的技术。目前,主要通过图像捕捉设备来捕获二维图像,或者采用激光雷达来采集点云数据等信息让系统来完成环境感知的任务,通过多途径增加信息量,以便更好地完成物体检测、识别、分类、定位。例如对路上行动中行人和车辆的识别,车道线的检测,交通指示牌内容的识别,以及对障碍物的检测等。决策机制主要负责处理在机动行驶过程中的轨迹,根据模型部署前的规则指导机动车行进,完成如避让障碍物的规划类型的任务。控制系统主要基于决策系统规划好的行驶方式,对动力系统、转向系统、制动系统进行综合控制,实现对车辆速度、行驶方向等状态的自适应调节,保证行驶过程中的安全性和稳定性。
本文主要研究内容为周围环境感知的图像处理部分,属于计算机视觉学科内容,通过提出在算法系统部署前优化方案,让决策系统处在自动驾驶在实际应用场景中,更好地理解其应该对整体软硬件系统作出的指导。当系统复杂程度上升,对泛化能力的要求增强时,同时增大自动驾驶系统训练时交通场景的数据量是极有必要的。由于通过无人车采集到的原始数据需要通过人力标注的方式来让自动驾驶系统理解其面对的图像的语义内容,这个过程通常耗时、费力,如果仅仅依靠大量劳动力来对数据进行清洗、筛选和标注,在数据集大小快速增长的情况下几乎不可能对其进行一一详实的标注,这使得自动驾驶系统部署成本居高不下。因此,对缺少人工标注的真实场景数据进行有效的利用,是当前迫切需要解决的问题。
图像的语义分割在计算机视觉领域是一项基本的识别任务。语义分割的训练数据通常需要像素级别的人工标注,和其他类型的视觉任务相比,例如图像分类和目标检测,成本通常更高。采用半监督的训练方式使用少量标注数据和额外的为标注数据来进行语义分割模型的学习过程是一种切实可行的解决方案。
在现代的基于深度学习的语义分割方法中,最普遍使用的是基于全卷积神经网络的结构。对于语义分割模型的研究,主要从三个方面展开:分辨率提升,上下文信息挖掘和分割边缘的优化。
为了解决语义分割中手动对图像进行像素级别的标注昂贵又费时的问题,目前面向自动驾驶场景的语义分割往往采用半监督的方式来帮助模型进行学习,以此充分利用无标注数据的价值。在半监督语义分割中,一致性约束被广泛使用。它利用网络在不同扰动情况下的预测结果有着相似的结果,比如:通过对输入的图像进行增强,或者对特征进行一定程度的改变,自训练也在半监督语义分割中得到了广泛的研究。通过在有标注数据上训练过的模型对无标注数据生成的分割结果图,将其作为伪标签对另一模型进行分割结果的监督就是通过一致性约束对模型进行训练的方法。
本文使用了一种简单但有效的半监督语义分割算法,其网络结构是两个结构相同但独立进行参数初始化的分割网络,将同一张图片同时输入两个网络,利用彼此输出的分割结果作为伪标签交叉指导训练过程。另一方面,和常见的半监督学习方式相比,本文的方法在两个语义分割网络上都进行了反向传播操作,而不是仅仅在对输入进行了增强的分支上。
本文采用了带有空洞卷积模块(见图2)的DeepLab v3 分割头作为完成下游任务的模块来完成图像的分割任务。空洞卷积是一种在需要多尺度特征时被广泛使用的模块,可以通过人为控制参数的方式精确控制由深度卷积神经网络提取的特征的分辨率,同时调整卷积核的大小来改变感受野的变化,以此捕捉多尺度信息。
图2 空洞卷积示意图
如公式(1)所示,假设输入为二维信息,输出为,卷积核为,是输入和输出上的位置,膨胀系数为。膨胀系数在数值上等于采样操作的步长,其意义是在输入的信息的每个空间维度上,和在本应连续的卷积核取值之间插入-1个零值的上采样卷积核进行卷积操作。
假设给定一组有标签数据D,总共存在张有标注的图片数据,另外还有一个共由张无标注数据组成的数据集D,半监督语义分割的任务主要是通过同时利用有标注和无标注的数据集对网络进行训练,使其能够完成对于场景中不同种类物体的分割任务。
如图1所示,图中的网络结构由两条平行的分割网络构成:
图1 语义分割网络结构图
其中,和分别代表着两个网络的权重参数,和分别表示两个网络在进行Softmax 归一化之后的输出结果。两个网络拥有相同的结构,有着相同的输入图像,但在随机初始化的过程中产生了差异。
当输入图片为有标注图像时,数据流动方向如图1 中虚线框外上下分支所示,网络1 与网络2 分别对输入生成分割结果与,将网络各自的分割结果与ground truth 作对比,并通过计算得到损失函数,将损失函数回传给网络,指导网络参数更新。
当输入的图像为无标注图像时,数据流动方向如图1虚线框内无监督部分所示,两个网络分别对输入生成f()和f(),代表网络对图片预测的One-hot编码的结果图,也叫伪分割结果图。在每个像素点的位置,生成的One-hot编码结果是从其对应位置的置信度向量计算得到的。
对网络训练的损失函数包含两方面:通过有标注图像进行训练得到的Loss,用L表示,以及在无表述数据集上通过交叉伪标签训练方式得到的Loss,记作L。
有监督训练中得到的L,由两个平行网络针对输入的图像输出的分割结果分别与ground truth 进行标准的逐像素交叉熵求得,如公式(4)所示:
在公式中,l是交叉熵损失函数,和分别代表着面向不同网路的同一个ground truth,和分别代表输入图像的宽度和高度。
通过交叉伪标签方式得到的损失函数,通过互相回传至另一支网络对学习过程进行指导。以网络1 举例,将网络2 逐像素计算得到的One-hot 编码的分割结果作为伪标签分割结果,作为网络1的真实标签对其自身得到的分割概率图求交叉熵损失,指导自身学习,对于网络2来说同理。
对无标签数据利用交叉伪标签方式训练得到的损失函数可以写作:
有标签的数据同样会通过无监督方式丢弃标签进行无标签训练,因此通过交叉伪标签方式训练得到的损失函数可以表示为:
综上所述,整个训练过程的损失函数可以写作公式(7),表示权重参数:
当智能系统涉及到分类任务时,通常需要通过获取海量经过标注的数据才能达到良好的性能和效果。能够收集到一个正确标注的数据集通常因为很多因素并不总是易事,例如对医学图像标注的过程往往需要耗费大量人力和时间,而就算有了辅助算法帮助人类进行数据集的标注,完全正确地对数据进行这个过程仍然是无法保证的,甚至是让领域内的专家来标注图像也是一样。
通常情况下,深度神经网络对标签噪声有一定的鲁棒性,但是其对数据进行过拟合的趋势很容易让网络在面对噪声的情况下变得十分脆弱。因此,将标签噪声纳入设计算法并设法有效地减弱或者消除对网络训练带来的负面效果显得很有必要。
针对交叉熵损失函数鲁棒性的研究表明,交叉熵损失函数在涉及到分类任务时,如果存在着标签噪声的情况,网络的稳定性会受到很大影响。由于语义分割是对每个像素点进行分类的密集型预测任务,相似的问题和挑战也同样存在于语义分割中。
另外,在半监督学习的语义分割框架中,最终学习进行对比时会用到伪标签,而生成的伪标签也许由于网络还未充分得到训练,整体性能较弱,导致结果中包含置信度较低的区域。
为了避免在利用伪标签进行训练时网络对标签噪声过拟合,本文提出了一种动态适应的筛选模块来优化语义分割网络。根据网络在不同训练阶段的状态,它会根据每个像素点在分类结果的置信程度分配自适应的程度。此外,针对结果不太可靠的区域,本文还引入了反向交叉熵损失。
如公式(8)所示,是像素位置的指示,代表的是对于当前网络分支像素分类结果的预测,y代表着另一侧网络对对应位置上像素生成的伪标签,w表示动态权重,其值为当前网络分支预测值在Softmax 之后在种类别中的最大值。
通过这种方式,本文利用网络的预测值来评估训练过程中无监督分支对于分割结果的置信程度。如果置信程度非常高,就将动态权重置为1,按照普通交叉熵损失函数进行网络训练;但如果置信程度非常低,我们可以将伪标签视作是不可靠的,因此引入公式(8)中的第二项来减轻标签噪声对网络训练造成的干扰。
为了使视觉深度学习算法顺利落地,网络对于复杂条件下的城市街景的视觉理解程度成为了重要的赋能因素。受益于大规模的数据集,在深度学习背景下的目标检测工作从成熟的数据集中受益颇多。而对于城市街道的语义分割任务,在Cityscape之前并没有可以充分反映现实世界中城景街道复杂性的数据集。Cityscape 数据集是一个可以应用于像素和实例级别分割任务的大型数据集,每张图片的分辨率为2048×1024,总共有5000 张包含高质量像素级标注的图像,另外还有20000张可以用作弱标注数据的粗标注图片。
对于语义分割任务,一般有四种评价算法性能的指标:像素精度、均像素精度、频权交并比和均交并比。在这四种评价指标中,均交并比(Mean Intersection over Union,MIoU)最简洁直观,是图像分割精度评估的一个常用重要指标。它将不同类别的预测结果与真实值的交集以及并集相除,在求和之后取得平均值。本文中的实验采用作为对模型性能的评价标准,如公式(10)所示:
P表示假正例,P表示假负例,P表示真正例的数量。
为了训练和测试本文算法,实验使用了四张NVIDIA GTX 2080Ti 显卡以及4 颗E5-2620 CPU 核心,具体实验软件环境包括Python3.6,PyTorch1.0.0,CUDA10.2,训练开始前首先对数据集进行预处理。为了与现行方法进行比较,我们与GCT一文中对数据集进行划分和测试的操作保持一致,将Cityscape 数据集划分为两个随机采样的子集,分别将1/8 抽取出来作为有标注的训练集,而剩下的就都作为没有标注的训练集。
本文算法中的特征提取网络部分使用了同一个在ImageNet 上预训练的网络,而对各自的分割头进行随机参数初始化。训练过程中,采用了随机梯度下降优化器,对学习率调整采用的是多项式衰减策略,如公式(11)所示:
由于使用了模型并行计算加速训练,初始学习率为0.02。
在使用相同比例的有标注数据,训练周期相同的条件下,对Cityscapes 城市街景数据集进行语义分割的性能测试,计算各种模型的预测性能。我们对以下几种网络模型进行测试对比:
(1)Baseline 为以Imagenet 数据集上预训练后的Resnet-50作为骨干网络,使用DeeplabV3+的分割头在所有有标注训练集图像上进行训练和测试得到的结果。
(2)ClassMix在无标注数据中采样两张图像,分别记为A和B,使用分割模型分别进行预测,在A 的预测结果中通过argmax 生成预测结果,随机选取一般预测标签作为Mask,将A 图中区域合并到B图中。
(3)CutMix-Seg使用同数据集中其他图像快剪切粘贴到训练样本上,同时真实标签也成比例地叠加到图像块区域。
(4)SDA使用了优化的强增强方式,利用设计归一化层的方式防止特征偏移。
为了证明本文提出的DA(Dynamic Adaption)模块的有效性,同时在数据集上进行了消融实验,结果如图3所示。第一列表明是否加入DA 模块,第二列为其在每个语义类别上的平均交并比指标,用于衡量分割模型的准确度。
图3 分割结果可视化
从表1可以看出,在实验结果中,相较于不添加DA 模块的算法,平均交并比指标提升了1.85%,这证明了模块的有效性。
表1 在Cityscapes数据集上的消融实验结果对比
各种网络模型的预测结果如表2所示。
表2 不同模型的分割结果对比
从表2 可以看出,本文方法在Cityscape 数据集上的评估指标显著优于其他对比方法,平均交并比指标最多提升了12.43%。
本文提出了一种面向自动驾驶场景的基于动态适应策略的半监督语义分割模型,模型同时使用有标注和无标注数据对网络进行训练,提高了算法在实际落地过程中的可行性;在交叉伪标签的训练过程中,利用针对应用场景很可能遇到的标签噪声问题对损失函数进行优化,引入了对抗噪声的反向交叉熵损失函数项,以改善网络性能表现;通过使用平行的双网络结构,提升了网络特征提取部分对于数据集图片的特征提取。与现有方法相比,本文的方法提升了分割结果准确率。