写在前面: 翻译软件翻译,后续可能慢慢优化
单目深度估计已经成为计算机视觉中研究最多的应用之一,其中最准确的方法是基于全监督学习模型。然而,获取准确和大量的真实标签数据集来模拟这些完全监督的方法是该领域进一步发展的主要挑战。由于训练数据的广泛可获得性,使用单目视频训练的自监督方法构成了缓解上述挑战的最有前途的方法之一。因此,人们对它们进行了深入的研究,其中探索的主要思想包括不同类型的模型体系结构、损失函数和遮挡掩模来处理非刚性运动。本文提出了两种改进自监督单目训练深度估计的新思想:1)自注意力,2)离散视差预测。 与通常的局部卷积运算相比,自注意可以探索更一般的上下文信息,允许在图像的非连续区域推断相似的视差值。通过完全监督的方法,离散视差预测除了能够估计深度不确定性外,还能提供比更常见的连续视差预测更稳健、更清晰的深度估计。我们展示了采用这两种思想在最先进的自监督式单目训练深度估计模型Monodepth2的扩展,使我们能够在KITTI 2015和Make3D中设计出在现场产生最佳结果的模型,弥合了自监督式立体训练和完全监督方法之间的差距。
感知3D世界是计算机/机器人视觉的主要任务之一。准确的感知、定位、测绘和规划能力取决于能够获得正确的深度信息。测距传感器,如激光雷达或立体声/多摄像头装配,由于其准确性和健壮性,经常被部署用于机器人和自主系统中估计深度。然而在许多情况下,拥有或仅依靠如此昂贵或复杂的传感器可能是不可行的。这导致了基于学习的方法的发展[49,50,20],其中最成功的方法依赖于完全监督卷积神经网络(CNN)[9,8,10,15,35]。虽然有监督的学习方法已经产生了出色的单目深度估计结果,但与现场可用的RGB图像和视频数据集相比,真实标签的RGB-D数据在种类和丰富性方面仍然有限。此外,由于传感器噪声和有限的操作能力(由于天气条件、照明等),收集准确和大量的真实标签数据集是一项困难的任务。
最近的研究表明,可以使用同步的立体图像对[11,13]或单目视频[62]以自监督的方式训练深度估计器。虽然由于训练序列的广泛可获得性,单目视频为基于立体的学习提供了一种有吸引力的替代方案,但它带来了许多挑战。与基于立体的方法不同,基于立体的方法具有可以离线计算的已知相机姿势,自监督单目训练的深度估计器需要联合估计深度和自我运动,以最小化光度学重新投影损失函数[11,13]。姿态估计器模型引入的任何噪声都会降低单目序列上训练的模型的性能,导致较大的深度估计误差。此外,自监督单目训练假设在静态(即,刚性)场景中有运动的摄像机,这使得单目模型估计与运动的视觉对象(例如,汽车和人(即,非刚性运动))相关联的像素的“洞”。为了处理这些问题,许多工作集中于开发新的专业化体系结构[62]、屏蔽策略[62,14,52,32]和损失函数[13,14]。即使有了所有这些发展,自监督的单目训练的深度估计器的精确度也低于其立体训练的对应物,并且明显低于完全监督的方法。
在本文中,我们提出了两个改进自监督单目训练深度估计的新思想:1)自注意[54,51];2)离散视差量[22]。我们提出的自注意模块探索非连续(即全局)图像区域,作为估计这些区域的相似深度的上下文。这种方法与目前使用的无法探索这种全局背景的局部2D和3D卷积形成对比。所提出的离散视差量使得能够估计更稳健和更锐利的深度估计,正如先前完全监督的深度估计方法[22,29]所证明的那样。更清晰的深度估计对于提高精度是重要的,并且需要增加稳健性以允许自监督单目训练的深度估计来解决该方法所犯的常见错误,例如不正确的姿态估计和由于均匀的纹理细节而导致的匹配失败。我们还表明,我们的方法可以使用所提出的离散视差量来估计像素方向的深度不确定性[22]。深度不确定性估计对于改进深度估计非常重要[10],在安全关键系统[21]中,允许代理人识别环境中的未知因素,以便做出最优决策。作为本文的第二个贡献,我们利用语义分割网络体系结构的最新进展,允许我们在单个GPU机器上训练更大的模型。实验结果表明,该方法对Kitti 2015和Make3D的自监督单目深度估计效果最好。实验还表明,我们的方法能够弥补自监督立体训练深度估计器和完全监督深度估计器之间的差距。
图1.使用自注意力和离散视差量的自监督单目训练深度估计。我们的自监督单目训练模型使用自注意力来改进上下文推理和离散视差估计,以产生准确和尖锐的深度预测和深度不确定性。上:输入图像;中上:估计的视差;中下:系统生成的注意图样本(蓝色表示常见的关注区域);下:像素深度不确定性(蓝色:低不确定性;绿色/红色:高/最高不确定性)。
许多用于导航、定位和测绘的计算机视觉和机器人系统依赖于对周围3D世界的准确理解[37,16,7,1]。主动传感器,如激光雷达、飞行时间摄像机或立体/多摄像机设备,通常被部署在机器人和自主系统中,以估计图像的深度,以了解代理人的环境[7,1]。尽管它们被广泛采用,但这些系统有几个缺点:有限的范围、传感器噪声、功耗和成本。与依赖这些主动传感器系统不同,最近利用完全监督的深度学习方法[9,8,10,15,35]的进展使学习从单目RGB相机预测深度成为可能[9,8]。然而,用于监督学习的真实标签RGB-D数据可能很难获得,特别是对于我们希望机器人代理运行的每个可能的环境。为了缓解这一要求,最近的许多工作都集中在开发自监督技术,以使用同步的立体图像对[11,13,41]、单目视频[62,14]或双目视频[60,14,32]来训练单目深度估计器。
单目图像的深度估计是一个固有的不适定问题,因为图像中的像素可能具有多个看似合理的深度。然而,基于监督学习的方法已经被证明可以缓解这一挑战,并正确地从彩色输入图像估计深度[50]。Eigen等人[9]首次提出了一种基于深度学习的方法,该方法利用多尺度卷积神经网络和尺度不变损失函数对图像中的局部和全局特征进行建模。从那时起,基于全监督深度学习的方法不断得到改进[10,15,35]。然而,这些方法受到训练数据可用性的限制,而训练数据的获取成本可能很高。虽然这些问题可以通过使用合成训练数据来缓解[35],但模拟环境需要由人工来建模,从而限制数据集中的变化量。为了克服完全监督的训练集限制,Garg等人[11]提出了一种自监督的框架,其中使用立体光度重投影扭曲损失来隐式学习深度,而不是使用真是标签深度进行监督。这个损失函数是一种基于像素的重建损失,它使用了立体图像对,其中一对的右图像使用可微分图像采样器[19]被扭曲到左图像。该损失函数允许深度学习模型隐含地恢复输入图像的潜在深度。Godard等人[13]添加了一个左右一致性损失项,有助于确保立体视觉对的左右图像预测深度之间的一致性。虽然能够训练单目深度估计器,但这些方法仍然依赖于基于立体的训练数据,仍然很难获得。这推动了自监督的单目训练深度估计器的发展,文献[62]通过联合学习用两个独立的网络预测深度和自我运动来放宽对同步立体图像对的要求,使得能够使用单目视频训练单目深度估计器。为了实现这一点,假设场景是静态的(即刚性的),而唯一的运动是相机的运动。然而,当这一假设被打破时,这会导致深度估计器中的退化行为。为了处理这个问题,文献[62]包括一个预测性掩模,它学习忽略违反刚性假设的区域。Vijayanarasimhan等人[52]提出了一种基于多个运动掩码的更复杂的运动模型,而GeoNet模型[58]分解深度和光流以考虑图像序列内的对象运动。通过将预测深度约束为与表面法线一致[57]、使用预先计算的实例级分割掩模[3]以及提高输入图像的分辨率[41],自监督单目训练方法得到了进一步的改进。Godard等人[14]通过使用多尺度估计和更好地处理遮挡的每像素最小重新投影损失的Monodepth2,进一步缩小单目和立体训练的自监督之间的性能差距。我们用我们提出的自注意力和离散视差量的思想扩展了Monodepth2。
与递归神经网络(RNN)[47]、长期短期记忆(LSTM)[18]和卷积神经网络(CNN)[27]相比,自注意力通过允许更好地处理单词之间的长范围依赖关系[51]来改进自然语言处理(NLP)系统的性能。这种更好的性能可以用以下事实来解释:RNN、LSTM和CNN只能处理本地单词邻域中的信息,使得这些方法不足以捕获句子中的长范围依存关系[51],而这在某些任务中是必不可少的,比如机器翻译。自注意力在计算机视觉中已经被提出用来改进图像分类和目标识别[2,39]。与只能处理局部像素邻域中的信息的卷积层[4,61,6]相比,通过更有效地解决在图像的非连续区域中分割视觉类别的问题,自注意力还改进了诸如语义分割[59]之类的计算机视觉任务的性能。事实上,最近语义分割性能的许多改进源于改进的上下文聚合策略(即,可以处理空间上不连续的图像区域的策略),例如PSPNet[61]中的金字塔池化模块(PPM)和Atrous空间金字塔池[4]。在这两种方法中,多个尺度的信息被聚合以改善网络的上下文表示。袁等人[59]提出OCNet进一步改进了这一领域,它在ResNet-101[17]主干上增加了一个自注意力模块,该模块学习在上下文中表示具有相似语义相似性的特征组。因此,我们假设,这种自注意力机制也可以改善使用单目视频的深度预测,因为用于预测像素深度的正确上下文可能在标准卷积无法到达的非连续位置。
Kendall等[22]提出以监督的方式学习立体匹配,方法是使用共享的CNN编码器,该编码器的代价量使用3D卷积进行优化。刘等人[29]通过使用具有真实标签深度和姿态的单目视频训练模型来进一步研究这一想法。文献[29]依赖于深度概率体积(DPV)和贝叶斯过滤框架,该框架基于DPV计算的不确定性来精炼离群值。Fuet等人[10]将他们的真实标签深度数据表示为离散的箱,有效地形成了用于训练的视差量。所有上述方法都适用于完全监督的场景,显示出深度估计的稳健性和清晰度的优势,以及估计深度不确定性的可能性。这种不确定性估计可被自主系统用来改进决策[21]或改进深度估计[10]。在本文中,我们假设具有离散视差量的自监督单目训练方法的扩展将提供与完全监督模型相同的优点。
在介绍我们提出的自监督单目训练深度估计模型时,我们着重说明了本文的主要贡献,即自注意力和离散视差量的重要性。我们使用基于UNet架构[44]的Monoepth2模型[14]作为基线。
图2. 总体架构图像编码过程在a)部分中突出显示。输入的单目图像使用ResNet编码器进行编码,然后通过自注意力上下文模块。然后,将计算的注意图与2D卷积进行卷积,其中输出通道的数量等于离散视差量(DDV)的数量维度。然后通过在视差维度上执行软目标最大值来将DDV投影到2D深度图中,从而产生最低分辨率视差估计(等式4)。在部分b)中示出了姿态估计器,并且部分c)中示出了多尺度解码器的更多细节。低分辨率视差图通过UpConv(最近的上采样+卷积)的连续块。以与初始编码阶段相同的方式,在每个尺度上执行DDV投影。最后,将每个输出上采样到输入分辨率,以计算光度学重投影损失。
我们用I:Ω→R3表示RGB图像,其中Ω表示高度H和宽度W的图像点阵。如图2所示,模型的第一级是Resnet-101编码器,其形式为X=Resnetθ(It),其中X:Ω1/8→Rm,M表示Resnet输出处的通道数,Ω1/8表示Ω中初始大小的第(1/8)倍的低分辨率点阵。ResNet输出然后由自注意力模块[54]使用,该自注意力模块[54]首先形成查询、关键字和值结果,由以下表示:
WF、Wg、WH∈RN×M。然后将查询和键值与
其中Sω:Ω1/8→[0,1],我们滥用该符号,将g(X)表示为大小为N×H/8×W/8的张量。然后,通过将值与(2)中的Sω相乘来构建自注意力图,其中:
低分辨率离散视差量由d1/8(ω)=conv3×3(A(ω))表示,其中d1/8:Ω1/8→RK(K表示离散化视差值的个数),conv3×3(.)表示具有大小为3×3的滤波器的卷积层。然后用以下公式计算低分辨率视差图
其中softmax(d1/8(ω)[k])是d1/8第k个输出的Softmax结果,而视差(K)保存k的视差值。考虑到这些低分辨率视差图产生的模糊结果,我们遵循Godard等人[14]提出的多尺度策略。如图2所示,来自(4)的低分辨率图是多尺度解码器的第一步,它包括三个附加级的上卷积运算符(即,最近的上采样+卷积),其从ResNet编码器接收针对各个分辨率的跳过连接。已知编码层和相关联的解码层之间的这些跳越连接在最终深度输出中保留高级信息。在每个分辨率下,我们形成一个新的DDV,用于计算该特定分辨率下的视差图。分辨率为原始分辨率的(1/8)、(1/4)、(1/2)和(1/1),分别由σ(d1/8)、σ(d1/4)、σ(d1/2)和σ(d1/1)表示。
我们的模型的另一个重要部分是姿态估计器[62],它获取在两个不同时间步长记录的两幅图像,并返回相对变换,如下所示
其中,Tt→t‘表示在时间点t和t’记录的图像与pφ(.)之间的变换矩阵。姿态估计器由φ参数化的深度学习模型组成。
该训练基于源图像It‘和目标图像It之间的最小每像素光度重投影误差[14],使用在(5)中定义的相对姿势Tt→t’。像素级误差定义为
其中,pe(.)表示光度重建误差,S={1/8,1/4,1/2,1/1}是可用于视差图的分辨率的集合,在(4)中定义,t‘∈{t−1,t+1},表示我们使用在时间上相邻的两个帧作为其源帧[14],并且μ(S)是过滤掉固定点的二进制掩模(见下文等式10中的更多细节)[14]。(6)中的重新投影图像由下式定义
其中Proj(.)表示其中的投影深度Dt的2D坐标,<.>是采样运算符,σ(D(S)t)在(4)中定义。与[14]类似,所有图像的预计算内禀函数K都是相同的,我们使用双线性采样对源图像进行采样。
其中α=0.85.在[13]之后,我们使用边缘感知的平滑度正则化项来改进对象边界周围的预测:
其中,d∗t=dt/dt是[53]中的平均归一化逆深度,以阻止估计深度的收缩。(6)中固定点的自动掩蔽是必要的,因为在自监督单目训练的深度估计方法中,运动摄像机和静止场景的假设并不总是满足[14]。这种掩码会过滤掉序列中两个帧之间保持相同外观的像素,并通过定义为
其中[.]表示艾弗森括号。(10)中的二进制掩码μ屏蔽了(6)中的损失,以仅包括I(S)t‘→t的重新投影误差小于未扭曲图像It’的误差的像素,指示视觉对象相对于相机移动。最终损失被计算为(6)中的每像素最小重投影损失和(9)中的平滑项的加权和,
其中,λ是平滑正则化项的权重。姿势模型和深度模型都是使用该光度学重投影误差联合训练的。推理是通过在模型的输入端获取测试图像并生成高分辨率视差图σ(d1/1)来实现的。
我们使用Kitti 2015立体数据集[12]来训练和评估我们的方法。我们还使用在Kitti 2015上训练的模型在Make3D数据集[50]上评估了我们的方法。我们使用了Eigen等人的拆分和评估。[8],并在前人工作[62,14]的基础上,在训练前去除静态帧,只评估80m[8,11,13,14]的固定范围内的深度。与[14]一样,这产生了39,810个单目训练序列,由三个帧的序列组成,具有4,424个验证序列。作为我们的基准模型,我们使用Monoepth2[14],但我们用容量更大但需要更多内存的ResNet-101取代了原来的ResNet-18。为了解决这个内存问题,我们使用了就地激活批处理规格化[46],它融合了批处理规格化层和激活函数,以达到高达50%的内存节约。由于自监督单目训练的深度估计器不包含尺度信息,我们使用每幅图像的中值地面真实尺度[62,14]。遵循语义分割社区的体系结构最佳实践,我们在ResNet-101编码器的最后两个卷积块[61,59,5,6]中采用了戏剧性卷积[5],也称为扩张卷积,扩张率分别为2和4。这已经被证明通过增加模型的视野来显著改进多尺度编码[5]。定量分析的结果显示在SEC中。4.2.我们还提供了一项消融研究,比较了我们在SEC中的不同贡献的影响。4.4.使用验证集上的最小绝对相对误差度量来选择最终模型。
我们的系统是使用PyTorch库[40]训练的,模型在单个NVIDIA 2080Ti上训练了20个纪元。我们使用ADAM优化器[23]联合优化了我们的姿势和深度网络,β1=0.9,β2=0.999,学习率为1E−4。我们使用单一学习率在15个历元后衰减到LR=1E−5。与以前的论文[14]一样,我们的ResNet编码器使用预先训练的ImageNet[48]权重,因为这已被证明可以减少训练时间并提高预测深度的整体精度。所有模型都使用以下50%概率的数据增强进行训练:水平翻转、随机对比度(±0.2)、饱和度(±0.2)、色调抖动(±0.1)和亮度(±0.2)。重要的是,仅对输入到深度和姿势网络的图像执行增强,并且使用原始地面真实图像来计算(11)中的损失,其中平滑项被设置为λ=1e−3。图像分辨率被设置为640×192像素。
实验的结果如表1所示。当在Kitti 2015数据集12上比较我们的方法(表1中灰色的行)时,我们观察到我们的性能显著高于所有现有的自我监督单眼训练方法。与其他依赖更强监督信号的方法(例如,立体声监督和单声道+立体声监督)相比,我们的方法具有竞争力,产生的结果与当前技术水平的方法Monoepth2相当。如图3所示,我们的方法在更薄的结构上显示了比基线单层2更清晰的结果。一般来说,单声道和单声道+立体声)很难处理与树叶重叠的薄结构,而我们的方法能够准确地估计这些较小细节的深度。我们将这归因于膨胀的卷积和来自自我注意模块的上下文信息的结合。在车窗上可以看到,Monoepth2和我们的方法很难预测玻璃反射表面的深度。然而,这是在自监督方法中观察到的常见问题,因为它们不能准确地预测透明曲面的深度,因为对于此类材质/曲面,光度学重新投影/扭曲误差定义不明确。例如,在车窗的示例中,将光度学重新投影损失降至最低的正确深度实际上是距离汽车内部的深度,而不是将由地面真实激光雷达记录的玻璃深度。将我们的方法与Monoepth214的一些特定错误情况进行比较,可以看到我们的方法成功地估计了高反射车顶的深度(左),并成功地将街道标志从背景(右)中分离出来。这可以通过自我注意语境模块提供的额外语境和接受场以及离散视差体积提供的规律化来解释。
表1.量化结果在使用特征分裂的Kitti 2015[12]上将现有方法与我们自己的方法进行比较[8]。每个类别的最佳结果以粗体显示,并突出显示次佳结果。每种方法的监督级别列在列车栏目中:D-深度监督、D*-辅助深度监督、S-自我监督立体监督、M-自我监督单声道监督。显示结果时不进行任何后处理[13],除非用-+pp标记。如果GitHub上有较新的结果,则会用-†标记这些结果。非标准分辨率与方法名称一起记录。红色表示的指标:越低越好,蓝色表示的指标越高越好
图3.Kitti Eigen Split[8]测试集的定性结果。我们的模型在树木、标志和系桩等较细物体上表现得更好,也更擅长描绘困难的物体边界。
图4.Monodepth2失败案例。虽然训练的损失函数与单目训练的(M)Monodepth2[14]相同,但我们的方法成功地估计了反射车顶(左)和难以划定的街道标志(右)的深度。
表3给出了使用我们在KITTI2015上训练的模型对Make3D数据集[50]的定量结果。我们遵循与Monoepth2相同的测试方案[14],并使用[13]中概述的评估标准对方法进行比较。从表3可以看出,与之前同样依赖自我监督的方法相比,我们的方法产生了更好的结果。
表3.Make3D结果。所有自我监督的Mono(M)模型都使用中值比例。
表2显示了我们方法的消融研究,我们从基线单层214开始。然后,通过首先增加DDV(第2行)以及自我注意和DDV(第3行),我们观察到几乎所有评估指标都有稳步改善。然后我们将基本编码模型ResNet-18切换到ResNet-101,在第4行具有扩张卷积。第5行和第6行分别显示了DDV的添加,然后分别显示了自我注意和DDV,几乎所有评估指标的评估结果都有了稳步的改善措施。在较小的ResNet-18型上的DDV在绝对相对测量和平方相对测量方面比基线有了很大的改进。然而,ResNet-101在使用DDV时只比基线有很小的改善。自我注意机制显著提高了两种主干模型的近距离精度(δ<1.2 5)。在ResNet-101模型(第6行)中,自我注意模块的显著改善可能是因为扩张的卷曲产生了较大的接受野,这增加了可以通过自我注意操作计算的上下文信息量。
表2.消融研究。我们模型的不同版本的结果,并与我们的基线模型Monoepth214进行比较。我们评估了离散视差体积(DDV)、自我注意上下文模块和更大的网络架构的影响。所有模型均接受单眼自我监督训练。红色表示的指标:越低越好,蓝色表示的指标越高越好
虽然自注意模块和DDV一起提供了显著的数量和质量改进,但它们也提供了次要功能。注意图(等式3)从自我注意模块可以可视化地询问模型学习到的物体与视差之间的关系。注意图突出显示不连续的图像区域(图5),集中在前景、中景或背景区域。这些地图还倾向于突出显示远处的物体或静止的视觉物体,如汽车。此外,由于DDV使用离散化的面元对视差射线上的概率进行编码,因此可以通过测量概率分布的方差来计算每条射线的不确定性。图6显示了不确定性随距离增加的趋势,直到背景图像区域,这些区域被估计为几乎无限深到无限深,并且不确定性非常低。这在能够估计不确定性的监督模型中也观察到了[29]。高树叶和高阴影的区域(第二排)表现出非常高的不确定性,很可能是由于这些区域的对比度低和缺乏纹理细节。
图5.我们网络中的关注度图。由我们的方法产生的注意力地图的子集。蓝色表示注意区域。
图6.来自我们网络的不确定性离散视差体积允许我们计算像素级的深度不确定性。蓝色表示低不确定性区域,绿色/红色区域表示高不确定性/最高不确定性区域。
在这篇文章中,我们提出了一种方法,以解决学习预测准确的差异仅从单目视频的挑战。通过引入自我注意机制来改善模型可用的上下文信息,我们已经在Kitti 2015[12]数据集上实现了单目训练的自我监督深度估计的最新结果。此外,我们通过使用离散的视差体来规范模型的训练,这使得我们能够产生更健壮和更清晰的深度估计,并计算像素级的深度不确定性。在未来,我们计划研究在姿势模型中加入自我注意的好处,以及使用估计的不确定性进行离群值过滤和体积融合。