SENSE: a Shared Encoder Network for Scene-flow Estimation
我们引入了一个用于整体场景流估计的紧凑网络,称为SENSE,它在四个密切相关的任务中共享共同的编码器特征:光流估计、立体视差估计、遮挡估计和语义分割。我们的关键见解是共享特征使得网络更加紧凑,产生出更好的特征表示,并且能够更好地利用这些任务之间的交互来处理部分标记的数据。通过共享编码器,我们可以在训练时为不同的任务灵活地添加解码器。这种模块化设计在推理时导致了一个紧凑而高效的模型。利用这些任务之间的相互作用,我们可以在监督损失之外引入蒸馏和自监督损失,这可以更好地处理部分标记的真实数据。SENSE在多个光流基准上取得了先进的结果,并且运行速度与专门为光流设计的网络一样快。它还在立体和场景流方面与最先进的技术进行了比较,同时消耗了更少的内存。
场景流估计旨在从两个或多个相机拍摄的图像序列中恢复场景的三维结构(视差)和运动[ 52 ]。它推广了单目图像序列光流估计和立体图像对视差预测的经典问题。在场景流估计方面取得了稳定和令人印象深刻的进展,KITTI基准测试结果[ 39 ]证明了这一点。先进的场景流方法显著优于最佳视差(立体)和光流方法,证明了立体视频序列中额外信息的好处。然而,性能最好的场景流方法[ 5、54]基于能量最小化框架[ 18 ],因此在实时应用中计算开销较大,例如:3D动作捕捉[ 11 ]和自动驾驶[ 27 ]。
最近,一系列基于卷积神经网络( Convolutional Neural Network,CNN )的方法被开发用于立体和光流的子问题。这些方法达到了最先进的性能并实时运行。然而,虽然立体和流密切相关,但立体和流的顶级网络采用截然不同的架构。进一步地,现有的场景流网络将立体和光流的子网络叠加在一起[ 37、25],没有充分挖掘这两个紧耦合问题的结构。
由于立体匹配和流匹配都依赖于像素特征来建立对应关系,因此相同的特征是否会对这两个或多个相关任务起作用?为了回答这个问题,我们采用模块化的方法,构建了一个用于场景流估计的共享编码器网络( Shared Encoder Network for Scene-flow Estimation,SENSE )。具体来说,我们在四个密切相关的任务之间共享一个特征编码器:光流、立体匹配、遮挡和语义分割。共享特征使得网络变得紧凑,也通过多任务学习导致更好的特征表示。
紧密相关任务之间的交互进一步压缩了网络训练,改善了场景流估计中真值标注稀疏的问题。与许多其他视觉任务不同,对于现实世界的数据,收集真实的光流和立体匹配是天生的困难。训练需要大量数据的深度卷积神经网络往往依赖于合成数据[ 7,10,37],缺乏真实世界中普遍存在的精细细节和多样性。为了缩小领域差距,需要对真实世界数据进行微调,但标注真实世界数据的稀缺性一直是学习场景流CNN模型的严重瓶颈。
为了解决数据稀缺问题,我们通过在监督损失中加入蒸馏和自监督损失项,为SENSE引入了半监督损失。首先,没有一个现有的数据集为我们处理的所有四个任务提供真实标注。例如,KITTI基准没有用于遮挡和语义分割的真值标注。因此,我们使用其他标注数据为真值标注缺失的任务单独训练模型,并使用预训练的模型通过蒸馏损失在真实数据上"监督"我们的网络[ 17 ]。其次,我们使用自监督损失项,根据光流或立体匹配来鼓励相应的可见像素具有相似的像素值和语义类。自监督损失项将四个任务紧紧地耦合在一起,对于没有地面真值的区域,如天空区域的改进至关重要。
在合成数据集和真实数据集上的实验表明,SENSE在保持与光流专用网络相同的运行效率的同时,实现了光流的SOTA。它还在视差和场景流估计方面与先进水平进行了比较,同时具有更小的内存占用。消融研究证实了我们的设计选择的实用性,并表明我们提出的蒸馏和自监督损失项有助于缓解部分标记数据的问题。
综上所述,我们做出以下贡献:
1、我们引入了一种用于整体场景理解的模块化网络设计,称为SENSE,以集成光流、立体、遮挡和语义分割。
2、SENSE在这4个任务中共享一个编码器,使网络变得紧凑,并通过多任务学习获得更好的特征表示。
3、SENSE通过半监督的方式利用任务间的交互,可以更好地处理部分标记数据;它在没有地面真值注释的区域导致定性更好的结果。
4、SENSE实现了最先进的流结果,同时运行速度与专门的流网络一样快。它在立体匹配和场景流方面与最先进的技术相比相当出色,但消耗的内存要少得多。
对整体场景理解的全面调查超出了我们的范围,我们回顾了最相关的工作。
场景流估计的能量最小化。场景流最早由Vedula等人[ 52 ]提出,是指从多个标定好的摄像机中观察到的场景中所有点的稠密三维运动。一些经典的方法采用了能量最小化方法,如流和立体匹配的联合恢复[ 20 ]、高效的对立体匹配和流的解耦[ 56 ]。相对于光流和立体,场景流的解空间维度更高,更具挑战性。Vogel等[ 53 ]通过假设超像素上分段刚性移动平面的场景流来减少解空间。他们的工作首先从整体的角度来处理场景流,并在KITTI基准测试中大大优于现有的立体和光流方法[ 12 ]。
联合场景理解。运动和分割是鸡和蛋的问题:知道一个简化了另一个。虽然分层方法长期以来被认为是解决这两个问题的一个巧妙的方案[ 55 ],但现有的解决方案往往会陷入局部极小[ 47 ]。在运动分割文献中,大多数方法从估计光流作为输入出发,通过联合估计(或隐或显地)相机运动、物体运动和场景外观来分割场景。[ 6、51]。Lv等[ 35 ]研究表明,运动可以直接从两幅图像中分割出来,不需要先计算光流。Taylor等[ 50 ]证明遮挡也可以是一种有用的线索。
利用语义分割的研究进展,塞维利亚等[ 46 ]表明语义信息足以初始化分层分割,从而改善光流。Bai等[ 2 ]使用实例级分割来处理少量的交通参与者。Hur和Roth [ 22 ]联合估计光流和时间一致性语义分割,在两个任务上都获得了收益。对象场景流算法[ 39 ]将场景分割成相互独立的运动区域,并强制每个区域内的超像素具有相似的三维运动。模型中的"物体"被假设为平面,并通过自底向上的运动估计进行初始化。
Behl等[ 5 ]、Ren等[ 42 ]、Ma等[ 36 ]的研究均表明实例分割有助于自主场景下的场景流估计。虽然假设每个个体实例的刚性运动对汽车很有效,但这种假设在一般的场景中往往会失败,比如Sintel,在这种情况下,我们的整体方法达到了先进的性能。
性能最好的基于能量的方法对于实时应用来说计算开销太大。这里我们提出了一个紧凑的CNN模型来对几何(视差)、运动(流)和语义进行整体推理,其运行速度远远快于基于能量的方法。
光流和视差的端到端学习。最近,基于CNN的方法在光流和视差两个场景流估计的子问题上取得了显著的进展。Dosovitskiy等人[ 10 ]首先针对光流引入了两个CNN模型FlowNetS和FlowNetC,实现了光流和视差估计的范式转换。Ilg等人[ 24 ]提出了一些技术改进,例如数据集调度和将基本模型堆叠成一个大模型,即FlowNet2。Flow Net2具有接近实时的性能,并获得了与手工设计方法相当的结果。
Ilg等[ 25 ]将流、视差网络叠加在一起,用于场景流估计的联合任务。然而,流网络和视差网络之间没有共享信息。Ranjan和Black [ 41 ]介绍了一种空间金字塔网络,其性能与Flow Net C相当,但由于使用了金字塔和翘曲两个经典原则,参数减少了100多倍。Sun等[ 48 ]开发了一个紧凑但有效的网络,称为PWC - Net,它经常使用三个原则来构建网络:可学习的特征金字塔、扭曲操作和成本体积处理。PWC - Net在两个主要的光流基准上获得了最先进的性能。
FlowNet的工作也启发了新的CNN模型用于立体估计[ 30、8、60]。Kendall等人[ 30 ]将特征拼接构建代价体,然后进行3D卷积。3D卷积在立体匹配中变得常用,但在速度和内存方面都很昂贵。Chang和Chen [ 8 ]引入金字塔池化模块,利用上下文信息在模糊区域建立对应关系。Yang等[ 60 ]结合语义线索处理无纹理区域。Yin等人将光流和视差估计问题转化为概率分布匹配问题[ 61 ]来提供不确定性估计。他们没有像我们一样利用两个任务的共享编码器。
现有的场景流网络[ 25、36、38]将独立的网络进行视差和流的叠加。我们感兴趣的是利用多个相关任务之间的交互来设计一个紧凑有效的网络来进行整体场景理解。我们的整体场景流网络在推理速度更快、消耗的内存更少的同时,在与当前技术比较方面表现良好。特别地,我们展示了在不同任务之间共享特征编码器的好处,例如流和视差。
视频的自监督学习。有监督学习通常使用合成数据,因为对于真实视频很难获得真实的光流和视差。最近提出的自监督学习方法通过最小化数据匹配代价[ 65 ]或插值误差[ 29、32]来学习场景流。然而,自监督方法尚未达到监督方法的性能。
我们遵循KITTI场景流基准的问题设置[ 39 ],如图2所示。输入是两个时间的立体图像对,其中上标中的第一个数字表示时间步长,第二个符号表示左或右相机。为了节省篇幅,如果上下文清晰,我们将省略上标。我们希望在第一帧和第二帧分别估计从第一张左图像到第二张左图像的光流和从左图像到右图像的视差和。我们还考虑了连续两帧图像和两组立体图像和之间的遮挡,以及参考(左一)图像的语义分割。这些额外的输出引入了不同任务之间的交互,在网络训练中施加了更多的约束。进一步,我们假设在这些紧密相关的任务之间共享特征会得到更好的特征表示。
我们将在3.1节中首先介绍我们的模块化网络设计,它在不同的任务之间共享一个编码器,并支持训练过程中的灵活配置。然后,我们将在3.2节中解释我们的半监督损失函数,它可以使用部分标记数据进行学习。
为了实现不同任务之间的特征共享,并允许在训练过程中灵活配置,我们以模块化的方式设计网络。具体来说,我们在PWC - Net [ 48 ]的基础上构建网络,这是一个用于光流估计的紧凑网络。PWC - Net由编码器和解码器组成,其中编码器接收输入图像并提取网络不同层次的特征。解码器是利用光流的领域知识专门设计的。编码器-解码器结构允许我们以模块化的方式设计一个网络,单个共享编码器和多个解码器用于不同的任务。
共享编码器。然而,PWC - Net的原始编码器由于容量较小,并不能很好地适应多任务。PWC - Net的80 %以上的参数集中在解码器中,在每个金字塔层级使用DenseNet [ 19 ]块。编码器由普通卷积层组成,使用不到20 %的参数。虽然编码器对光流足够,但对视差估计的效果不够好。为了使编码器适用于不同的任务,我们做了如下修改。首先,我们将特征金字塔层级数从6个减少到5个,使得参数数量减少了近50 %。它还允许我们借用广泛使用的5级ResNet - like编码器架构[ 8、16],该架构已被证明在多种视觉任务中有效。具体来说,我们用残差块替换普通CNN层[ 16 ],并在编码器和解码器中添加BN层经过这些修改,新模型的参数略少,但给出了更好的视差估计结果(表)和更好的流(表1 )。
视差解码器。接下来我们阐述了如何将PWC - Net用于两幅立体图像之间的视差估计。视差是光流计算的一种特殊情况,其对应关系位于一条水平线上。因此,我们只需要为视差构建1D代价体,而原始PWC - Net的解码器为光流构建2D代价体。具体来说,对于光流,将第一张特征图中p = ( x , y)处的特征与扭曲的第二张特征图中处的特征进行比较。对于视差,我们只需要通过比较左特征图中的p和右特征图中的来寻找对应关系。我们使用k = 4进行光流和视差估计。在整个特征金字塔中,我们的视差解码器采用与PWC - Net相同的变形和细化过程。
图2。网络设计的例证。虚线箭头表示共享权重。我们有一个编码器用于所有输入图像和所有不同的任务,并为不同的任务保留不同的解码器。右边从上到下依次为:光流、前向遮挡掩膜、语义分割、视差、视差遮挡。PPM (金字塔池化模块)不利于光流估计。但得益于模块化的网络设计,我们可以灵活地配置网络。
为了进一步提高视差估计精度,我们考察了更多的设计选择。首先,我们使用金字塔池化模块( Pyramid Pooling Module,PPM ) [ 64 ]来跨多个层次聚合输入图像的学习特征。其次,解码器输出一个四分之一输入分辨率大小的视差图,其往往具有模糊的视差边界。作为弥补,我们增加了一个简单的沙漏模块,广泛用于视差估计[ 8 ]。它需要两次上采样视差、第一幅图像的特征图和第二幅图像的扭曲特征图来预测添加到上采样视差中的残差视差。PPM和沙漏修正均导致视差估计的显著改善。但它们对光流估计没有帮助,说明原始的PWC - Net是针对光流设计的。模块化设计使我们可以灵活地配置工作于不同任务的网络,如图2所示。表? ?总结了我们的设计选择对视差估计的影响。
用于分割的解码器。为了给网络训练引入更多的约束,我们还考虑了语义分割。它鼓励编码器学习一些语义信息,这可能有助于光流和视差估计。对于语义分割解码器,我们使用UPerNet [ 58 ],因为它的简单性。
遮挡估计。对于遮挡预测,我们在光流或视差解码器中添加同级分支来执行像素级二分类,其中1表示完全遮挡。增加这些额外的模块可以实现整体场景理解,这有助于我们在共享编码器中归纳出更好的特征表示,并使用额外的监督信号进行网络训练来处理部分标记数据,这在3.2节中讨论。关键的是,对于场景流估计,共享编码器导致了更紧凑和高效的模型。对于光流和视差估计,我们可以在训练时根据需要组合模块,而不影响推理时间。对于场景流估计,可以根据配置选择使用额外的模块。见4.2节的解释。
没有完全标记的数据集可以直接训练我们的整体场景流网络。例如,KITTI没有地面真实遮挡掩码。即使是光流和视差地面真值,由于数据抓取标注困难,KITTI数据中只有约19 %的像素有标注。合成的SceneFlow数据集[ 38 ]没有用于语义分割的基本真值。为了解决这些问题,我们引入了半监督损失函数,它由监督、蒸馏和自监督损失项组成。
图3 在监督损失中加入语义分割(中间)和遮挡(右)的蒸馏损失的影响。
监督损失。当相应的真值标注可用时,我们定义监督损失为
其中和是估计光流及其对应遮挡的损失项。和为估计视差及其对应遮挡的损失项。跨多个金字塔层级的定义为:
其中,表示金字塔层i的光流和视差权重,表示金字塔层的数量,是一个损失函数,衡量像素p处真实光流和估计光流之间的相似性。以类似的方式定义视差和遮挡损失函数、、和。我们分别使用L2和smooth l1 [ 13、8]损失进行光流和视差估计。对于遮挡,在有GT标注(例如,在FlyingThings3D上)的情况下,使用二元交叉熵损失。对于语义分割,KITTI2015只提供了左影像的真值标注。我们通过实验发现只使用下面引入的蒸馏损失可以得到更好的精度。
图4。自我监督损失的有效性说明。从上到下:输入图像、未使用自监督损失的视差估计和使用自监督损失的视差估计。可以看出,自监督损失极大地减少了天空区域的伪影。
蒸馏损失。对于遮挡估计和语义分割任务,GT标注并不总是可用的。然而,在网络训练中,它们是重要的。例如,在KITTI上,监督损失只能在稀疏标注的像素上计算。对遮挡估计增加额外的监督,有助于网络将光流和视差估计外推到真实标注缺失的区域,得到视觉上有吸引力的结果。
我们发现预训练模型在合成数据上提供的遮挡估计是相当好的,如图3所示。作为一种软监督,我们鼓励网络在训练过程中的遮挡估计与预训练阶段所学内容没有太大偏差。因此,我们简单地将预训练网络的估计作为伪真实值和训练过程中的平滑l1损失函数,在和等多个金字塔层次上计算。使用蒸馏损失进行遮挡的额外监督有助于减少视差估计中的伪影,如图3所示。
对于语义分割,我们使用文献[ 17 ]中提出的蒸馏损失公式。具体地,单个像素p (为简便起见,略)的语义分割蒸馏损失定义为
其中C是分割类别的数量。和来自一个更强大的教师分割模型,其中是第i个类别在softmax层之前的输出,也称为logit。是第i个类别的'soften'后验概率,由超参数T控制[ 17 ]。我们实证发现T = 1在验证集上效果很好。是我们模型的估计后验概率。蒸馏被聚合在训练图像中的所有像素上。
自监督损失。为了进一步约束网络训练,我们还定义了自监督损失。光流和视差被定义为两幅输入图像之间的对应关系。因此,我们可以比较由光流或视差定义的两个对应的像素作为网络训练的监督。
最直接的度量是比较两帧中可见的两个对应像素之间的值,称为光度一致性。在单个金字塔层级中,定义为:
其中是可微的翘曲函数,,⊙表示逐元素相乘再求和,当上下文明确时我们省略了一些上标。该损失项通过使用遮挡图调制一致性损失,并将遮挡与光流和立体匹配紧耦合来解释遮挡。
由于光度一致性对光照变化不具有鲁棒性,我们进一步引入语义一致性,鼓励对应的两个像素具有相似的语义分割后验概率。具体来说,这种语义一致性被定义为
其中表示来自于公式(3)中使用的教师分割网络的后验概率图像。与原始像素值不同,分割后验概率对光照变化更加鲁棒。
最后,我们考虑结构相似性损失
式中:⊗仅表示逐元素乘法。是一个可微函数,输出单一的标量值来衡量两个输入图像之间的结构相似性[ 63 ]。注意,对于变形图像中的被遮挡像素,它们的值被左/第一图像中相同位置的像素值代替。
通过将和设置为所有,式(4),(5)存在极小化方程的平凡解。因此,我们加入正则化项:
虽然在之前的工作[ 28、14]中已经研究了自监督的光度和结构相似性损失项,但是我们的定义与它们的不同之处在于我们对遮挡进行建模。一方面,我们避免在遮挡区域定义损失项。另一方面,这些自监督项为遮挡估计也提供了调整。因此,我们的网络将这四个紧密相关的任务紧密地耦合在一起。
我们最终的半监督损失由监督、蒸馏和自监督损失项组成。更多细节可参见补充材料。
立体匹配和光流的预训练。我们使用合成的Scene Flow数据集[ 37 ],包括FlyingThings3D、Monkaa和Driver进行预训练。3个数据集都包含光流和视差的GT。遮挡标签仅在FlyingThings3D中可用。在训练过程中,我们从所有三个数据集中均匀采样图像,并在真值可用时计算遮挡损失。在训练过程中,我们同时使用颜色抖动进行光流和视差训练。此外,我们对立体训练图像使用随机裁剪和垂直翻转。裁剪大小为256 × 512。对于光流训练图像,我们进行了大量的数据增强,包括随机裁剪、平移、旋转、缩放、压缩以及水平和垂直翻转,其中裁剪大小为384 × 640。使用Adam优化器[ 31 ]对网络进行100个历元的批量大小为8的训练。我们使用同步的Batch Normalization [ 58 ]来保证在使用多个GPU时有足够的训练样本来估计Batch Normalization层的统计量。初始学习率为0.001,经过70个历元后学习率下降了10倍。
微调。对于Sintel,我们使用与[ 48 ]中类似的学习率调度。在KITTI 2012 [ 12 ]和KITTI 2015 [ 40 ]上,我们使用更长的学习率调度,其中模型训练1.5 K个历元,初始学习率为0.001。我们用一个0.0002学习率执行另一个1K次历元训练。我们使用剪裁大小为320 × 768的作为视差和光流的训练图像,以及batch_size为8。由于篇幅有限,在补充材料中提供了更多的训练细节。
表1。在MPI Sintel光流数据集上的平均EPE结果。' -ft '表示在MPI Sintel训练集上进行微调,括号中的数字为方法微调后数据上的结果。
训练语义分割。我们联合训练整个网络的所有部分,包括预训练的光流和视差的编码器和解码器,以及随机初始化的分割解码器。我们通过实验发现使用随机初始化的分段解码器可以获得更好的性能。
对于分割蒸馏损失和语义一致性损失计算,我们首先训练教师分割模型。我们使用在CityScapes [ 9 ]上预训练的ResNet101 - UPerNet [ 58 ]使用其仅有精细标注的训练集,在验证集上达到了75.4 %的IoU。我们在KITTI 2015 [ 1 ]上对模型进行微调,其中分割标注与CityScapes的注释方式一致。
表2 .在KITTI光流数据集上的结果。" -ft "表示在KITTI训练集上进行微调,括号中的数字为方法微调后数据上的结果。
表3 .在KITTI立体匹配数据集上的实验结果(测试集)。
表4 .在KITTI2015场景流数据集上的实验结果。基于CNN的方法需要处理D2的精化,其中N和R分别表示基于网络和基于刚性的精化。
光流结果。表1给出了MPI Sintel基准数据集上的光流估计结果。我们的方法在没有或有微调的情况下优于基于CNN的方法。在更具真实感(最终)的测试集,涉及更多的渲染细节,如光照变化,阴影,运动模糊等,我们的方法大大优于基于CNN和传统的手工设计的方法。
表2给出了KITTI2012和KITTI2015的结果。我们的方法在KITTI 2012上显著优于手工设计的方法和基于卷积神经网络的方法。在KITTI 2015上,我们的模型在没有预训练的情况下获得了比基于CNN的方法更低的错误率。经过微调后,它优于所有其他方法。
我们注意到,PWC-Net [ 49 ]的一个改进版本中报告了更好的光流结果,它使用Flying Chairs后面的FlyingThings3D进行预训练。它还使用了更长的学习率时间表进行微调,因此结果与我们的结果不具有直接可比性。
视差结果。在视差估计方面,SENSE明显优于DispNetC [ 37 ]和GC - Net [ 30 ]等基于CNN的方法,并与PSMNet [ 8 ]、SegStereo [ 60 ]和FlowNet3 [ 25 ]等最先进的方法取得了相当的精度。值得注意的是,我们的方法在KITTI2015上的所有和非遮挡区域的前景区域上都表现最好。
场景流结果。表4展示了KITTI 2015上的场景流结果。与Flow Net3 [ 25 ]相比,SENSE在基于CNN的场景流方法中表现最好。与ISF [ 5 ]相比,SENSE速度提高了2K倍,并且能够处理一般的非刚性场景运动。
为了去除第2帧视差扭曲操作引入的伪影,我们使用了一个带跳跃连接的编码器-解码器结构的精化网络。它需要,,和生成一个残差,该残差被添加到扭曲视差中。从我们的整体输出来看,我们可以使用刚性细化步骤来细化背景场景流。我们首先根据语义分割输出确定静态刚性区域。然后,通过高斯-牛顿算法最小化光流和视差图像之间的几何一致性来计算自运动流。最后,我们使用参考帧和自运动的视差来计算扭曲的场景流,以代替仅在刚性背景区域的原始场景流。这一步以最小的成本额外产生相机运动和更好的场景流。细化步骤详见补充材料。
运行时间。SENSE是一个高效的模型。SENSE计算两幅大小为436 × 1024的图像之间的光流需要0.03 s。对于视差,SENSE比PSMNet和SegStereo快一个数量级,比FlowNet3略快。对于使用KITTI图像的场景流,SENSE需要0.15 s生成一个光流和两个视差图。附加翘曲细化网络耗时0.01 s,刚度细化耗时0.15 s。
模型大小和内存。SENSE体积较小。光流模型的参数只有8.8 M,视差模型的参数只有8.3 M。共享编码器的场景流模型具有13.4 M的参数。相比之下,FlowNet3有一个流模型( 117M )和一个视差模型( 117M ),大了20倍。SENSE还具有较低的GPU内存占用。FlowNet3需要7.4 GB内存,而SENSE只需要1.5 GB内存。虽然PSMNet的参数较少( 5.1M ),但由于3D卷积,PSMNet需要4.2 GB的内存。
不同任务的表现。我们报告了使用不同编码器和解码器组合的不同任务的结果。我们的模型使用KITTI 2015的160张图像进行训练,其中一半的学习率计划。结果报告在表5的其余40幅图像上。可以看出,共享编码器模型比单独训练的模型表现更好。
半监督损失。为了研究蒸馏和自监督损失项的影响,我们使用KITTI 2012的所有图像和KITTI 2015的160张图像进行消融研究,采用一半的全学习率计划进行训练。KITTI2015的其余40个用于测试。我们仅使用稀疏流和视差标注对基线模型进行微调。表6为定量比较,图4为定性比较。
关于蒸馏损失,分割和遮挡蒸馏损失项都对视差和光流估计有用。然而,蒸馏损失不利于减少天空区域的伪影。因此,自监督损失是必不可少的,如图4所示,尽管定量的自监督损失不如蒸馏损失有效。最后,综合所有的损失项得到最好的光流和视差精度。我们还在KITTI上测试了使用半监督损失训练的SENSE,如表2、表3和表4所示。可以看出,在KITTI 2015上提高了视差和光流精度,在KITTI 2012上也得到了更好的视差。
我们为整体场景理解中的4个密切相关的任务提出了一个紧凑的网络:在这些任务之间共享一个编码器,不仅使网络紧凑,而且通过利用这些任务之间的交互来提高性能。它还允许我们引入蒸馏和自我监督损失来处理部分标记数据。我们的整体网络具有与光流专用网络相似的精度和运行时间。它与先进的视差和场景流方法相比表现良好,同时具有更快的速度和更高的内存效率。我们的工作展示了协同紧密相关的任务对于整体场景理解的好处,我们希望这些见解将有助于这个方向的新研究。