高永彬,王慧星,黄 勃
(上海工程技术大学 电子电气工程学院,上海201620)
单目深度估计对三维场景理解任务具有重要意义,在三维重建、自动驾驶、视觉跟踪、三维目标检测、增强现实等领域有着广泛的应用。随着深度学习的迅速发展,利用有监督学习方法进行单目深度估计的研究大量涌现,这些方法通常将深度估计建模作为一个回归问题,使用深度卷积神经网络获取图像的层次信息和层次特征,并通过最小化均方误差来训练回归网络。然而,这些方法往往存在缺点:一方面,使用最小化均方误差来训练回归网络,往往会导致网络收敛慢和局部解不理想的问题;另一方面,为了获得高分辨率的深度图,需要使用跳跃连接或多层反卷积网络结构,这使网络训练更加复杂,计算量大大增加;最后,利用多尺度网络对图像进行特征提取,往往会丢失像素的特征信息和位置信息,对较小目标的深度估计效果较差。为此,Fu等人提出了用于单目深度估计的深度序数回归网络(Deep Ordinal Regression Network),使 用ASPP(Atrous Spatial Pyramid Pooling)获取不同尺度的特征,并通过全图像编码器捕获全局上下文信息[1]。采用离散策略对深度值进行离散,将深度估计转化为序数回归问题,通过一个普通回归损失函数训练网络,提高网络训练效率。
本文主要对深度序数回归网络深度序数回归算法进行研究,主要贡献如下:
(1)提出了一种基于CBAM(convolutional block attention module)的深度序数回归方法,通过CBAM代替深度序数回归算法中的全图像编码器,获取更完整的像素特征信息和位置信息,提高全局上下文信息的表示能力;
(2)将CBAM中的通道注意力机制和空间注意力机制以不同的顺序融入到网络中,以发现注意力机制的顺序与网络结构的相适应性,探索出最佳的网络模型;
(3)实验结果证明,本文提出的网络模型可以有效地提高深度估计的精度,在KITTI数据集上进行测试,效果比当前最佳方法提高1%左右。
近年来,深度学习被广泛应用于计算机视觉领域,并在单目深度估计方面取得了显著的成就。Eigen等首次将深度学习应用于单目深度估计研究中,提出了一种多尺度神经网络用于深度估计的思想,首先使用粗尺度网络预测图像的全局深度,然后使用细尺度网络优化局部细节,最终获得像素级别的深度信息[2];在此方法的基础之上,他们又提出了一种用于多任务的多尺度网络框架,使用了更深层次的网络结构,利用3个细尺度的网络进一步增添细节信息,使用不同的损失函数和数据集分别对深度预测、表面法向量估计和语义分割任务进行训练,最终获得了良好的效果[3];由于多尺度网络只是使用几个串联的浅层网络对图像进行分层细化,因此最终得到的深度图分辨率是偏低的,为了提高深度图的分辨率,Li等在多尺度网络之间加入跳跃连接,在第一个网络中使用跳跃连接,对池化后的特征图进行上采样,进而与第二个网络中的特征图进行拼接,同样地,第二个网络中的特征图与第三个网络中的特征图进行拼接,使网络同时将较深层的低空间分辨率深度图与较低层的高空间分辨率深度图融合,提高了深度图的分辨率[4];Laina等提出了一种残差学习的全卷积网络,用于单幅图像的深度估计,网络结构更深,提高输出分辨率的同时又优化了效率[5];Liu等提出了将条件随机场(conditional random field,CRF)与CNN相结合来估计单幅图像深度的方法,使用CRF的一阶项和二阶项综合训练2个CNN,然后将这两个网络通过CRF能量函数统一于一个训练框架中,这种方式可以提供更多的约束[6];同样使用CRF方法,Xu等提出了一种结构化注意力模型,它可以自动调节不同尺度下对应特征之间传递的信息量,并且可以无缝集成到CRF中,允许对整个架构进行端到端训练[7];Cao等把深度估计问题看作像素分类问题,首先将深度值进行离散,然后使用残差网络来预测每个像素对应的类别,最终使用CRF模型进行优化[8];Chang等提出了使用金字塔池化模块来捕捉更多的全局信息,使单幅图像的深度估计精度得到提高[9]。
以上方法虽然都利用了有监督学习的方法对单幅图像进行深度估计,但使用多尺度网络结构往往会丢失像素的特征信息和位置信息,对深度估计精度造成影响。通过最小化均方误差训练网络,存在收敛慢和局部解不理想的缺点。加入跳跃连接等结构,使网络训练复杂,计算量增加。
目前还有一些使用无监督学习进行深度估计的方法,Chen等提出了一种场景网络来对物体的几何结构进行建模,通过增强立体图像对之间的语义一致性来执行区域感知深度估计[10];Lee等提出了一种利用相对深度图进行单目深度估计的方法,使用CNN在不同的尺度上估计区域对之间的相对深度和普通深度,进而将普通深度图和相对深度图分解,并对分解之后的深度图进行优化重组,以重建最终的深度图[11]。虽然无监督学习方法在一定程度上克服了数据标注工作量大的问题,但是始终达不到有监督学习的方法的精度。
针对以上问题,本文对有监督学习的单目深度估计模型深度序数回归算法进行了研究,发现深度序数回归算法中使用的全图像编码器存在易丢失较大特征值像素特征信息和位置信息的缺点。本文引入CBAM,提出了一种CBAM的深度序数回归方法。使用全局最大池化和全局平均池化替代局部平均池化,解决较大特征值像素特征信息易丢失的问题。使用空间注意力机制生成的注意力特征图与原始特征图相乘替代简单的复制操作,解决像素位置信息易丢失的问题。
本文方法的整体网络框架如图1所示。主要由3部分组成,特征提取网络、场景理解模块和序数回归模块。
图1 整体网络结构Fig.1 Overall network structure
首先将单幅图像输入到特征提取网络中进行初步的特征提取,特征提取网络采用ResNet-101,通过在ImageNet数据集上预训练好的模型对其进行初始化。由于前几层的特征只包含一般的低级信息,在初始化后固定ResNet-101前2个卷积层的参数,且在训练过程中为BN(Batch Normalization)层直接进行初始化;然后将得到的特征送入场景理解模块,场景理解模块包括全图像编码器、空洞空间卷积池化金字塔模块ASPP和跨通道信息学习器。全图像编码器主要作用是捕获全局特征的上下文信息,在这里使用CBAM取代全图像编码器结构,依次使用通道注意力机制和空间注意力机制捕获像素更好的特征信息和位置信息;ASPP模块主要使用采样率分别为6、12和18的空洞卷积对输入的特征图进行并行采样,进而得到多尺度融合特征,来表征不同大小区域的图像特征;跨通道信息学习器主要使用1×1的卷积对各个通道之间的相互作用进行学习。进一步地将全图像编码器、ASPP模块和跨通道信息学习器输出的特征图分别经过一个1×1的卷积,进而将3个模块的所有输出进行合并,再经过一个1×1的卷积,输入到序数回归模块。最后根据深度值的序数相关性,使用间隔递增离散化策略(spacing-increasing discretization,SID)在对数空间中对深度值进行离散,以降低深度值较大区域的训练损失。使用普通的序数回归损失来学习网络参数,获得更高的精度。
深度序数回归算法中的全图像编码器结构如图2所示。为了从尺寸为C×h×w的F中获得相同尺寸的全局特征F'',首先要通过局部平均池化对原始特征进行降维,将降维之后的特征通过全连接层得到一个C维的特征向量;将特征向量视为空间维数为1×1特征图的C通道,并添加一个核尺寸为1×1的卷积层作为特征向量跨通道参数池化结构;最后,将特征向量复制到F'',使F''的每个位置对整个图像有相同的理解。通过研究发现全图像编码器存在以下缺点:
图2 全图像编码器Fig.2 Full image encoder
(1)只使用平均池化存在2个弊端:一方面,由于图像中感兴趣的对象往往会产生较大的像素值,因此只使用平均池化会丢失较大特征值像素的特征信息;另一方面,局部的平均池化只是使用小尺寸的卷积核在图像中进行局部卷积,难以很好地整合图像的全局信息;
(2)针对图像每个位置的信息,只将特征图简单地复制到整个图像,会丢失重要像素的位置信息。基于以上全图像编码器的缺点,本文使用CBAM替代全图像编码器,通过全局最大池化和全局平均池化更好地捕获较大特征值像素的特征信息。通过空间注意力机制生成的注意力图与原始特征图相乘替代简单的复制操作,保留完整的位置信息。
如图1中的绿色部分所示,CBAM依次通过通道注意力机制和空间注意力机制,下面分别对通道注意力机制和空间注意力机制进行详细介绍。
通道注意力机制如图3所示。首先在空间维度上使用全局最大池化和全局平均池化操作对输入特征F∈RC×H×W进行压缩,生成2个不同的特征描述符;将2个描述符分别送入一个由多层感知机(multi-layer perceptron,MLP)构成的共享网络进行计算,进一步将共享网络输出的最大池化特征向量和平均池化特征向量以元素求和的方式进行合并;最终使用sigmoid函数将合并之后的特征向量映射到[0,1],进而得到通道注意力图。通道注意力图Mc∈RC×1×1的计算过程如式(1):
其中,σ代表sigmoid函数。
空间注意力机制如图4所示。首先在通道维度上对经过通道注意图提炼之后的特征F'∈RC×H×W使用全局最大池化和全局平均池化操作,得到2个不同的特征描述符;使用卷积层对它们进行连接合并;最终使用sigmoid函数将合并之后的特征向量映射到[0,1],进而得到空间注意力图。空间注意力图Ms∈RH×W的计算过程如式(2):
图4 空间注意力机制Fig.4 Spatial attention module
其中,f7×7代表卷积核尺寸为7×7的卷积运算。
得到通道注意力图和空间注意力图后,将通道注意力图与输入特征相乘得到F',然后计算F'的空间注意力图,并将二者相乘得到最终的特征F''。 该过程可表示为式(3)和式(4):
其中,⊗代表逐元素相乘。
将原始特征依次经过通道注意力图和空间注意力图的调整,使最终特征图中的较大特征值像素特征信息和位置信息更加完整。
总的序数损失被表示为每个像素的序数损失的平均值。每个像素的序数损失函数为式(5)和式(6):
其中,l(w,h)∈{0,1,…,K-1}代表在空间位置(w,h)通过使用SID离散策略得到的离散标签;代表预测的离散深度值;通过softmax函数计算。
总的序数损失函数为式(7):
其中,N=W×H。
由于随着深度值的增大,用于深度估计的信息会逐渐减少,进而导致较大深度值的估计误差通常较大。因此使用SID策略进行离散化,该策略在对数空间中统一离散给定深度区间,以降低大深度值区域的训练损失,合理估计大深度值。假设深度区间[α,β]需要离散为M个子段,SID策略可表示为式(8):
其中,si∈{s0,s1,…,sM}代表离散阈值。
最终预测的深度值为式(9):
其中,ε为偏移值,α+ε=1。
KITTI数据集主要包含室外场景,数据由装载在行驶汽车上的相机和深度传感器捕获,图像大小为375×1241像素[12]。本文算法在KITTI数据集上进行训练和测试,数据切分方式从29个场景中切分出697幅图像进行测试,其余的32个场景中的23 488幅图像用于训练和交叉验证,其中22 600幅用于训练,剩余的图像用于验证。实验中,网络结构使用Pytorch框架实现,训练时将输入图像大小调整为385×513。网络使用SGD优化器进行优化,动量缩减参数设置为0.9,权重缩减参数设置为0.0005,初始学习率设置为0.000 1,mini-batch尺寸设置为4。
将训练模型的实验结果与其它相关方法进行对比,采用常用的评价指标来评估结果,其中di表示真实深度;表示预测深度;N表示图像的像素总数。指标表达式为:
·绝 对 相 对 误 差(absolute relative error,AbsRel),式(10):
·平方相对误差(squared relative error,SqRel),式(11):
·均 方 根 误 差(root mean squared error,RMSE),式(12):
·准确率:满足如下条件的像素占总像素的百分比,式(13):
其中,thr=1.25,1.252,1.253。
本文方法与几个先进的单目深度估计方法的对比结果见表1,这些方法中包括了有基于监督学习的 方 法(Eigen et al.[2]、Liu et al.[13]和Gan et al.[14])、半监督学习的方法(Kuznietsov et al.[15])和无监督学习的方法(Garg et al.[16]和Yin et al.[17])。从实验结果可以看出,本文算法的深度估计效果明显优于无监督学习方法的效果,同时也达到甚至超过了有监督学习方法的效果,这主要得益于在训练过程中,通过使用通道注意力机制和空间注意力机制提高了全局信息的表示能力。为了证明算法改进部分的有效性,在表1中还提供了在KITTI数据集上的消融实验结果,各项指标的结果证明了改进部分的有效性。
表1 KITTI数据集上的实验结果对比Tab.1 Comparison of experimental results on the KITTI dataset
消融实验的结果见表2。主要对网络中CBAM中通道注意力和空间注意力机制的使用顺序进行了分析。在只使用通道注意力机制、先空间注意力机制后通道注意力机制和先通道注意力机制后空间注意力机制3个方面进行实验。通过分析表2可知,先通道注意力机制后空间注意力机制的精度比只使用通道注意力机制和先使用空间注意力机制后使用通道注意力机制的效果都高,说明先通道注意力机制后空间注意力机制的顺序结构可以捕获像素更完整的特征信息和位置信息。
表2 消融实验结果Tab.2 Results of ablation experiment
KITTI数据集上的深度估计的效果图如图5所示。与其它方法相比,该模型在细节处理方面具有更强大的能力,主要表现在小物体、行人以及树木等区域保留了更为丰富的纹理信息,细节处理更加平滑,且前景和背景分离效果更好。
图5 各模型深度预测结果Fig.5 Depth prediction results of each model
为了评估本文方法的泛化能力,本文还在Cityscapes数据集做了测试实验,效果如图6所示。该方法只使用KITTI数据集进行训练和评估,而没有使用Cityscapes数据集。虽然两个数据集的场景类型存在一定差异,但是该方法仍然可以输出效果很好的深度图像。
图6 在Cityscapes数据集上的测试效果图Fig.6 Test effect diagram on Cityscapes dataset
针对有监督学习的单目深度估计模型深度序数回归算法中全图像编码器易丢失较大像素特征信息和位置信息的问题,本文提出一种基于CBAM的深度序数回归方法。通过一系列的对比试验和消融实验,展示出了该方法的优异性和合理性。对比基础网络,该方法的网络模型捕获了更多目标的特征信息和位置信息,更加完整地保留了图像中较小目标或其他细节的特征。通过利用KITTI数据集和Cityscapes数据集对该方法进行验证,表明其高于现有的大部分深度估计方法。