MultiNet用于自动驾驶的实时联合语义推理
Posted AI 菌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MultiNet用于自动驾驶的实时联合语义推理相关的知识,希望对你有一定的参考价值。
本文由多伦多大学、剑桥大学、Uber等合作完成,发表于 2018 IEEE Intelligent Vehicles Symposium (IV),Changshu, Suzhou, China。该研究提出了一种联合分类、检测和语义分割的统一架构,并且该项目已经开源:https://github.com/
MarvinTeichmann/MultiNet
文章目录
摘要
虽然大多数语义推理的方法都集中在提高性能上,但在本文中,我们认为计算时间是非常重要的,以便能够实现实时应用,如自动驾驶。为了实现这一目标,我们提出了一种联合分类、检测和语义分割的方法,该方法使用一个统一的架构,其中编码器在三个任务之间共享。我们的方法非常简单,可以进行端到端的训练,并且在具有挑战性的KITTI数据集中表现得非常好。我们的方法也非常有效,允许我们以每秒23帧以上的速度执行推理。
1. 引言
虽然性能已经非常高,但在处理实际应用程序时,运行时间变得很重要。新的硬件加速器以及压缩、降低精度和蒸馏方法已经被用来加速当前的网络。
在本文中,我们采取了另一种方法,设计了一个能够非常高效地同时执行分类、检测和语义分割的网络体系结构。这是通过将所有三个任务合并到一个统一的编解码器架构中来实现的。我们将我们的方法命名为MultiNet。
编码器是一个层数深的CNN,以产生丰富的功能,所有任务共享。这些功能随后被特定于任务的解码器利用,这些解码器实时产生其输出。特别是,该检测解码器将Yolo[45]中介绍的快速回归设计和Mask-RCNN[21]相结合,实现了更好的速度精度比。
我们在具有挑战性的KITTI基准测试[15]中展示了我们方法的有效性,并展示了道路分割的最新性能。重要的是,我们的ROIign实现可以显著提高检测性能,而不需要明确的提案生成网络。与Faster RCNN[46]相比,这使我们的解码器具有显著的速度优势。我们的方法能够受益于共享计算,使我们能够在不到45ms的时间内完成所有任务的推理。
2. 相关工作
分类:在AlexNet[29]发展之后,大多数现代图像分类方法都利用深度学习。残差网络[22]构成了最先进的网络,因为它们允许训练非常深的网络,而不会出现梯度消失或爆炸的问题。在道路分类方面,深度神经网络也被广泛使用[37]。传感器融合也在这方面得到了开发[50]。在本文中,我们使用分类来指导其他语义任务,即分割和检测。
检测:用于目标检测的传统深度学习方法遵循两步过程,其中首先生成区域建议[31]、[25]、[24],然后使用卷积网络[18]、[46]对其进行评分。通过将卷积神经网络(CNN)用于提案生成步骤[10]、[46]或通过在3D[6]、[5]中进行推理,可以获得额外的性能改进。最近,已有一些方法提出使用端到端可训练的单个深层网络来直接执行检测[51]、[33]、[54]、[33]。与基于建议的方法相比,它们的主要优势是在训练和推理时间上都要快得多,因此更适合实时检测应用。然而,到目前为止,它们在表现上远远落后。在本文中,我们提出了一种端到端的可训练检测器,它显著地缩小了性能差距。我们认为,基于提案的方法的主要优势在于它们具有大小可调的特征。这激发了我们实现ROI池的灵感。
分割:受深度学习的成功启发,基于CNN的分类器适用于语义分词的任务。早期的方法使用CNN固有的效率来实现隐式滑动窗口[19]、[32]。提出了使用端到端可训练的深度学习管道对语义分割进行建模的FCN。利用转置卷积[59]、[9]、[26]对低分辨率特征进行上采样。自[1]、[40]、[47]、[42]以来,人们提出了多种更深层次的FCNs。将FCN与条件随机场(CRF)[61]、[3]、[4]相结合,得到了非常好的结果。[61],[49]表明,CRF中的平均场推理可以作为允许端到端训练的递归网络来投射。膨胀卷积在[57]中被引入以增大接收野的大小而不损失分辨率。前述技术结合剩余网络[22]是当前最先进的技术。
多任务学习:多任务学习技术旨在通过开发多个任务来学习更好的表征。在CNN[36]、[34]的背景下,已经提出了几种方法。多任务学习的一个重要应用是人脸识别[60]、[56]、[44]。
已经研究了用于执行检测或实例分割的学习语义分割[16]、[7]、[43]。在这些系统中,主要目标是执行实例级任务。语义标注仅被视为中间结果。像[51]、[55]和更多的系统设计了一个系统,它可以被微调来执行分类、检测或语义分割等任务。在这种方法中,为每个任务学习一组不同的参数。因此,在这个模型中,联合推理是不可能的。[20]中描述的系统最接近我们的模型。然而,该系统依赖于现有的对象检测器,并且没有为这两个任务充分利用在分割过程中学习到的丰富功能。据我们所知,我们的系统是第一个能够做到这一点的系统。
3. MULTINET FOR JOINT SEMANTIC REASONING
本文提出了一种高效的前馈结构,称为MultiNet,用于语义分割、图像分类和目标检测的联合推理。我们的方法在三个任务上共享一个公共编码器,并有三个分支,每个分支都为给定任务实现一个解码器。我们请读者参阅图2,以了解我们的体系结构。可以端到端地训练MultiNet,所有任务的联合推理可以在不到45ms的时间内完成。我们首先介绍我们的联合编码器,然后介绍特定于任务的解码器。
编码器
编码器的任务是处理图像并提取丰富的抽象特征[58],这些特征包含执行准确分割、检测和图像分类所需的所有信息。编码器由分类网络的卷积层和池层组成。使用在ImageNet分类数据上预先训练的权重来初始化编码器的权重[48]。作为编码器,可以使用任何现代分类网络。
我们使用不同版本的VGG16[58]和ResNet[22]架构进行实验。我们的第一个VGG编码器使用VGG16的所有卷积层和池层。但会丢弃全连接层和SoftMax层。我们称此版本为VGG-pool5,因为pool5是VGG16中使用的最后一层。
第二种实现只丢弃最后的SoftMax层,我们称此架构为VGG-FC7,因为FC7是VGG16中使用的最后一层。VGG-FC7利用来自VGG的两个全连接层,即FC6和FC7。我们用相等的1×1卷积替换这些层,如[51],[35]中所讨论的。这个想法允许编码器处理任意输入大小的图像。特别是,我们不受224×224的原始VGG输入的限制,这对于在街道场景中执行感知来说太小了。
对于ResNet,我们实现了网络的ResNet-50和ResNet-101两个版本。作为编码器,我们利用除完全连接Softmax之外的所有层。
分类解码器
我们实现了两个分类解码器。一个版本是带有Softmax激活的普通完全连接层。该编码器与224×224的输入大小配合使用。因此,当与相应的编码器一起使用时,整个网络分别等于原始VGG或ResNet。 该编码器的目的是作为高质量的基线,以显示我们的场景分类方法的有效性。该第一分类编码器不能用于与分割和检测的联合推断。这两种方法都需要更大的输入大小。然而,增加此分类编码器上的输入大小会导致最终层的参数数量过多。
第二个分类解码器是为了利用我们的编码器生成的高分辨率功能而设计的。在典型的图像分类任务(例如,[48]、[28])中,输入以一个对象为特征,该对象通常位于图像的突出中心。对于这类任务,使用非常小的输入大小是合理的。另一方面,街道场景包含大量较小比例的对象。我们认为,为了利用这些对象提供的功能,使用高分辨率输入是至关重要的。通过将图像的输入大小增加到1248×348,我们有效地将特征生成器应用于图像的每个空间位置[51]、[35]。结果是一个由39×12个特征组成的网格,每个特征对应一个大小为32×32像素的空间区域。为了利用这一特性,我们首先应用具有30个通道的1×1卷积。这一层是瓶颈。其主要目的是大大降低维数
检测解码器
检测解码器被设计成一种类似于 ReInspect [54]、Yolo [45] 和 Overfeat [51] 的无建议式方法。通过省略和人工生成提案步骤,可以获得更快的推理速度。这对于我们建立能够实时检测的系统的目标至关重要。
基于建议的检测系统比基于非建议的检测系统有一个重要的优势。它们在内部重新调整用于检测的丰富功能。这使得CNN内部规模不变。这是一个至关重要的特征,因为CNN自然不能在不同的范围内进行概括。我们认为,尺度不变性是基于提案的系统的主要优势。
我们的检测解码器试图将基于建议的检测系统的良好检测性能与基于非建议的检测系统的快速速度结合起来。为了实现这一点,我们在解码器中加入了一个重定标层。重定标层由ROI Align[21]组成,提供了基于提案的系统的主要优势。与基于提案的系统不同,不执行非微分操作,并且可以非常高效地计算重新缩放。
我们解码器的第一步是产生一个粗略的包围盒估计。为了实现这一目标,我们首先将编码后的特征通过具有500个卷积核的1×1卷积层,产生形状为39×12×500的张量。类似于瓶颈结果,这个张量用另一个1×1卷积层处理,输出6个分辨率为39×12的通道。我们称这个张量预测为张量预测,张量值是有语义意义的。该张量的前两个通道形成图像的粗略分割。它们的值表示感兴趣的对象存在于39x12网格中的特定位置的置信度。最后四个通道表示该单元格周围区域中边界框的坐标。图3显示了带有单元格的图像。
然后利用这些预测来引入尺度不变性。在初始的粗略预测上应用了一种类似于在基于建议的系统中发现的重新缩放的方法。重定标层遵循[21]的 ROI align 策略。然而,它使用每个单元的预测来产生 ROI align。这使得操作是可区分的。因此,它可以在CNN的集合中实现。其结果是端到端的可培训系统速度更快。ROI align 汇集的特征与初始预测连接在一起,并用于产生更准确的预测。第二个预测被建模为偏移量,其输出与初始预测相加。
分割解码器
分段解码器遵循FCN架构的主要思想[35]。在给定编码器产生的特征的情况下,我们使用1×1卷积层产生了大小为39×12的低分辨率分割。然后使用三个转置的卷积层对该输出进行上采样[9]。利用跳过连接从较低层提取高分辨率特征。这些特征首先被一个1x1的卷积层处理,然后被加到了局部的上采样结果中。
4. 训练细节
在本节中,我们将介绍我们使用的损失函数以及训练过程的其他细节,包括初始化。
MultiNet 训练策略
Multinet使用微调方法进行训练。首先训练编码器网络对ILSVRC2012[8]数据进行分类。实际上,这一步被省略了。取而代之的是,我们用我们正在使用的网络体系结构的作者发布的权重来初始化编码器的所有层的权重。
在第二步中,最后完全连接的层被移除并由我们的解码器取代。然后使用 Kitti 数据集进行端到端的网络训练。因此,MultiNet 训练符合经典的微调流程。
我们的联合训练实现独立地计算与三个任务中的每一个相对应的示例的前向传递。仅在反向传播步骤期间添加梯度。这具有实际优势,即我们能够对每个解码器使用不同的训练参数。拥有这样的自由度,是我们实施联合训练的一个重要特点。例如,分类任务需要相对较大的批处理大小和比分段任务更激进的数据扩充才能很好地执行。
损失函数
使用Softmax交叉熵损失函数来训练分类和分割。对于检测,最终的预测是由12×39个细胞组成的网格。每个单元格都会被分配一个置信度标签和一个盒子标签。框标签对框的坐标进行编码,并相对于单元格的位置进行参数化。当且仅当单元格C与至少一个边界框相交时,才为其分配正置信度标签。如果是这种情况,单元格也会被分配来预测它与之相交的长方体的坐标。如果多个长方体与一个单元格相交,则选择中心最靠近c中心的长方体。请注意,一个框可以由多个单元格预测。
如果框b分配给单元格c,则下列值存储在c中:
其中x_b,y_b 和 x_c,y_c对应于b和c的中心坐标,w和h表示宽度和高度。请注意,w_c 和 h_c 始终为32,因为我们模型的单元格具有固定的宽度和高度。我们用L1作为我们的损:
我们使用交叉熵损失来训练置信度标签。每个单元格的损失是置信度和回归损失的加权和。每幅图像的损失是所有细胞损失的平均值。Kitti数据集还包含“不关心区域”。通过将相应信元的损耗乘以零来处理这些区域。我们注意到,我们的标签表示比Faster-RCNN或Reinspect要简单得多。这是我们探测系统的一个附加功能。将MultiNet的损失表示为分割、检测和分类损失的总和。
初始化
编码器的权重使用对ImageNet[8]数据训练的权重进行初始化。使用[23]的初始化方案来初始化检测和分类解码器的权重。分段解码器的转置卷积层被初始化以执行双线性上采样。分段解码器的跳跃连接被初始化为非常小的权重。这两个修改都极大地提高了分割性能。
优化器与正则化
我们使用学习速率为 1 0 − 5 10^{−5} 10−5的ADAM优化器[27]来训练我们的MultiNet。对所有层采用 5 ⋅ 1 0 − 4 5·10^{−4} 5⋅10−4的权重衰减,对分类的3×3卷积和检测解码器的所有1×1卷积采用概率为0.5的丢弃。
应用标准数据扩充来增加有效的可用训练数据量。我们通过应用随机亮度和随机对比度来增强颜色特征。空间要素通过应用随机翻转、随机调整大小和随机裁剪来失真。
5. 实验结果
在这一部分中,我们将在具有挑战性的Kitti数据集上执行实验评估。
数据集
我们在Kitti Vision基准套件上评估了Multinet[14]。该基准包含的图像显示了在卡尔斯鲁厄(Karlsruhe)城市周围行驶的移动平台拍摄的各种街道情况。除了原始数据,Kitti还为与自动驾驶相关的不同任务提供了一些标签。我们使用[12]的道路基准来评估我们的语义分割解码器和检测解码器的目标检测基准[15]的性能。我们利用了[37]的自动生成的标签,它为我们提供了通过将GPS信息与开放的街道地图数据相结合而生成的道路标签。
检测性能是使用平均精度分数[11]来衡量的。评价对象分为容易检测、中等检测和难检测三类。分割性能是使用MaxF1得分[12]来衡量的。此外,还给出了平均精度得分,以供参考。通过计算平均准确率、准确率和召回率来评估分类性能。
实验评估
本节的结构如下。我们首先分别对三种解码器的性能进行评估。要做到这一点我们对编码器进行微调,只使用三种损失中的一种进行分割、检测和分类,并将它们的性能与各种基线进行比较。在第二部分中,我们将三个解码器的联合训练与个体推理进行了比较,结果表明联合训练的性能可以与个体推理的性能保持一致。总体而言,我们表明,我们的方法与个人推理是有竞争力的。这使得我们的方法非常相关。联合训练在机器人应用中具有推理速度快等优点。
分割:分割解码器编码器使用第III-A节中讨论的四种不同编码器进行训练。表I中报告了在halt-out验证集上计算的分数。
为了将我们的方法与最先进的方法进行比较,我们使用VGG-FC7编码器在整个训练集上训练了一个分割网络,并将结果提交给了Kitti道路排行榜。在提交时,我们的方法在基准测试中排名第一。最近,我们的方法被更新的提交所取代。其中一些是直接基于我们的工作并利用我们的代码[52]。我们提交基准时的结果如表二所示。
定性结果如图4所示,既显示了每个像素的置信度水平的红蓝图,也显示了使用阈值0.5的困难预测结果:
目标检测:检测解码器根据由KITTI目标基准[15]提供的数据进行训练和评估。我们在VGG[53]和ResNet[22]解码器上训练检测解码器,并在验证集上进行评估。表III显示了我们的解码器与速度更快的RCNN基线相比的结果,并在相同的验证集上进行了评估。结果表明,我们的重缩放方法是非常有效的。使用重新缩放来训练检测解码器仅比不使用重缩放来训练检测解码器的速度要慢得多。然而,它在检测性能方面提供了显着的改进。总体而言,我们的方法在较快的RCNN上实现了几乎是原来的2倍的加速,并且性能优于其检测精度。检测解码器的定性结果可以在图5中看到。
总而言之,我们的结果表明,利用重缩放层来实现尺度不变性是一个好主意。重定标层可能是缩小提案和非提案方法之间差距的关键。
我们的检测解码器根据Kitti对象基准测试提供的数据进行训练和评估[15]。我们在VGG[53]和ResNet[22]解码器上训练我们的检测解码器,并在验证集上进行评估。表III显示了我们的解码器与速度更快的RCNN基线相比的结果,并在相同的验证集上进行了评估。我们在表V中报告了推理速度。我们观察到,我们的方法在较快的RCNN上获得了几乎是原来的2倍的加速比,并且超过了它的检测准确率。这使得我们的解码器特别适合实时应用。我们的检测解码器的定性结果可以在5中看到。
分类:分类数据不是官方Kitti基准的一部分。要评估分类解码器,我们首先需要创建我们自己的数据集。这是使用[37]中描述的方法来完成的。为了获得有意义的任务,一个场景的所有图像都完全在训练集中或完全在验证集中。这一点很重要,因为一个场景的图像通常在视觉上非常相似。
我们使用普通的ResNet和VGG分类方法作为基准,并将其与使用我们的分类解码器的VGG和ResNet方法进行比较。这两种方法之间的差异在第三-B节中有更详细的讨论。结果如表六和表七所示。我们定制的分类解码器的性能明显优于vanilla解码器,显示了我们方法的有效性。
MultiNet:我们对VGG和ResNet作为编码器进行了一系列的实验比较。表VIII和表IX比较了VGG和ResNet的性能。我们观察到,这两种基于ResNet的编码器都能够略微优于VGG。然而,由于VGG编码器速度更快,因此需要进行权衡。
在执行联合推理时,VGG pool5和ResNet50之间的速度差距比单独任务大得多。这可以用以下事实来解释:ResNet计算具有2048个通道的特征,而VGG特征只有512个通道。因此,计算每个解码器的第一层的成本要高得多。总体而言,我们得出的结论是,使用VGG解码器的Multinet在性能和速度之间提供了非常好的折衷。
6. 结论
在本文中,我们开发了一个统一的深层体系结构,能够对分类、检测和语义分割进行联合推理。我们的方法非常简单,可以端到端地训练,并且在具有挑战性的KITTI数据集上表现得非常好,在道路分割任务中的表现优于最先进的方法。我们的方法也非常高效,执行所有任务需要42.48ms。在未来,我们计划开发压缩方法,以进一步降低多网的计算瓶颈和能耗。
以上是关于MultiNet用于自动驾驶的实时联合语义推理的主要内容,如果未能解决你的问题,请参考以下文章
YUV-MultiNet用于自动驾驶的实时YUV多任务CNN