MultiNet 解读Real-time Joint Semantic Reasoning for Autonomous Driving

Posted AI 菌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MultiNet 解读Real-time Joint Semantic Reasoning for Autonomous Driving相关的知识,希望对你有一定的参考价值。

本文发表于2018年 IEEE IV上,提出了一种联合分类、检测和语义分割的方法 MultiNet,该方法使用一个统一的架构,其中编码器在三个任务之间共享。该方法结构简单,可以进行端到端的训练,并且在具有挑战性的KITTI数据集中表现得非常好。

Abstract

虽然大多数语义推理的方法都集中在提高性能上,但在本文中,我们认为计算时间是非常重要的,以便能够实现实时应用,如自动驾驶。为了实现这一目标,我们提出了一种联合分类、检测和语义分割的方法,该方法使用一个统一的架构,其中编码器在三个任务之间共享。我们的方法非常简单,可以进行端到端的训练,并且在具有挑战性的KITTI数据集中表现得非常好。我们的方法也非常有效,允许我们以每秒23帧以上的速度执行推理。

项目开源于: https://github.com/MarvinTeichmann/MultiNet

1. INTRODUCTION

目前计算机视觉领域的进展表明,视觉感知将在自动驾驶汽车的发展中发挥关键作用。这在很大程度上要归功于从2012年引入AlexNet开始的深度学习革命[29]。从那时起,新方法的精确度一直在以令人眩晕的速度增长。造成这种情况的原因是更多数据的存在、计算能力的增强和算法的发展。目前的趋势是创建具有尽可能多层的更深层次的网络[22]。

虽然性能已经非常高,但在处理实际应用程序时,运行时间变得很重要。新的硬件加速器以及压缩、降低精度和蒸馏方法已经被用来加速当前的网络。

在本文中,我们采取了另一种方法,设计了一个能够非常高效地同时执行分类、检测和语义分割的网络体系结构。这是通过将所有三个任务合并到一个统一的编解码器架构中来实现的。我们将该方法命名为Multinet。

编码器是一个深入的CNN,产生丰富的功能,所有任务共享。这些功能随后被特定于任务的解码器利用,这些解码器实时产生其输出。特别是,该检测解码器将Yolo[45]中介绍的快速回归设计与Faster-RCNN[17]和Mask-RCNN[21]的大小调整ROI对齐相结合,实现了更好的速度精度比。

我们在具有挑战性的KITTI基准测试[15]中展示了我们方法的有效性,并展示了道路分割的最新性能。重要的是,我们的ROI-align实现可以显著提高检测性能,而不需要明确的提案生成网络。与Faster-RCNN[46]相比,这使我们的解码器具有显著的速度优势。我们的方法能够受益于共享计算,使我们能够在不到45ms的时间内对所有任务进行推理。

2. RELATED WORK

在这一部分中,我们回顾了当前针对Multinet处理的任务的方法,即检测、分类和语义分割。我们将注意力集中在基于深度学习的方法上。

a)分类:在AlexNet[29]发展之后,大多数现代图像分类方法都利用深度学习。残差网络[22]构成了最先进的网络,因为它们允许训练非常深的网络,而不会出现梯度消失或爆炸的问题。在道路分类方面,深度神经网络也被广泛使用[37]。传感器融合也在这方面得到了开发[50]。在本文中,我们使用分类来指导其他语义任务,即分割和检测。

b)检测:对象检测的传统深度学习方法遵循两个步骤过程,其中首先生成区域提案[31],[25],[24],然后使用卷积网络进行评分[18],[24]。通过使用提议生成步骤[10],[46]或通过3D推理的卷积神经网络(CNNS)可以获得额外的性能改进。最近,一些方法提出使用单个深度网络,该网络是可训练的端到端直接进行检测的[51],[33], [54], [33]。它们的主要优势在于基于建议的方法,它们在训练和推理时间方面都更快,因此更适合实时检测应用。然而,到目前为止他们的性能表现比较落后。在本文中,我们提出了一种端到端可训练的的检测器,它大大减少了性能差距。我们认为,基于提议的方法的主要优势在于他们能够拥有可调整大小的特征。这启发了我们使用 ROI pooling。

c)分割: 受深度学习成功的启发,基于CNN的分类器被改编为语义分割的任务。早期的方法利用CNN的固有效率来实现隐式滑动窗口[19], [32]。FCN被提出来使用一个可进行端到端训练的深度学习管道来为语义分割建模。转置的卷积[59], [9], [26]被用来对低分辨率的特征进行上采样。自[1]、[40]、[47]、[42]以来,已经提出了各种更深层次的FCNs的味道。通过将FCN与条件随机场(CRF)相结合取得了非常好的效果[61], [3], [4]。[61], [49]表明CRF中的均值场推理可以被投射为一个允许端到端训练的递归网。扩张卷积在[57]中被引入,以增加感受野的大小而不损失分辨率。上述技术与残差网络[22]相结合,是目前最先进的技术。

d) 多任务学习:多任务学习技术 旨在通过利用许多任务来学习更好的表征 任务。在CNN的背景下,已经提出了几种方法 CNN[36], [34]。多任务学习的一个重要应用 学习的一个重要应用是人脸识别[60], [56], [44]。

为了进行检测或实例分割而学习语义分割已经被研究过[16], [7], [43]。在这些系统中,主要目标是执行实例层面的任务。语义注释只被看作是一个中间结果。像[51]、[55]和更多的系统设计了一个系统,可以进行微调以执行任务,如分类、检测或语义分割。在这种方法中,每个任务都要学习一组不同的参数。因此,在这种模型中,联合推理是不可能的。[20]中描述的系统与我们的模型最接近。然而,这个系统依赖于现有的物体检测器,并没有完全利用在分割过程中为两个任务学习的丰富特征。就我们所知我们的系统是第一个能够做到这一点的系统。

3. MULTINET FOR JOINT SEMANTIC REASONING

在本文中,我们提出了一个高效的前馈架构,我们称之为MultiNet,用于联合推理语义分割、图像分类和物体检测。我们的方法在这三个任务上共享一个共同的编码器,并有三个分支,每个分支实现一个特定任务的解码器。我们请读者参考图2来说明我们的结构。MultiNet可以被训练,所有任务的联合推理可以在45ms内完成。我们在讨论中首先介绍了我们的联合编码器,然后是特定任务的解码器。

A. Encoder

编码器的任务是处理图像并提取丰富的抽象特征[58],这些特征包含所有必要的信息以进行准确的分割、检测和图像分类。编码器由卷积层和分类网络的池化层组成。编码器的权重是使用ImageNet分类数据集上的预训练模型进行初始化的。任何现代分类网络都可以作为编码器。

我们使用VGG16[58]和ResNet[22]架构的版本进行实验。我们的第一个VGG编码器使用VGG16的所有卷积层和池化层,但放弃了 全连接的softmax层。我们称这个版本为VGG-pool5,因为pool5是VGG16中最后使用的层。第二种实现方式只丢弃了最后一个全连接的softmax层。我们称这种架构为VGG-fc7。因为fc7是VGG16中使用的最后一层。VGG-fc7利用了 VGG-fc7利用了VGG中的两个全连接层,即fc6和fc7。我们用相等的1×1卷积来代替这些层,如 在[51]、[35]中讨论过。这个想法使得编码器可以 处理具有任意输入大小的图像。 特别是我们 特别是我们不受限于224×224的原始VGG输入,因为它太小了,无法对图像进行感知。这对于在街道场景中进行感知来说是太小了。

对于ResNet,我们运用了ResNet-50层和ResNet-101网络作为编码器,我们利用所有层,除了全连接的softmax层。

B. Classification Decoder

我们实现了两个分类解码器。一个版本是带有Softmax激活的普通完全连接层。该编码器与224×224的输入大小配合使用。因此,当与相应的编码器一起使用时,整个网络分别等于原始VGG或ResNet。该编码器的目的是作为高质量的基线,以显示我们的场景分类方法的有效性。该第一分类编码器不能用于与分割和检测的联合推断。这两种方法都需要更大的输入大小。然而,增加此分类编码器上的输入大小会导致最终层的参数数量过多。

第二个分类解码器是为了利用我们的编码器生成的高分辨率功能而设计的。在典型的图像分类任务(例如,[48]、[28])中,输入以一个对象为特征,该对象通常位于图像的突出中心。对于这类任务,使用非常小的输入大小是合理的。另一方面,街道场景包含大量较小比例的对象。我们认为,为了利用这些对象提供的特征,使用高分辨率输入是至关重要的。 通过将图像的输入大小增加到1248×348,我们有效地将特征生成器应用于图像的每个空间位置[51]、[35]。结果是一个由39×12个特征组成的网格,每个特征对应一个大小为32×32像素的空间区域。为了利用这一特性,我们首先应用具有30个通道的1×1卷积。这一层的作用是bottleNeck,其主要目的是大大降低维数。

C. Detection Decoder

检测解码器被设计成一种类似于 ReInspect[54]、YOLO[45] 和 Overfeat[51] 的无建议区域方法。通过省略和人工生成提案步骤,可以获得更快的推理速度。这对于我们建立能够实时检测的系统的目标至关重要。

基于建议的检测系统比基于非建议的检测系统有一个重要的优势。它们在内部重新调整用于检测的丰富特征。这使得CNN内部规模不变。这是一个至关重要的特征,因为CNN自然不能在不同的范围内进行概括。我们认为,尺度不变性是基于提案的系统的主要优势。

我们的检测解码器试图将基于建议的检测系统的良好检测性能与基于非建议的检测系统的快速速度结合起来。 为了实现这一点,我们在解码器中加入了一个重定标层。重定标层由ROI Align[21]组成,提供了基于提案的系统的主要优势。与基于提案的系统不同,不执行非微分操作,并且可以非常高效地计算重新缩放。

我们解码器的第一步是产生一个粗略的包围盒估计。为了实现这一目标,我们首先将编码后的特征通过具有500个滤波器的1×1卷积层,产生形状为39×12×500的张量。这些特征作用为bottleneck。这个张量用另一个1×1卷积层处理,输出6个分辨率为39×12的通道。我们称这个为张量预测,张量值是有语义意义的。 该张量的前两个通道形成图像的粗略分割。它们的值表示感兴趣的对象存在于39x12网格中的特定位置的置信度。最后四个通道表示该单元格周围区域中边界框的坐标。图3显示了带有单元格的图像。

然后利用这些预测来引入尺度不变性。在初始的粗略预测上应用了一种类似于在基于建议的系统中发现的重新缩放的方法。重定标层遵循[21]的ROI对齐策略。然而,它使用每个单元的预测来产生ROI对齐。这使得操作是可区分的。因此,它可以在CNN的集合中实现。其结果是端到端的可培训系统速度更快。ROI对准汇集的特征与初始预测连接在一起,并用于产生更准确的预测。第二个预测被建模为偏移量,其输出与初始预测相加。

D. Segmentation Decoder

分段解码器遵循FCN架构的主要思想[35]。在给定编码器产生的特征的情况下,我们使用1×1卷积层产生了大小为39×12的低分辨率分割。然后使用三个转置的卷积层对该输出进行上采样[9]。利用跳过连接从较低层提取高分辨率特征,这些特征首先经过1x1的卷积层,然后增加到部分上采样的结果之中。

4. TRAINING DETAILS

在本节中,我们将介绍我们使用的损失函数以及训练过程的其他细节,包括初始化。

a)多网训练策略:MultiNet 训练遵循微调方法。首先训练编码器网络对ILSVRC2012(ImageNet)数据集进行分类。实际上,这一步被省略了。取而代之的是,我们直接使用网络体系结构的作者发布的权重来初始化编码器的所有层的权重。

在第二步中,最后完全连接的层被移除,并由我们的解码器取代。然后使用Kitti数据进行端到端的网络训练。因此,MultiNet训练遵循经典的微调流程。

我们的联合训练实现独立地计算与三个任务中的每一个相对应的示例的前向传递。仅在反向传播步骤期间添加梯度。这具有实际优势,即我们能够对每个解码器使用不同的训练参数。拥有这样的自由度,是我们实施联合训练的一个重要特点。例如,分类任务需要相对较大的批处理大小和比分割任务更激进的数据扩充才能很好地执行。

b)损失函数:使用Softmax交叉熵损失函数来训练分类和分割。对于检测,最终的预测是由12×39个单元格组成的网格。每个单元格都会被分配一个置信度标签和一个盒子标签。框标签对框的坐标进行编码,并相对于单元格的位置进行参数化。当且仅当单元格C与至少一个边界框相交时,才为其分配正置信度标签。如果是这种情况,单元格也会被分配来预测它与之相交的长方体的坐标。如果多个长方体与一个单元格相交,则选择中心最靠近c中心的长方体。请注意,一个框可以由多个单元格预测。如果框b分配给单元格c,则下列值存储在c中:


其中 x b , y b x_b,y_b xbyb x c , y c x_c,y_c xcyc对应于 b b b c c c 的中心坐标,w 和 h 表示宽度和高度。请注意, w c w_c wc and h c h_c hc 始终为32,因为我们模型的单元格具有固定的宽度和高度。我们用L1作为我们的损失:

其中, ˆ c ˆc ˆc 是对cell的预测,c是其gt,并且 c p c_p cp 表示是否已将肯定标签分配给cell。 δ c p δcp δcp确保如果不存在对象,则回归损失为零。我们使用交叉熵损失来训练置信度标签。每个单元格的损失是置信度和回归损失的加权和。每幅图像的损失是所有cell损失的平均值。Kitti数据集还包含“不关心区域”。通过将相应信元的损耗乘以零来处理这些区域。我们注意到,我们的标签表示比 Faster-RCNN 或 ReInspect 要简单得多,这是我们探测系统的一个额外的特点。将多网的损失表示为分割、检测和分类损失的总和。将联合训练的损失表示为分割、检测和分类损失的总和。

c)初始化:编码器的权重使用对ImageNet[8]数据训练的权重进行初始化。使用[23]的初始化方案来初始化检测和分类解码器的权重。分割解码器的转置卷积层被初始化以执行双线性上采样。分割解码器的跳跃连接被初始化为非常小的权重。这两个修改都极大地提高了分割性能。

d)优化器以及正则化:我们使用学习速率为 1 0 − 5 10^{−5} 105的ADAM优化器[27]来训练我们的Multinet。对所有层采用 5 ⋅ 1 0 − 4 5·10^{−4} 5104的权重衰减,对分类的3×3卷积和检测解码器的所有1×1卷积采用概率为0.5的丢弃。

应用标准数据扩充来增加有效的可用训练数据量。我们通过应用随机亮度和随机对比度来增强颜色特征。空间要素通过应用随机翻转、随机调整大小和随机裁剪来失真。

5. EXPERIMENTAL RESULTS

在这一部分中,我们将在具有挑战性的Kitti数据集上执行实验评估。

A. Dataset

我们在Kitti Vision基准套件上评估了Multinet[14]。该基准包含的图像显示了在卡尔斯鲁厄(Karlsruhe)城市周围行驶的移动平台拍摄的各种街道情况。除了原始数据,Kitti还为与自动驾驶相关的不同任务提供了一些标签。我们使用[12]的道路基准来评估我们的语义分割解码器和检测解码器的目标检测基准[15]的性能。我们利用了[37]的自动生成的标签,它为我们提供了通过将GPS信息与开放的街道地图数据相结合而生成的道路标签。

检测性能是使用平均精度分数[11]来衡量的。评价目标分为容易检测、中等检测和难检测三类。分割性能是使用MaxF1得分[12]来衡量的。此外,还给出了平均精度得分,以供参考。通过计算平均准确率、准确率和召回率来评估分类性能。

B. Experimental evaluation

本节的结构如下。我们首先分别对三种解码器的性能进行评估。为了做到这一点,我们只用三种损失中的一种来微调编码器的分割、检测和分类,并将它们的性能与各种基线进行比较。在第二部分中,我们将三个解码器的联合训练与个体推理进行了比较,结果表明联合训练的性能可以与个体推理的性能保持一致。总体而言,我们表明,我们的方法与个人推理是有竞争力的。这使得我们的方法非常相关。关节训练在机器人应用中具有推理速度快等优点。

a)语义分割:分割解码器编码器使用第III-A节中讨论的四个不同编码器进行训练。表 2 中报告了在 halt-out 验证集上计算的分数。

为了将我们的方法与最先进的方法进行比较,我们使用VGG-FC7编码器在整个训练集上训练了一个分割网络,并将结果提交给了Kitti道路排行榜。在提交时,我们的方法在基准测试中排名第一。最近,我们的方法被更新的提交所取代。其中一些是直接基于我们的工作并利用我们的代码[52]。我们提交基准时的结果如表1所示。


定性结果如图4所示,既显示了每个像素的置信度水平的红蓝图,也显示了使用阈值0.5的硬预测。

b)检测:检测解码器根据由KITTI对象基准[15]提供的数据进行训练和评估。我们在VGG[53]和ResNet[22]解码器上训练检测解码器,并在验证集上进行评估。

表III显示了我们的解码器与速度Faster-RCNN基线相比的结果,并在相同的验证集上进行了评估。结果表明,我们的重缩放方法是非常有效的。使用重新缩放来训练检测解码器仅比不使用重缩放来训练检测解码器的速度要慢一些。然而,它在检测性能方面提供了显着的改进。总体而言,我们的方法在Faster RCNN上实现了几乎是原来的2倍的加速,并且性能优于其检测精度。检测解码器的定性结果可以在图5中看到。


总而言之,我们的结果表明,利用重缩放层来实现尺度不变性是一个好主意。重定标层可能是缩小提案和非提案方法之间差距的关键。

我们的检测解码器根据Kitti对象基准测试提供的数据进行训练和评估[15]。我们在VGG[53]和ResNet[22]解码器上训练我们的检测解码器,并在验证集上进行评估。表III显示了我们的解码器与速度Faster RCNN基线相比的结果,并在相同的验证集上进行了评估。我们在表V中报告了推理速度。我们观察到,我们的方法在较快的RCNN上获得了几乎是原来的2倍的加速比,并且超过了它的检测准确率。这使得我们的解码器特别适合实时应用。我们的检测解码器的定性结果可以在图5中看到。

c)分类:分类数据不是官方Kitti基准的一部分。要评估分类解码器,我们首先需要创建我们自己的数据集。这是使用[37]中描述的方法来完成的。为了获得有意义的任务,一个场景的所有图像都完全在列车中或完全在验证集中。这一点很重要,因为一个场景的图像通常在视觉上非常相似。

我们使用普通的ResNet和VGG分类方法作为基准,并将其与使用我们的分类解码器的VGG和ResNet方法进行比较。这两种方法之间的差异在第三-B节中有更详细的讨论。结果如表六和表七所示。我们定制的分类解码器的性能明显优于vanilla解码器,显示了我们方法的有效性。

d)多任务网络:我们对VGG和ResNet作为编码器进行了一系列的实验比较。表VIII和表IX比较了VGG和ResNet的性能。我们观察到,这两种基于ResNet的编码器都能够略微优于VGG。然而,由于VGG编码器速度更快,因此需要进行权衡。

在执行联合推理时,VGG pool5和ResNet50之间的速度差距比单独任务大得多。这可以用以下事实来解释:ResNet计算具有2048个通道的特征,而VGG特征只有512个通道。因此,计算每个解码器的第一层的成本要高得多。

总体而言,我们得出的结论是,使用VGG解码器的Multinet在性能和速度之间提供了非常好的折衷。


6. CONCLUSION

在本文中,我们开发了一个统一的深层体系结构,能够对分类、检测和语义分割进行联合推理。我们的方法非常简单,可以端到端地训练,并且在具有挑战性的KITTI数据集上表现得非常好,在道路分割任务中的表现优于最先进的方法。我们的方法也非常高效,执行所有任务需要42.48ms。在未来,我们计划开发压缩方法,以进一步降低多网络的计算瓶颈和能量消耗。

以上是关于MultiNet 解读Real-time Joint Semantic Reasoning for Autonomous Driving的主要内容,如果未能解决你的问题,请参考以下文章

MultiNet用于自动驾驶的实时联合语义推理

MultiNet用于自动驾驶的实时联合语义推理

Java并发 -- fork/join 框架解读

全面解读 Spark SQL 之 Join 原理与实现

MultiNet用于自动驾驶的多模态多任务学习网络

MultiNet用于自动驾驶的多模态多任务学习网络