YOLOP:全景驾驶感知

论文链接

YOLOP: You Only Look Once for Panoptic Driving Perception

摘要

​ 全景驾驶感知系统是自动驾驶的重要组成部分。高精度、实时的感知系统可以辅助车辆在行驶中做出合理的决策。我们提出了一个全景驾驶感知网络(YOLOP)来同时执行交通目标检测、可行驶区域分割和车道检测。它由一个用于特征提取的编码器和三个用于处理特定任务的解码器组成。我们的模型在具有挑战性的 BDD100K 数据集上表现非常出色,在准确性和速度方面在所有三个任务上都达到了最先进的水平。此外,我们通过 ablative study 验证了我们的多任务学习模型对联合训练的有效性。据我们所知,这是第一个可以在嵌入式设备 Jetson TX2(23 FPS)上实时同时处理这三个视觉感知任务并保持出色精度的研究。为便于进一步研究,源代码和预训练模型将在 https://github.com/hustvl/YOLOP 上发布。

​ 索引词——深度学习、多任务学习、交通目标检测、可行驶区域分割、车道检测。

1.导论

​ 近年来,对自动驾驶的广泛研究揭示了全景驾驶感知系统的重要性。它在自动驾驶中发挥着重要作用,因为它可以从摄像头拍摄的图像中提取视觉信息,并协助决策系统控制车辆的动作。为了限制车辆的机动,视觉感知系统应该能够理解场景,然后为决策系统提供信息,包括:障碍物的位置、道路是否可行驶、车道的位置等。全景驾驶感知系统中通常包含目标检测,以帮助车辆避开障碍物并遵守交通规则。还需要可行驶区域分割和车道检测,因为它们对于规划车辆的行驶路线至关重要。

​ 许多方法分别处理这些任务。例如,Faster R-CNN [1] 和 YOLOv4 [2] 处理目标检测;UNet [3] 和 PSPNet [4] 处理语义分割。 SCNN [5] 和 SAD-ENet [6] 用于检测车道。尽管这些方法取得了出色的性能,但一个接一个地处理这些任务比一次处理所有任务需要更长的时间。在自动驾驶汽车常用的嵌入式设备上部署全景驾驶感知系统时,应考虑有限的计算资源和延迟。另外,交通场景理解中的不同任务往往有很多相关的信息,比如上面提到的三个任务。如图 1 所示,车道往往是可行驶区域的边界,可行驶区域通常紧密围绕着交通目标。多任务网络更适合这种情况,因为(1)它可以通过一次处理多个任务而不是一个接一个地处理来加速图像分析过程(2)它可以在多个任务之间共享信息,在多任务网络中分享相同的特征提取 backbone,这可以提高每个任务的性能。因此,探索自动驾驶中的多任务方法至关重要。

在这里插入图片描述

图 1.我们模型的输入和输出。我们模型的目的是在一张输入图像中同时处理交通目标检测、可行驶区域分割和车道检测。在(b)中,棕色边界框表示交通对象,绿色区域是可行驶区域,蓝色线表示车道线。

MultiNet [7] 使用编码器-解码器结构,该结构具有一个共享的编码器和三个独立的解码器,用于分类,目标检测和语义分割。它在这些任务上表现良好,并在 KITTI 可行驶区域分割任务上达到了最先进的水平。然而,分类任务在控制车辆方面不如车道检测那么重要。 DLT-Net [8] 将交通目标检测、可行驶区域分割和车道检测结合在一起,并提出 context tensor 来融合解码器之间的特征图以共享互信息。虽然具有竞争力的性能,但它并没有达到实时性。因此,我们为全景驾驶感知系统构建了一个高效的多任务网络,其中包括目标检测、可行驶区域分割和车道检测任务,并且可以在部署 TensorRT 的嵌入式设备 Jetson TX2 上达到实时效果。通过同时处理自动驾驶中的这三个关键任务,我们减少了全景驾驶感知系统的推理时间,将计算成本限制在一个合理的范围内,并提高了每个任务的性能

​ 为了获得高精度和快速的速度,我们设计了一个简单高效的网络架构。我们使用轻量级 CNN [9] 作为编码器从图像中提取特征,然后将这些特征图馈送到三个解码器以完成各自的任务。我们的检测解码器基于当前性能最佳的单步骤检测网络 [2],主要有两个原因:(1)单步骤检测网络比两步骤检测网络更快。 (2) 单步骤检测器的基于网格的预测机制更多地与其他两个语义分割任务相关,而实例分割通常与基于区域的检测器相结合[10]。编码器输出的特征图融合了不同级别和尺度的语义特征,我们的分割分支可以利用这些特征图出色地完成像素级语义预测。

​ 除了端到端的训练策略外,我们还尝试了一些交替优化范式,逐步训练我们的模型。一方面,我们可以将不相关的任务放在不同的训练步骤中,以防止相互限制。另一方面,首先训练的任务可以指导其他任务。所以这种范式有时虽然繁琐但效果很好。然而,实验表明,我们的模型没有必要用这种范式,因为端到端的训练表现得足够好。最终,我们的全景驾驶感知系统在单个 NVIDIA TITAN XP 上达到了 41 FPS,在 Jetson TX2 上达到了 23 FPS;同时,它在 BDD100K 数据集 [11] 的三个任务上达到了最先进的水平。

​ 总之,我们的主要贡献是:(1)我们提出了一个高效的多任务网络,可以共同处理自动驾驶中的三个关键任务:物体检测、可行驶区域分割和车道检测,以节省计算成本,减少推理时间以提高每项任务的性能。我们的工作是第一个在嵌入式设备上实现实时性,同时在 BDD100K 数据集上保持最先进水平性能。 (2) 我们设计了烧蚀实验来验证我们的多任务方案的有效性。事实证明,这三个任务可以联合学习,无需繁琐的交替优化

2.相关工作

​ 在本节中,我们分别回顾了上述三个任务的解决方案,然后介绍了一些相关的多任务学习工作。我们只专注于基于深度学习的解决方案。

A.交通目标检测

​ 近年来,随着深度学习的飞速发展,涌现出许多突出的目标检测算法。目前主流的物体检测算法可以分为两阶段方法和一阶段方法。

​ 两阶段方法分两步完成检测任务。首先获得 regional proposal,然后利用 regional proposal 中的特征对目标进行定位和分类。regional proposal 的产生经历了几个发展阶段。 R-CNN [12] 创造性地尝试使用选择性搜索而不是滑动窗口来提取原始图像上的 regional proposal,而 Fast R-CNN [13] 则直接在特征图上执行此操作。 Faster-RCNN [1]中提出的 RPN 网络大大降低了时间消耗,获得了更高的准确率。在前者的基础上,R-FCN [14] 提出了一个全卷积网络,用卷积层代替全连接层,进一步加快检测速度。

SDD 系列 [15] 和 YOLO 系列算法是单阶段方法中的里程碑。这种算法同时进行边界框回归和目标分类。 YOLO [16] 将图片划分为 S × S 网格,而不是用 RPN 网络提取区域建议,显著加快了检测速度。 YOLO9000 [17] 引入了 anchor 机制来提高检测的召回率。 YOLOv3 [18] 使用特征金字塔网络结构实现多尺度检测。YOLOv4 [2] 通过细化网络结构、激活函数、损失函数和应用丰富的数据增强进一步提高了检测性能。

B.可行驶区域分割

​ 由于深度学习的巨大成功,基于 CNN 的方法最近被广泛用于语义分割。 FCN [19] 首先将全卷积网络引入语义分割。它保留了 CNN 分类器的 backbone,并用 1×1 卷积层和上采样层替换了最终的全连接层。尽管有 skip-connection 细化,其性能仍然受到低分辨率输出的限制。为了获得更高分辨率的输出,Unet [3] 构建了编码器-解码器架构。 DeepLab [20] 使用 CRF(条件随机场)来提高输出质量,并提出了 atrous 算法来扩展感受野,同时保持相近的计算成本。 PSPNet [4] 提出了金字塔池模块来提取各种尺度的特征以提高其性能。

C.车道线检测

​ 在车道检测方面,有很多基于深度学习的创新研究。 [21] 构建了一个双分支网络来对图像进行语义分割和像素嵌入。它进一步聚类双分支特征以实现车道实例分割。 SCNN [5] 提出了slice-by-slice 卷积,它使消息能够在一个层中跨行和跨列的像素之间传递,但是这种卷积非常耗时。 Enet-SAD [6] 使用自注意力蒸馏方法(self attention distillation),使低级特征图能够从高级特征图学习。这种方法在保持模型轻量级的同时提高了模型的性能。 [22] 将车道检测定义为在图像的某些行中查找车道线位置集合的任务,这种基于行的分类使用全局特征。

D.多任务方法

​ 多任务学习的目标是通过多个任务之间的共享信息来学习更好的表示。尤其是基于 CNN 的多任务学习方法还可以实现网络结构的卷积共享。 Mask R-CNN [10] 通过添加用于预测目标掩码的分支来扩展 Faster R-CNN,该分支有效地结合了实例分割和目标检测任务,并且这两个任务可以相互提升性能。 LSNet[23] 将目标检测、实例分割和姿态估计总结为位置敏感的视觉识别,并使用统一的解决方案来处理这些任务。 MultiNet[7]共享一个编码器和三个独立的解码器,同时完成场景分类、目标检测和驾驶区域分割三个场景感知任务。 DLT-Net [8] 继承了编码器-解码器结构,并在子任务解码器之间构建了上下文张量(context tensor),以在任务之间共享指定信息。 [24]提出了车道区域分割和车道边界检测之间相互关联的子结构。同时,它提出了一种新的损失函数来将车道线限制在车道区域的外轮廓上,以便它们在几何上重叠。然而,这个先前的假设也限制了它的应用,因为它只适用于车道线紧紧包裹车道区域的场景。此外,多任务模型的训练范式也值得思考。 [25] 指出,只有当所有这些任务确实相关时,联合训练才是合适和有益的;否则需要采用交替优化。所以 Faster R-CNN [1] 采用 4 步训练算法来学习共享特征。这种范式有时可能会有所帮助,但它太冗长了。

3.方法

​ 我们提出了一个简单高效的前馈网络,可以共同完成交通目标检测、可行驶区域分割和车道检测任务。如图 2 所示,我们的全景驾驶感知单次网络,称为 YOLOP,包含一个共享编码器和三个后续解码器来解决特定任务。不同解码器之间没有复杂和冗余的共享块,这减少了计算消耗并使我们的网络能够轻松地进行端到端的训练。

A.编码器

​ 我们的网络共享一个编码器,它由 backbone 网络和 neck 网络组成。

​ 1)Backbone:主干网络用于提取输入图像的特征。通常,一些经典的图像分类网络被当作 backbone 。由于 YOLOv4 [2] 在物体检测上的优异性能,我们选择 CSPDarknet [9]作为主干,解决了优化 [26] 时梯度重复的问题。它支持特征传播和特征重用,减少了参数和计算量。因此,有利于保证网络的实时性。

​ 2) NeckNeck 用于融合 backbone 产生的特征。我们的 neck 主要由空间金字塔池化(SPP)模块 [27] 和特征金字塔网络(FPN)模块 [28] 组成。 SPP 生成并融合不同尺度的特征,FPN 融合不同语义层次的特征,使得生成的特征包含多尺度、多语义层次的信息。我们采用串联的方法来融合我们工作中的特征。

B.解码器

​ 我们网络中的三个 head 是三个任务的特定解码器。

​ 1)Detect Head:与 YOLOv4 类似,我们采用基于 anchor 的多尺度检测方案。首先,我们使用一种称为路径聚合网络(PAN)的结构,一种自下而上的特征金字塔网络 [29]。 FPN 自上而下传输语义特征,PAN 自下而上传输定位特征。我们将它们结合起来以获得更好的特征融合效果,然后直接使用 PAN 中的多尺度融合特征图进行检测。然后,多尺度特征图的每个网格将被分配三个不同纵横比的先验 anchor,检测头将预测位置的偏移量和高度、宽度的缩放比例,以及每个类别的对应概率和预测的置信度

​ 2) 可行驶区域分割 head & 车道线分割 head:可行驶区域分割 head 和车道线分割 head 采用相同的网络结构。我们将 FPN 的底层馈送到分割分支,大小为 (W / 8, H / 8, 256)。我们的分割分支非常简单。经过三个上采样处理,我们将输出特征图恢复到 (W, H, 2) 的大小,它代表了输入图像中每个像素是可行驶区域 / 车道线和背景的概率。由于 neck 网络中共享 SPP,我们没有像其他人通常所做的那样添加额外的 SPP 模块到分割分支 [4],因为这不会改善我们的网络性能。此外,我们在上采样层中使用 Nearest Interpolation 方法来降低计算成本,而不是反卷积。因此,我们的分割解码器不仅获得高精度输出,而且在推理过程中也非常快。
在这里插入图片描述

图 2.YOLOP 的架构。 YOLOP 共用一个编码器,结合三个解码器来解决不同的任务。编码器由骨架和颈部组成。

C.损失函数

​ 由于我们的网络中有三个解码器,所以我们的多任务损失包含三个部分。对于检测损失 Ldet,它是分类损失、目标损失和边界框损失的加权和,如等式 1 所示。
L d e t = α 1 L c l a

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值