融合全景分割的单目深度估计网络
2023-08-10任克宇仝明磊
任克宇 仝明磊
(上海电力大学电子与信息工程学院 上海 201306)
0 引 言
近年来,深度图像估计精准度大幅度提高,使得其在机器人导航、自动驾驶、3D重建任务中的作用变得举足轻重。图像是立体场景的投影映射,投影只是获取了平面信息。通过相机或者合成图像获取场景中的立体相对深度信息,即为深度预测。双目相机可以利用匹配视差几何的方法求解深度,但是容易受到场景、摄像机矫正系数、几何约束条件的影响,为了克服这些局限性,人们越来越关注单目图像的深度预测。
人们使用相机可直接获取真实场景的图像,但图像是立体场景的投影映射,即只是获取了该场景的平面信息。深度预测却可以从图像中获取场景中的立体信息,以满足信息的需求,其从本质上是一个模棱两可的伪科学问题。在利用神经网络进行单目深度估计的领域中,最为经典的是:Eigen等[1-2]使用深层网络堆栈来解析单个图形与深度关系,进行全局粗略预测和本地细化预测,实现了无须超像素化即可匹配详细的深度边界,证明了单目深度估计的可实现性。Liu等[3]结合CRF随机场,根据深度值的区域连续性特点,提出了深度卷积神经场模型,可以有效解决预测深度的映射问题。Kuznietsov等[4]则提出一种半监督单目图像深度估计的方法,使用稀疏的真实深度监督神经网络。
上述方法都是从网络结构层次对深度估值进行分析,通过使用不同的方法提高深度估计图的准确性。从单一的场景图片得出深度信息图,在物体遮挡以及不同深度区域边界的问题上未表现出良好的估计效果,同时将本身深度值的不平衡数据归一化处理后,不能有效地预测相邻像素深度的落差。近年深度学习领域涌现出融合多任务的联合框架,利用多任务之间的强相关性和一致性,对深度图进行预测优化,增加更多的细粒度特征。例如,Zhou等[5]提出了以无标记的单目图像序列作为训练集,采用无监督的方式训练并进行单目深度估计的方法,使用深度估计网络和相机位姿网络对训练集进行训练。将深度网络估计出的深度信息与相机位姿网络结合,通过最小化损失函数使网络收敛。Zou等[6]提出单目深度估计与光流预测的联合网络,利用视频流前后帧图片变化进行光流预测和深度预测,保证光流和深度的共同有效区域尽可能一致,作为主要约束条件来进行训练。Jiao等[7]结合语义信息和注意力驱动损失,设计协同估计网络和横向共享单元,来优化网络对不同深度值区域的预测效果。这些方法从多角度出发,设计深层融合网络,有效地减少边界模糊问题,提升了全局轮廓性和深度估计细化特征,但存在复杂程度高、计算成本大等问题。
综上所述,本文考虑从减少边界模糊、提高细化特征和降低参数量两个方面出发,提出一种融合全景分割[8]与深度图估计的深度学习模型。主要贡献如下:(1) 提出一种网络架构,使用MobileNet-v2作为轻量型编码器,将MobileNetv2[9]与残差网络[10]融合降低参数,提高计算效率。(2) 解码端提出融合全景分割和深度估计的多任务知识共享策略,设计一种多任务融合模块,包括多尺度映射单元和子任务融合模块,多尺度映射单元分解不同感受野的特征图。子任务融合模块融合两种任务多重感受野信息,进行融合处理。促进深度估计对全景分割信息的吸收,在提高准确度的同时,也降低了模型参数。(3) 使用公开数据集NYUdepth[11]数据集来训练和测试本文方法,并从编码端、解码端和边界效果分析等方面进行充足的实验,来验证本文模型的轻量性和准确性。实验表明本文方法可有效降低物体边界深度的误差。
1 多任务单目深度估计模型
本节构建了深度网络模型,提出参数共享和子任务网络层融合策略,并设计多任务损失函数。设计的网络架构主要为编码器-解码器结构,模型由三部分组成,包括用于提取特征的共享主干编码器网络和子任务融合网络,以及分别用于全景分割和深度图提取的两个单任务分支网络。此外,设计两个跳跃连接层[8],分别将编码器不同层次特征信息与解码器的对应上采样层融合,以提高对原始图片在不同深度层时纹理信息的理解。考虑到图像场景边缘信息在特征图下采样过程中容易丢失,设计两任务之间参数共享策略优化,即两个多任务网络融合模块M1和M2,其网络架构如图1所示。最终结果输出的深度图和全景分割图进行反向传播。
图1 多任务单目深度估计网络模型框架
1.1 编码器网络
如图1所示,编码器结构将网络输入分辨率为224×224的低维RGB图片编码为分别率为7×7的高维特征信息图,将3通道数输入提取为1 024通道数的输出端。提取抽象高级语义信息的过程已被大量的研究学者深入研究,例如VGG-16、VGG19[12]、ResNet50和ResNet101[13]等经典热门编码器网络结构,特征信息提取较为完整,普遍存在复杂度高、计算延迟等问题。本文经过实验尝试了不同的编码器网络结构模型,为了有效提高运算速度和降低延迟,最终选择近年被提出的M-obileNet-v2[7]网络结构,作为网络首选编码器。Mobil-eNet-v2的核心层改变传统卷积为深度可分离卷积[14],该卷积方法可以分解为深度卷积核尺寸为1×1的逐点卷积组合。
根据图2,传统卷积核K包含了Dk×Dk×M×N的参数,其中:Dk为卷积核大小;M为输入图片通道数N为卷积核个数。深度可分离卷积核K的参数为Dk×Dk×M,由此可看出相对于标准卷积来说,这种深度可分离卷积参数减少N倍,在计算上实现更高效的运行速度,在保证计算精度不变的基础之上,通过改变卷积核数量大小来减少网络的参数量和计算量。
(a) 标准卷积滤波器
1.2 解码器网络
编码器网络的每层都会逐渐降低图片的空间分辨率,来获取高级特征信息,而解码是从低分辨率信息恢复高分辨率图。图1所示网络框架中,在解码器部分加入了跳跃连接操作[8],即编码器的后层与解码器的前层进行连接,将浅层网络与深层网络进行叠加,提高了网络对不同深层信息的融合。该解码器网络使用双线性插值上采样操作,解决在跳跃连接后,出现通道比例不一致的问题。
1.2.1硬参数共享
硬参数共享是多任务学习的常用模型,在多种任务之间具有强相关时,硬参数共享就更加适用。由于全景分割的目的是分割出不同的目标,深度图预测在本质上也是根据像素分割不同的深度信息,可以断定全景分割和深度预测之前具有一定强相关性,因此两种任务之间选择使用参数硬共享策略,来有效地优化多任务网络学习。具体而言,多任务网络将输入RGB图像经过的编码器网络层与解码器前四层上采样网络层作为权重共享层,共享特征提取信息,然后融合全景分割信息,将其一分为二,然后分别经过相同结构的任务特定网络层,输出深度预测图和全景分割图。
本文设计解码器经过四层卷积核大小为3×3的深度反卷积层Deconv1、Deconv2、Deconv3、Deconv4,每层卷积核总数为前一层输出通道数的一半,最终将编码端输出的1 024通道的7×7特征图转为128通道的56×56特征图,为了更好地融合全景分割的特征信息,该部分反卷积层采用硬共享参数,共享方式如图3所示,通过硬共享方式降低过拟合风险,同时提高辅助网络对主干网络的优化提升。在实验中提出了分别共享不同层时对准确率的影响。在其后,使用两个反卷积层特定任务层来进行分支处理,其结构与硬共享参数层一致。
图3 解码器多任务硬参数共享模型
1.2.2子任务网络融合策略
基于文献[15]提出的组交互层平滑扩张卷积和文献[16]多任务同步精馏网络,本文构造了如图4所示的子任务网络融合模块。该模块包含两个单元:多尺度映射单元和多任务融合单元。
图4 多任务子网络融合模块示意图
(1) 多尺度映射单元。为了使网络能够全局感受不同尺度结构信息,融合两种网络的多尺度特征信息,加入多尺度映射单元来有效地感知分层特征的信息提取。该单元通过应用深度空洞卷积,获得较大感受野的同时,也减少了网络参数量。在分割类别网络中,感受野的大小程度可绝对性地影响获取的全局结构信息质量。多尺度映射单元旨在细化区分提取多个大小不同的感受野特征图,分解经过深度反卷积层后的输出图片。其单元具体方式为:将输入经过四个卷积核为3×3、扩张率分别为r=1,2,3,4的深度空洞卷积,分解为4个通道数缩减为原来二分之一的与输入分辨率相同的不同尺度信息的特征图,具体框架如图4(a)和图4(b)所示。
(2) 多任务融合单元。为了有效地融合深度估计主任务与全景分割辅助任务的特征信息,将两任务经过多尺度映射单元的输出分组拼接,其拼接结果为分辨率不变、通道数为64且感受层次不同的F1、F2、F3和F4,如图4(c)所示,将不同尺度下的两任务输入进行叠加融合,能够更加有效地促进辅助任务中的信息与主干任务信息的融合效果。最后拼接F1、F2、F3和F4特征图,经过两个卷积核为1×1的标准卷积,来调整输出通道数。将两任务拆分不同膨胀率空洞卷积,可以有效拆分不同感受野下的场景信息,进一步将融合两任务不同膨胀率下的特征图进行叠加,这样既能够有效地吸收场景分割边缘的信息,融合场景分割特征信息要素,从而解决边界模糊等问题,又能够减轻空洞卷积带来的网格效果。
1.3 多任务损失函数
多任务学习中需要融合各个任务的损失函数进行梯度反向传播,以达到优化权重的效果。Ma等[17]提出通过实验验证,L1范数损失在深度估计方面上具有更好的收敛效果,因此,选择L1范数作为深度预测网络损失函数,如式(1)所示。
式中:ygt为标定值;ypre为预测值。
L2范数为全景分割网络损失函数,如式(2)所示。
常用多任务损失都是对各项任务设置固定且不同权重比例进行求和。本文中为了防止辅助子任务占梯度下降的主导地位,进而影响主任务梯度下降方向,在多任务损失函数中,引入噪声σ[18],并对各任务损失L(ω)进行正则化约束。多任务中每一个任务的改进损失函数为:
因此,设计多任务总损失函数L中两项任务的损失分别为Ld和Lp,公式为:
2 实验过程及结果分析
首先采用1.1节所述的深度估计网络模型对数据集进行深度训练,并对结果进行分析,同时,阐述对NYUdepth-v2数据集中缺少全景分割样本的相关设计方法和处理决策,然后针对其实验结果进行消融实验。
2.1 实验设置
2.1.1数据集及数据处理
本次实验选用的NYUdepth-v2数据集作为训练和测试的数据集,包含来自3个城市464个新场景的46 000幅图片。其中:45 355幅图片作为训练集;645幅图片用于评估。每幅图像的分辨率为640×480,在数据输入处理时将分辨率改为224×224。
由于该数据集仅有2.8 GB的数据拥有分割标签,而其他大量的数据并没有全景分割标签。因此本文借用Detectron2[19]开源项目中以Mask R-CNN[20]为基低,构建全景分割网络,将现有的已标注全景分割标签的NYU数据进行预训练,以适应本文多任务网络需要使用的全景分割标签数据集。
此外,随机对训练样本进行平面内旋转([-5°,+5°])、色彩抖动(对图像原有像素值加入轻微噪声)、翻转(颜色深度分割图同时进行50%概率翻转)等操作,以达到数据扩充[21]的目的。
2.1.2评价指标
为了评价所提出的深度估计方法的有效性,选择目前主流的4种定量评价指标,即绝对相对误差(AbsRel)、均方根误差(RMS)、常用对数误差(lg)和阈值误差(δ),表达式分别为:
式中:N为像素总数;ypred为第i个像素的估计深度;ygt为第i个像素的对应真实深度。
2.1.3实验环境
本文使用PyTorch 1.0框架,在GPU内存为24 GB的NVIDIA Tesla M40计算机上进行实验,设置初始学习率为0.001,固定数据迭代20次,保持批量大小batchsize为8,最终训练时间为32 h。
2.2 算法对比
如表1所示,本文将提出的单目深度估计方法与近年来其他深度学习单目深度估计方法在NYUdepth-v2数据集上进行对比。其中文献[5]、文献[3]、文献[1]和本文方法使用卷积神经网络预测深度信息;Xu等[22]通过CRF优化网络模型;Laina等[23]在解码端采用新型上采样方法优化效果;Wofk等[24]提出上投影连接进行优化。对比上述所提网络的结果表明,在误差RMS指标上低于Diana等提出的快速深度估计网络7.2%,在准确率δ1<1.25的指标上高于其5.4%,与Xu等提出的结构注意力引导网络比较提高0.007。综上,本文方法在各项指标中都达到了较优性能。
表1 与其他算法对比
将本文方法与文献[23]和文献[25]方法参数进行对比,由表2可以看出,从参数上较文献[23]相比,参数量减少42.7%,在结果上RMS提升了2.2%,准确率δ1<1.25的指标上高出0.002结合表1、表2可以看出,本文方法与文献[23]相比具有更低的网络参数量,准确率也较优于其网络结构;与文献[24]的方法相比,本文模型参数多19.7%。文献[24]的方法使用SOT的算法NetAdapt对网络模型进行网络剪枝压缩,提高运算效率。但从评价指标上,本文方法的RMS和δ1<1.25分别降低7.2%和提高5.4%,在增加6 MB的参数量为代价的情况下大幅度提高准确率,以满足更广范围的适用需求。
表2 不同算法参数对比
在计算效率上本文方法与其他方法进行对比,结果如图5所示,其中横轴代表δ1<1.25(阈值误差),纵轴为测试集测试单幅图片时的处理时间,分别用不同颜色不同符号代表不同的模型方法。本文方法较其他方法相比,δ1<1.25均为最优结果的同时,在计算效率上比文献[22]方法提升47.5%,与文献[23]方法相比,计算性能提升37%。综上,本文提出的融合全景分割的单目深度估计网络在评价指标和网络参数规模上都具有相应的优势。
图5 不同算法计算效率对比
2.3 模型评估实验
本节主要从网络编码器端主干网络分别使用不同网络的输出结果和参数规模;将预训练后的MobileNetv2模型作为编码器主干网络,解码器端不同子任务融合模块对结果的影响;最后采用不同策略的可视化分析进行对比实验。
2.3.1编码器网络实验
本文编码器主干特征提取网络尝试了VGG16、ResNet18、ResNet34、ResNet50和本文选用的MobileNetv2网络模型,并且选用其在ImageNet[25]上预训练后的模型参数进行实验。具体实验结果如表3所示,为适应不同的网络模型能够匹配解码器网络,在结构上作部分的结构调整,主要去掉这些预训练网络模型的分类层,以及相应保持图片尺寸大小一致的网络层操作。同时,除编码器端主干网络外,其他网络结构与图1保持一致。
表3 不同编码器网络对比
对比不同编码器结构网络实验,结果表明,用MobileNetv2作为编码端主干网络模型在各项指标较优,在网络模型总体参数量大幅度明显减少,分别比VGG16、ResNet18、ResNet34、ResNet50低78.4%、30.9%、40.6%、47.0%。同时,在rel、精确率δ1、δ2、δ3都达到了最优指标。
2.3.2解码器网络实验
针对解码器网络,本文结合全景分割领域,提出深度估计和全景分割的子任务网络融合模块,促进多任务数据融合,以提高主干网络的学习效果。本节从辅助任务和子任务融合模块两个方面进行实验以验证提出的两种策略的必要性和提升效果。如表4所示,(1) 为不加入全景分割辅助任务,单任务端到端直接输出深度预测图;(2) 结合全景分割,加入硬共享参数,加入编解结构跳跃连接共享方式调整网络结构;(3) 为在(1)和(2)所提结构后,加入一个子任务融合模块,包括两个尺度映射单元和一个多任务融合单元;(4) 为结合(3)中所提改变,再加入一个子任务融合模块,即本文最终所选方案。
表4 不同解码端策略对比
可以看出解码器端结合全景分割方法能有效优化深度估计性能,方法(2)较方法(1)有明显提升,误差降低率分别为3.9%、8.4%、1.31%;在δ1<1.25准确率指标上提升2.8%。当加入了本文提出的子任务融合模块时,性能进一步提升,具体如表4中方法(3)所示。方法(4)中加入两个子任务融合模块后进一步提升效果,其中rms提升幅度较大约1.9%。综上分析,本文所提出的多任务结合全景分割辅助深度估计策略和融合子任务模块能够有效地提升网络精度。
2.3.3边界深度效果分析
选择使用2.3.2节中提出的方法(1)和方法(4)来分析其图片中对物体边缘深度估计情况,即为不加入全景分割辅助网络模型和本文提出的最终网络模型,结果如图6所示。对比随机抽取的5幅图片,分析结果如下:在未加入全景分割辅助网络时,场景A中近景的椅子仅显示出来椅子的模糊深度,并没有显现出轮廓外形;在场景B中,深度连续性没有很好地体现出来;在场景D中,沙发的边界处产生了大量的伪影,没有体现出不同遮挡物体之间的深度落差。
图6 深度图预测对比结果
当加入全景分割辅助任务和提出的参数共享和子任务融合模块后,场景图C中在边界处的模糊像素明显减少,在不同遮挡物体之间深度差距较为明显,物体的轮廓也逐渐清晰。从场景图E中,同样可以明显看出在图片存在深度差较大的部分,深度画面边界分割更加细致。
最终结合所提出的网络结构,融合全景分割辅助任务以及子任务融合模块,效果进一步提升,在图片无遮挡物体上的边缘细节体现更加突出,在遮挡物体之间的深度落差上明显提高。尤其可以从图D及图E上看出,网络在分割辅助策略的基础上加入参数共享策略后,物体的分割效果显著提高,边界深度落差体现明显,纹理突出。
3 结 语
根据单目深度估计中在物体遮挡情况时难以有效地估计边界深度等问题,提出一种优化方法:在网络结构中,选择使用MobileNetv2作为编码器,着重在解码器上加入全景分割多任务学习、硬参数共享策略,以及多任务之间提出的子任务参数融合策略,即子任务融合模块。本文方法主要解决了因物体边界深度估计不准确而产生的边界连续和模糊的问题,并且使深度估计的结果更加清晰,边界模糊问题有所减弱。同时,在保证精度的情况下,减少参数量,以适应更广泛的应用场景。最后,在NYUdepth-v2数据集上验证了本文优化方法的可行性,并且与目前单目深度估计优化算法相比,结果较好。