非对称标注的实时联合语义分割和深度估计

标题:Real-Time Joint Semantic Segmentation and Depth Estimation Using Asymmetric Annotations

原文:https://arxiv.org/abs/1809.04766

开源:

https://github.com/drsleep/multi-task-refinenet  (185 Stars,官方实现)

https://github.com/hankkkwu/multi-task-learning (非官方实现)

摘要:即使使用通用GPU卡,在机器人中部署深度学习模型作为感官信息提取器也是一项艰巨的任务。在这里,我们解决了其中三个最突出的障碍,即,i)调整单个模型以同时执行多个任务(在这项工作中,我们认为深度估计和语义分割对于获取场景的几何和语义理解至关重要),而ii)实时执行,以及iii)使用不对称数据集,其中每个模态的标注数量不均匀。为了克服前两个问题,我们调整了最近提出的实时语义分割网络,进行了更改以进一步减少浮点操作的数量。为了解决第三个问题,我们采用了一种基于硬知识蒸馏的简单解决方案,假设可以访问强大的“教师”网络。我们展示了如何轻松地扩展我们的系统,以同时处理更多的任务和数据集,使用单个模型在室内和室外执行深度估计和分割。定量上,我们实现的结果相当于(或优于)当前最先进的方法,一次前向通过仅花费13ms,640x480输入上6.5GFLOPs。这种效率允许我们将网络的原始预测直接合并到SemanticFusion框架中,用于场景的密集3D语义重建。

I    引言

随着深度学习显示出令人印象深刻的结果的任务数量在范围和多样性上不断增加,实现这种结果的模型数量也在类似地增加,这使得从业者更难部署需要同时执行多个任务的复杂系统。对于一些密切相关的任务,这样的部署并不构成重大障碍,因为除了结构相似性之外,这些任务往往共享相同的数据集,例如图像分类、对象检测和语义分割。另一方面,像分割和深度估计这样的任务很少(完全)共享同一个数据集;例如,NYUD数据集[2],[3]包括用于深度估计的大量标注,但仅包含少量分割的标注。只有在每个任务存在真值标注的情况下,才可以通过简单地更新每个任务的参数来容易地解决这个问题。不幸的是,由于不平衡和有偏向(biased)的梯度更新,这通常会导致次优结果。我们注意到,虽然不清楚如何在最常见的情况下处理这种情况,但在本文中,我们假设我们可以访问一个大型且强大的模型,该模型可以进行信息预测以获取缺失的标签。对于单独考虑的每一个任务,这个假设通常是有效的,我们利用它来预测缺失的分割掩码。

出现的另一个问题是在机器人和自动系统的背景下实时提取感官信息的必要性。虽然已经有许多成功的方法来加速单个任务[4]–[6],但几乎没有任何关于实时同时执行多个任务的现有工作。在这里,我们展示了如何实时执行两项任务,即深度估计和语义分割,只需很少的架构更改,而无需任何复杂的管道。

我们选择任务的动机是观察到,对于所有类型的机器人应用来说,机器人(代理)了解其周围环境的语义并感知到场景中表面的距离非常重要。与大型模型相比,所提出的方法简单,并取得了有竞争力的结果。此外,我们认为,没有什么可以禁止从业者和研究人员将我们的方法用于更多的任务,这反过来将导致在现实世界应用中更好地利用深度学习模型。为了证实这一说法,我们进行了额外的实验,除了深度和分割外,还预测了表面法线。此外,我们成功地训练了能够在室内和室外环境中一起执行深度估计和语义分割的单个模型。在另一个案例研究中,我们证明了我们的联合网络(分割和深度)的原始输出可以直接用于SemanticFusion框架[1],以实时估计场景的密集语义3D重建。

在结束我们的介绍时,我们再次强调,我们的结果表明,当一个小型网络可以实现相同的性能时,没有必要不加批判地部署多个昂贵的模型——一个比两个更好!

II    相关工作

我们的工作与几个主题密切相关。其中包括多任务学习、语义分割、深度估计和知识蒸馏。

根据经典的多任务学习范式,迫使单个模型同时执行多个相关任务可以通过对学习的表示施加归纳偏置来提高泛化能力[7],[8]。这种方法假设所有任务在学习任务特定参数之前使用共享表示。计算机视觉领域的多项工作一直遵循这一策略;特别是,Eigen&Fergus[9]训练了一个单一的架构(但具有不同的副本)来预测深度、表面法线和语义分割,Kokkinos[10]提出了一个通用网络来处理7个不同的视觉任务,Dvornik等人[11]发现进行联合语义分割和对象检测是有益的,而Kendall等人[12]学习了最佳权重,以同时执行实例分割、语义分割和深度估计。Chen等人[13]使用ResNet-50[14]主干构建了一个单一网络,执行联合语义分割、深度估计和对象检测。为了缓解标注不平衡的问题,Kokkinos[10]选择累积每个任务的梯度,直到每个任务看到特定数量的样本(to accumulate the gradients for each task until a certain number of examples per task is seen),而Dvornik等人[11]只是在看到该模态的至少一个样本之前,保持没有真值的分支完整(resorted to keeping the branch with no ground truth available intact until at least one example of that modality is seen)。

我们注意到,这些方法都没有为每个单独的任务使用现有的模型,除了BlitzNet[11]之外,其他方法都没有实现实时性能。相反,我们展示了如何利用大型预训练模型来获得更好的结果,以及如何实时推理。

语义分割是每像素标签分类的一项任务,近年来的大多数方法都围绕着将图像分类网络改编为能够对不同大小的输入进行操作的完全卷积网络的想法[15]–[17]。具有良好性能的此类网络的实时使用是一个非常重要的问题,目前可用的方法很少[6],[18]–[20]。我们选择了最近提出的基于MobileNet-v2[21]的轻量级RefineNet[20]作为我们的基线架构,因为它在标准基准数据集PASCAL VOC[22]上实时显示出稳定的性能,同时参数少于4M。

深度估计是另一项每像素任务,其目标是确定每个像素离观察者的距离。传统上,使用基于SLAM的方法进行基于图像的深度重建[23]–[25]。然而,最近的机器学习方法已经取得了令人印象深刻的结果,其中CNN已经成功地用于使用监督学习[9]、[26]–[28]、无监督学习[29]、[30]和半监督学习[31]从单个RGB图像预测深度图。Eigen&Fergus[9]首先从单个图像中预测包括深度在内的多个量。Dharmasiri等人[32]证明,与使用三个单独的网络相比,预测深度、表面法线和表面曲率形式的相关结构信息可提高所有三个任务的性能。最近,Qi等人[33]发现,将几何结构直接编码为网络架构的一部分是有益的,以便同时执行深度估计和表面法线估计。我们的方法在两个方面与之前的工作有根本不同。首先,我们的网络在每个任务上都表现出实时性能。其次,我们演示了如何将不对称和不均匀的(asymmetric and uneven)真值标注有效地纳入训练机制。此外,应该注意的是,尽管使用了实时运行的较小模型,我们仍然在定量上优于这些方法。

最后,我们简要介绍了知识蒸馏方法[34]–[37],该方法基于拥有一个大型预训练的教师(专家)网络(或网络集合)的想法,并直接使用其logits或预测作为小网络的指导信号以及原始标签。之前的几项工作依赖于知识蒸馏来获取缺失的数据[38],或者作为正则化项[39],[40]。虽然这些与我们的工作相关,但我们在几个维度上有所不同:最值得注意的是,Zamir等人[38]需要不同任务的单独网络副本,而Hoffman等人[39]和Li&Hoiem[40]只考虑单个任务学习(分别是对象检测和图像分类)。

III    方法

虽然我们主要讨论只有两项任务的情况,但相同的机制适用于更多的任务,如第V-A节所示。

图1–联合语义分割和深度估计的通用网络结构。每个任务只有两个特定的参数化层,而其他的都是共享的

A    主干网络

如前一节所述,我们采用了最近提出的基于MobileNet-v2分类网络[21]的轻量级精简网架构[20]。架构通过附加几个简单的上下文块来扩展分类器,上下文块称为链式残差池化(CRP)[41],由一系列5×5最大池化和1×1卷积组成(图1)。

尽管原始结构已经实现了实时性能并具有少量参数,但对于深度估计和语义分割(40个类)的联合任务,它需要在640×480大小的输入上使用超过14GFLOPs,这可能会阻碍其在可用资源较少的移动平台上直接部署。我们发现,最后一个CRP块负责一半以上的FLOPs,由于它处理高分辨率特征图(原始分辨率的1/4)。因此,为了减少其影响,我们将最后一个CRP块中的1×1卷积替换为其depthwise equivalent(即,分组卷积,组数等于输入通道数)[42]。这样做可以将操作数量减少一半以上,降至仅6.5 GFLOPs。

B    联合语义分割和深度估计

在一般情况下,为了同时在所有任务上实现最佳性能,决定从哪里将主干网络分叉到不同任务上是非常重要(non-trivial)的。为了简单起见,我们在最后一个CRP块之后进行分叉,并为每个任务附加两个额外的卷积层(一个depthwise 1×1,一个plain 3×3)(图1)。

如果将分叉之前的网络输出表示为,其中是参数为的主干网络,而是输入RGB图像,则深度和分割预测可以表示为和,其中和分别是具有参数和的分割和深度估计分支。使用标准softmax交叉熵损失进行分割,使用inverse Huber损失进行深度估计[27]。总损失(方程(1))包含一个额外的缩放参数,为简单起见,我们将其设置为0.5:

其中和相应地表示真值分割掩模和深度图;分割损失中的是像素处类的概率值。

C    专家标注来解决非对称标签问题 Expert Labeling for Asymmetric Annotations

正如人们所期望的那样,不可能为每个图像提供所有的真值信息。很自然,这提出了一个问题,即如何处理一组图像,其中一些图像具有一种模态的标注,但没有另一种模态。假设每个图像总是存在一个模态,则这将集合S划分为两个不相交的集合和,使得,其中和分别表示两个任务,集合由没有第二个任务的标注的图像组成,而包括具有两组标注的图像。

简单地说,没有什么可以阻止我们继续使用等式(1),在这种情况下,只有具有可用标签的分支的权重将被更新(only the weights of the branch with available labels will be updated)。正如我们在实验中所展示的,这会导致有偏向的(biased)梯度,从而导致次优解。相反,强调同时更新两个分支的需要,我们依靠专家模型为我们提供有噪声的估计,以代替缺失的标签。

更正式地说,如果我们将第二个任务的专家模型表示为,那么它在集合上的预测可以用作合成真值数据,我们可以先用这个数据对联合模型做预训练,然后用原始集合做最终的微调,是有两个任务的现成真值数据的。在这里,我们利用专家网络预测的标签而不是逻辑,因为存储一组大型三维浮点张量需要大量资源。

还要注意,当集合包括多个数据集时,我们的框架是可以直接迁移的。在V-B中,我们展示了一种使用模型的单个副本同时利用所有这些(数据集)的方法。

IV    实验结果

在我们的实验中,我们考虑了两个数据集,NYUDv2-40[2],[3]和KITTI[47],[48],分别代表室内和室外环境,这两个数据都在机器人领域广泛使用。

所有的训练实验都遵循相同的方案。特别是,我们使用ImageNet上预训练的权重初始化分类器部分[49],并使用具有动量的小批量SGD进行训练,初始学习率为1e-3,动量值为0.9。在设置了轻量级RefineNet[20]之后,我们将batch norm统计数据保持冻结。在使用合成标注的大集合上进行预训练后,我们将学习率除以10。我们使用随机镜像增强的350×350的随机正方形裁剪进行训练。

我们的所有网络都在PyTorch中实现[50]。为了测量速度性能,我们计算了100次正向传播,并报告了平均值和标准偏差值,如[20]所做的那样。我们的工作站具有24GB RAM、Intel i5-7600处理器和运行CUDA9.0和CuDNN7.0的单个GT1080Ti GPU卡。

A    NYUDv2

NYUDv2是一个具有40个语义标签的室内数据集。它包含1449幅带有分割和深度标注的RGB图像,其中795幅是训练集和654幅验证集。原始数据集包含超过30万张带有深度标注的训练图像。在训练期间,我们使用的数据不到10%(25K张图像)。如第III-C节所述,对于语义分割,我们使用教师网络标注这些图像(这里,我们采用预训练的Light-Weight RefineNet-152[20],其在验证集上实现了44.4%的平均iou)。获取合成标注后,我们在大集合上对网络进行预训练,然后在795幅图像的原始小集合上对其进行微调。

从数量上看,我们能够在验证集(表I)上实现42.02%的平均iou和0.565m的RMSE(lin),优于几个大型模型,同时实时执行两项任务。表II给出了更详细的深度估计结果,图2给出了定性结果。

消融研究。    为了评估使用合成标注进行预训练的重要性以及联合执行两项任务的益处,我们进行了一系列消融实验。特别是,我们比较了在795张图像的小集合上训练的三个基线模型和其他三种使用额外数据的方法:我们的使用更大模型的噪声估计,以及两种方法,一种是Kokkinos[10]的方法,其在看到一定数量的样本之前累积梯度,另一种是Dvornik等人[11]的方法,其中每次看到至少一个样本时更新任务分支。

我们的实验结果在表III中给出。我们的第一个观察结果是,在小集合上联合执行两个任务不会为每个单独的任务提供任何显著的好处,甚至会严重损害语义分割。相比之下,当它与累积梯度的巧妙策略相结合时,拥有大量的深度标注会在深度估计甚至语义分割方面产生有价值的改进。尽管如此,没有一种方法能够在语义分割上获得有竞争力的结果,而我们提出的方法在不改变基础优化算法的情况下实现了更好的性能。

B    KITTI

KITTI是一个室外数据集,包含100张用于训练的语义标注图像(具有11个语义类)和46张用于测试的图像[48],没有真值深度图。跟随先前工作[51],我们只保留了6个代表性很好的类。

除了分割,我们遵循[26],使用了20000张带有深度标注的图像进行训练[47],697张图像进行测试。由于与CityScapes数据集[52]的相似性,我们将在CityScape上训练的ResNet-38[16]视为我们的教师网络,以标注具有深度但没有语义分割的训练图像。反过来,为了标注KITTI-6的有分割标签但没有深度标签的100张图像,我们首先只在深度任务上训练了我们网络的一个单独副本,然后将其用作教师。请注意,我们放弃了这个网络副本,没有进一步使用它。

在对大样本集进行预训练后,我们在100个样本的小样本集上对模型进行微调。我们的定量结果如表IV所示,而视觉结果如图3所示。表V中给出了每个类的分割结果。显然,我们的方法在一大组度量上优于其他竞争方法-无论是在语义分割还是深度估计上,同时重量轻且延迟低。

V    扩展

本节的目标是演示我们的方法可以轻松地直接应用于其他实际场景,例如,部署一个模型同时执行三项任务,以及部署一个单独的模型在两种不同场景(室内和室外)下同时执行两项任务。对于第三个任务,这里我们考虑曲面法线估计;对于两个场景,我们考虑在NYUD和KITTI上同时训练单个模型,而无需为每个数据集提供相同架构的单独副本。

在本节中,我们力求简单,不以实现性能为目标,因此我们直接应用上一节中概述的相同训练方案。

A    单一模型执行三项任务

与深度和分割分支类似,我们为曲面法线附加了两个卷积层的相同结构。我们使用负点积(negative dot product)(归一化后)作为曲面法线的训练损失,并将法线参数的学习率乘以10,如[9]所做的那样。

我们利用NYUDv2[2]的原始训练集,使用超过30万张图像,使用Kinect传感器的(噪声)深度图,并使用作者提供的工具箱计算表面法线。为了获取缺失的分割标签,我们重复了主要实验中概述的相同程序-特别是,我们使用LightWeight RefineNet-152网络[20]来获取有噪声的标签。在这个大数据集上进行预训练后,我们将学习率除以10,并在795张图像的小数据集上对模型进行微调,每个图像都有标注。对于曲面法线,我们使用Silberman等人提供的标注[2]。

我们的直接方法在深度估计上实现了几乎相同的数字,但在语义分割上性能显著下降(表VI)。这可能是语义分割预训练时过多的不完美和有噪声的标签直接导致的(This might be directly caused by the excessive number of imperfect and noisy labels, on which the semantic segmentation part is being pre-trained)。尽管如此,这三项任务的结果仍然具有竞争力,我们能够同时实时执行所有三项任务。我们在图4中提供了一些我们的方法示例。

B    单个模型,两个数据集,两个任务

接下来,我们考虑不希望为每个数据集提供相同模型体系结构的单独副本的情况。具体来说,我们的目标是训练一个能够同时对NYUD和KITTI执行语义分割和深度估计的单一模型。为此,我们简单地连接两个数据集,并修改分割分支以预测46个标签(40个来自NYUD,6个来自KITTI-6)。

我们遵循完全相同的训练策略,在对大集合的并集进行预训练之后,我们在小训练集合的并集中对模型进行微调。我们的网络在区分两种状态方面没有困难(表VII),并且与在每个数据集上使用单独的方法实现了相同水平的结果,而模型容量没有显著增加。

C     密集语义SLAM

最后,我们证明了我们的联合网络在室内执行深度估计和语义分割所预测的定量结果可以直接纳入现有的SLAM框架。

特别地,我们考虑SemanticFusion[1],其中SLAM重建由ElasticFusion[53]执行,该方法依赖于RGB-D输入,以找到帧之间的密集对应。McCormac等人[1]使用了一个单独的CNN,也对RGB-D输入进行操作,以获取当前帧的2D语义分割图。借助SLAM系统预测的跟踪姿态,获得场景的密集3D语义图。

我们考虑了作者提供的NYUD验证集的一个序列(注释1:https://bitbucket.org/dysonroboticslab/semanticfusion/src),并直接用我们的网络的输出来代替真值深度测量,联合执行深度和分割(第IV-A节)。同样,我们没有利用作者的分割CNN,而是利用我们网络中的分割预测。还要注意,我们的分割网络是在40个语义类上训练的,而这里我们直接将结果重新映射到13个类域[54]。我们在图5中可视化了基于密集曲面的重建以及密集分割和当前帧。有关完整序列结果,请参阅补充视频资料(注释2:https://youtu.be/qwShIBhaq8Y)。

VI    结论

我们认为,使用深度学习模型在机器人应用中高效有效地利用视觉信息对于机器人和自动驾驶车辆的进一步开发和部署至关重要。为此,我们提出了一种实现深度估计和语义分割联合任务实时性能的简单方法。我们展示了重用大型现有模型的可能性(实际上是有益的),以便生成对紧凑模型的预训练阶段重要的合成标签。此外,我们的方法可以很容易地扩展到同时处理更多任务和更多数据集,而我们网络的原始深度和分割预测可以在可用的密集SLAM系统中无缝使用。作为我们未来的工作,我们将考虑是否有可能在预训练阶段直接纳入专家的不确定性,以获得更好的结果,以及在没有可靠专家可用的情况下。另一个有趣的方向是结合Zamir等人[38]的发现,以减少训练标注的总数,而不牺牲性能。

你可能感兴趣的:(非对称标注的实时联合语义分割和深度估计)