FisheyeMultiNet: Real-time Multi-task Learning Architecture for Surround-view Automated Parking System

FisheyeMultiNet:用于环视自动泊车系统的实时多任务学习架构

文章目录

  • FisheyeMultiNet: Real-time Multi-task Learning Architecture for Surround-view Automated Parking System
    • Abstract
    • 1 Introduction
    • 2 AutomatedParkingSystem
      • 2.1 ParkingUsecases 平行停车:
      • 2.2 垂直停车:
      • 2.3Ambiguous Parking
      • 2.4 Fishbone Parking:
      • 2.5 Home Parking:
      • 2.6 Valet Parking 代客泊车:
    • 2.2 Necessary Vision Modules
      • 2.2.1 Parking slot detection:
      • 2.2.2 Freespace detection:
      • 2.2.3 Pedestrian detection:
      • 2.2.4 Vehicle detection:
      • 2.2.5 Cyclist detection:
      • 2.2.6 Soiling Detection污染检测:
    • 3 Parking System Architecture
      • 3.1 Overall Software Architecture
      • 3.2 Proposed Multi-task Architectur
        • 以下专有名词多
      • 3.2.1 Network Architecture:
      • 3.3.2 数据集:
    • 3.3 Results and Discussion
    • 4。结论

Abstract

自动泊车是一种低速机动场景,其结构非常复杂且复杂,需要在车辆周围进行全方位360°近场传感。

本文从基于摄像头的深度学习算法的角度讨论了自动泊车系统的设计和实现。
我们提供了涵盖嵌入式系统,用例和深度学习体系结构的工业系统的整体概述。

我们演示了一个称为FisheyeMultiNet的实时多任务深度学习网络
检测所有必要的objects
用于在低功耗嵌入式系统上停车。

FisheyeMultiNet以4摄像机15 fps的速度运行
它具有对象检测,语义分割和soiling detection三个任务。

为了鼓励进一步的研究,我们通过WoodScape项目发布了包含语义分割和边界框检测基础事实的5,000张图像的部分数据集[Yogamani等,2019]。

Keywords: Automated Parking, Visual Perception, Embedded Vision, Object Detection, Deep Learning.

1 Introduction

近年来,自动驾驶(AD)在深度学习和计算机视觉算法方面取得了重大进展,引起了极大的关注[Rezaei和Klette,2017年],被认为是全球范围内最流行的技术之一。在未来的5-10年内,AD有望在商业上部署。当前,全球大多数汽车原始设备制造商(OEM)都在致力于AD技术的开发项目[Ro and Ha,2019]。为了生产商用车,必须接受系统的复杂性,这增加了用于生产的硬件的限制。

鱼眼镜头在汽车应用中具有明显的优势。考虑到他们的视野非常广,他们可以用最少的传感器观察车辆的整个周围。通常,要对汽车进行360°全覆盖,就需要四个摄像头(图1)。

但是,此优点也有一些缺点,鱼眼镜头展示的投影几何形状非常复杂。
此优势需要付出代价,
鱼眼相机呈现出明显更复杂的投影几何形状。

卷积神经网络(CNN)已成为自动驾驶汽车中大多数视觉感知任务的标准构建块。 用于物体检测的边界盒是CNN的第一个成功应用之一,它不仅可以检测行人和车辆,还可以检测其位置。 最近,语义分割变得越来越成熟[Siam等,2017] [Siam等,2018a],首先是检测道路对象,例如路面,车道,道路标记,路缘石等。CNN在几何学方面也变得越来越有竞争力。 视觉任务,例如深度估计[Kumar等,2018],Visual SLAM [Milz等,2018]等。尽管嵌入式系统和专用CNN硬件加速器的计算能力迅速提高,语义的实时性能 细分仍然具有挑战性。

在本文中,我们专注于自动泊车系统的深度学习架构,这在文献中相对较少[Heimberger等,2017]

本文的其余部分的结构如下。
第2节概述了停车系统用例parking system use cases 和必要的视觉感知模块。
第三部分详细介绍了有效的多任务体系结构的具体实现,并给出了结果,并讨论了如何将其装入整个系统体系结构。
最后,第4节总结了论文并提供了潜在的未来方向。

2 AutomatedParkingSystem

2.1 ParkingUsecases 平行停车:

系统尝试将车辆平行于路缘或道路对齐,如图2(a)所示。

在这种策略中,车辆通常需要停放一次,并且需要进行进一步的操纵才能与路缘和周围的车辆对齐。

必须进行可靠的物体检测和路缘分类,以最大程度地减少车辆和路缘之间的距离,并确保避免前后车辆行驶。 传统的超声波传感器能够检测路缘石,但是与摄像机融合可以大大提高分类和位置精度。

2.2 垂直停车:

该系统试图找到一个横向停车位,该位置的宽度足以满足车辆的需求,并具有额外的开门空间和安全距离。

如果发现slot适合所需的大小,则计划一个使所需操纵次数最少的轨迹以达到插槽目标。

该停车策略可以如图2(b)所示向后执行,也可以如图2(c)所示朝前执行。

由于缺少和不正确的超声波反射,超声波传感器在检测其他车辆弯道时非常不可靠,因此需要进行多次重新测量以提高检测效率。

这可能会导致一些额外的操作,以克服仅使用超声波传感器而引入的错误。

不仅如此,超声波仅在两个物体之间停放时有用,因为无法检测到路标。与相机传感器融合可在多个方面提高性能。

例如,计算机视觉技术可以使用运动结构(SFM)提供补充信息以进行深度估计。摄像机还能够检测白线标记,从而可以检测组中有多个空slot。

2.3Ambiguous Parking

这种停车场景既不平行也不垂直。 必须从图2(d)中的周围车辆检测方向。 由于检测范围的增加,以及相机所提供的车辆周围完整的传感器覆盖范围,
计算机视觉提供了自我车辆在这种情况下的适当反应。

例如,超声波传感器不提供有关的信息自我车辆的侧面,必须使用车辆运动 在盲区追踪物体.
,而该信息是在使用摄像头以360°全景显示的。

通过使用相机提供的补充颜色信息,
与仅使用超声波相比,系统还可以检测到更高置信度的突然出现的物体,从而以更及时的方式做出反应

2.4 Fishbone Parking:

图2(e)展示了一个Fishbone Parking的例子,其中超声波传感器有很大的局限性。

为了仅使用超声波传感器检测插槽方向,
车辆必须驶入solt以检测周围车辆的方向,
当车辆在solt外时,反射密度太低,因此,不可能在搜索阶段检测到这样的时隙。

与摄像机融合可同时使用物体检测和插槽标记检测来扩大检测范围。
不能仅使用超声波传感器覆盖该用例

2.5 Home Parking:

由于计算机视觉和自动泊车技术的巨大进步,引入了更高级别的应用程序,以提供更高的舒适度和更好的驾驶体验。

其中之一是“Home Parking”,驾驶员对系统进行培训,使其遵循设定的轨迹并停在特定地点。

周围区域存储在系统中,并记录特定的地标。 这样一来,车辆便能够在未来的环境中定位自己,并完全自主地行驶到所存储的轨迹上,并沿着其到达常规停车位

2.6 Valet Parking 代客泊车:

即使没有存储轨迹,自动泊车也取得了显着进展。

在这种情况下,该系统是完全自动的初始插槽搜索,选择和停车,而无需任何有关环境或预定轨迹的任何先验知识。

2.2 Necessary Vision Modules

2.2.1 Parking slot detection:

停车位检测:

自动停车的首要步骤是选择有效的停车位,在该停车位中可以安全地停放汽车。

理想的停车位检测算法应检测几种类型的停车位,如图2所示。

停车位检测可以进一步分为几个阶段。

它涉及识别必要的划线标记,路缘石,车辆,灌木和墙壁,以便识别空旷的停车位。

此外,至关重要的是,必须精确测量slot的宽度和长度,以确保车辆可以安全地装入其中。

2.2.2 Freespace detection:

自由空间检测:

自主停车系统或完整的自主驾驶系统的最终目标是将汽车导航到目标

因此,自由空间(行人,车辆,骑自行车的人或任何其他物体在经过它们时可能受到损坏或伤害的危险的自由区域)或“可驾驶”区域信息至关重要。

实时避让操作时,此类信息也是至关重要的信息,以最大程度地减少碰撞风险

2.2.3 Pedestrian detection:

行人检测:

碰撞风险通常是由可移动的对象类别引起的。

这样的阶级之一是步行者阶级。 由于多种原因,行人检测包括一项艰巨的任务。 例如,由于行人运动不稳定且难以预测,因此很难跟踪。 试图停车时,行人可能会突然出现在车辆后面。 知道对象属于步行者类,系统应该预期离开,因此不应中断该时刻。

行人分类在其他自动驾驶情况下也非常有帮助,例如 一个孩子突然过马路,车辆不得不突然刹车。

由于红外摄像机具有捕获热能的能力,因此可以利用它们来最大化行人检测系统的性能[Baek et al。,2017],但这在生产系统中可能是昂贵的。

2.2.4 Vehicle detection:

车辆检测:

车辆检测是最重要的汽车计算机视觉任务之一。 由于许多原因,它在自动泊车方面非常有帮助。 例如,区分高障碍物(例如灌木或墙壁和车辆)的能力。

在停车状况极为重要的情况下,系统可以识别

  • 能够移动和阻碍我们汽车的计划轨迹的车辆,
  • 以及我们计划将其停在旁边的墙壁,知道它将在我们的整个行动中保持静止。

通常,在AD场景中,系统必须对自我车辆周围的动态车辆做出反应。 必须跟踪这些车辆以避免在阻塞后突然发生的车辆。

执行此类任务的第一步是车辆分类

2.2.5 Cyclist detection:

骑车人检测:

骑车人可分为行人。 但是,骑自行车的人能够以较低的机动性更快地移动。 因此,区分骑自行车的人和行人会为系统提供有助于跟踪此类物体的其他信息

2.2.6 Soiling Detection污染检测:

污染检测:

嵌入在车辆中的摄像机直接暴露在外部环境中,很可能由于雨,雾,雪等恶劣天气条件而被弄脏[Uˇ riˇcáˇr等,2019b]。

而且,灰尘和泥土对降低计算机视觉性能有很大的影响。

与其他类型的传感器相比,由于脏污,相机的性能下降得多。 因此,至关重要的是要可靠地检测摄像机上的污渍,特别是对于更高级别的自动驾驶。

Soiling Detection污染检测是第一个实施的,旨在警告驾驶员在环境感知系统中性能会下降。 在 high-level autonomous system 中,如果依靠来自脏相机的信息而没有事先不正确的信息,则可能会导致致命的后果。

3 Parking System Architecture

3.1 Overall Software Architecture

我们的系统框图如图3所示。

工业系统的第一步是根据包括性能(Tera Operations Per Second 每秒万亿次运算(TOPS),利用率,带宽),成本,功耗,散热,从高到低的标准为嵌入式系统选择SOC(片上系统) 终端可扩展性和可编程性。

SOC的选择为算法设计提供了计算范围。 典型的嵌入式系统显示在框图的左上方。 在计算机视觉中,深度学习在各种识别任务中起着主导作用,并在诸如深度和运动估计之类的几何任务中逐渐发挥作用。 CNN的进展还带动了包括定制硬件知识产权在内的硬件制造商,以提供超过10 TOPS的高吞吐量。当前的系统正在开发我们的算法,具有1 TOPS的计算能力,消耗的功率不到10瓦

在第2.2节中讨论了必要的对象检测模块。

在以前的系统中,某些模块(例如行人检测)是使用机器学习技术完成的,而其他模块(例如停车位检测)是使用经典计算机视觉技术完成的。

由于深度学习的最新进展,现在可以使用深度学习模型完成所有必要的视觉模块。

因此,我们提出了一个统一的多任务架构来执行所有这些任务,并在硬件加速器上运行(框图中的绿色(图3))。

下一节将对此进行详细讨论。

深度学习模型为停车提供了必要的功能。但是,为了增加鲁棒性,可以将其他线索(如运动估计和深度估计)与其他传感器(如超声波,雷达等)一起使用。

在本文中,我们专注于仅使用深度学习的停车系统的基本解决方案。

从四个摄像机中检测到的所有物体都记录在图像坐标中,映射到世界坐标以创建通用表示,并复制到虚拟地图中,以计划自动泊车的机动性。

道路标记和路缘石以相同的方式处理,也被发送到地图,为我们周围的世界构建可行的模型。可以通过在地面上并通过车辆和摄像机校准将foot-point脚点(物体与地面的相交点)映射到世界位置,从而在诸如行人和车辆之类的物体周围建立边界框。深度估计可以处理脚点被遮挡或道路不通的情况

3.2 Proposed Multi-task Architectur

在深度学习中通常会处理各种视觉感知任务,例如语义分割[Paszke等,2016],边界对象检测[Redmon等,2016],运动分割[Siam等,2018b],深度估计和污点检测。 。

使用encoder-decoder style 编码器-解码器样式的体系结构

许多人专注于独立解决这些任务。solvingthese tasks independently.

但是 多任务学习multi-task learning [Sistu等人,2019,Chennupati等人,2019a,Teichmann等人,2018]可以使用a single model 单个模型解决这些任务。

以下专有名词多

multi task network 多任务网络的主要优势在于其高计算效率,最适合于低成本嵌入式设备。

在一个简单的场景中,使用共享30%的公共负载common loadcommon encoder 公共编码器来解决两个任务的multi-task network 多任务网络要比独立网络independent networks好得多,而独立的网络要消耗没有公共负载共享的全部处理能力。
在这种情况下,还可以使用剩余的计算资源来解决附加任务。

实际上,这为以最小的计算复杂度添加新任务提供了可伸缩性。
[Chennupati et al。,2019b]详细介绍了negligible incremental 微小的增量计算复杂性,同时增加了联合任务的数量,由多任务网络来实现

This, in fact, offers scalability for adding new tasks at a minimal computation complexity.
[Chennupati et al., 2019b] provided a detailed overview on negligible incremental computational complexity while increasing number of joint tasks solved by a multi-task network.

另一方面,在多任务网络中使用预训练的编码器(例如ResNet [He et al。,2016])作为常见的编码器阶段,可减少训练时间并减轻海量数据优化的艰巨要求。
重用编码器还可以跨不同任务进行正则化

On the other hand, usingpre-trained encoders (say ResNet [He et al., 2016]) as a common encoder stage in multi-task networks reduces training time and alleviates the daunting requirements of massive data to optimize.
Reusing the encoder also provides regularization across different tasks

3.2.1 Network Architecture:

网络架构:

我们提出了一个称为“鱼眼多网FisheyeMultiNet”的多任务网络,该网络具有共享编码器三个独立的解码器(shared encoder
and three independent decoders )

执行联合语义分段semantic segmentation对象检测object detection污点检测soiling detection,如图4所示。

语义分段解码器提供有价值的车道标记道路和人行道信息

对象检测解码器提供行人,骑自行车的人车辆等。这两个任务主要为第2节中讨论的主要视觉模块提供解决方案。

soiling detection污点检测解码器在摄像机镜头上输出外部的存在,为每个图块提供分类,以获取图像中污点的位置

相机污点检测任务是一个针对多分类器混合多标签分类问题,
(camera soiling detection task as a mixed multilabel-categorical classification problem focusing on a classifier)

它使用二进制指示符数组对单个图像进行联合分类,其中每个01分别对应于缺失类当前类(missing or present class),并同时分配分类标签

要检测的类是{opaquetransparent}。通常,opaque不透明的污物是由泥土和灰尘引起的,而transparent透明的污物是由水和冰引起的。

原始鱼眼图像 raw fisheye images被传递到通用编码器 common encoder
使用ResNet10 [He et al。,2016]编码器构建。

该编码器在ImageNet上进行了预训练[Russakovsky et al。,2015],然后在raw fisheye WoodScape images上进行了训练。

  • 语义分割网络是使用FCN8 [Long等,2015]解码器, with skip connections fromResNet10编码器。( The semantic segmentation network is built using the FCN8 [Long et al., 2015] decoder with skip connections from the ResNet10 encoder. )

  • 对象检测解码器是使用网格级softmax层构建的,

  • 而污点检测解码器是使用网格级别的softsign层构建的。

  • categorical cross entropy分类交叉熵被用作语义分割和污染检测的损失度量

  • verage precision平均精度则用作表达单个任务损失 individual task losses损失度量

  • totallossof the network网络的总损失表示为单个任务损失的加权算术组合 , 并使用Adam [Kingma and Ba,2015]优化器进行了优化。

我们这样做的目的是大幅增加可用的内存和计算效率,而只是降低一些精度。

我们利用多种标准的优化技术来进一步改善时间,

并在汽车低功率SOC等级的四个摄像头上达到10fps。

一些例子是:
(1)减少每一层的通道数,
(2)减少跳过连接以提高内存效率,
(3)限制分段解码器在水平线以下成像(仅用于道路对象)

3.3.2 数据集:

我们建筑的开发主要是在我们的内部停车数据集上完成的,该数据集来自三个不同的地理位置:美国,欧洲和中国。

尽管大部分数据是从轿车获得的,但其中有很多来自运动型多功能车(SUV)的子集,可确保传感器机械结构强大。

它由1个百万像素RGB斜视摄像头(190°hFOV)组成。 收集图像后,应用实例选择算法去除冗余[Uˇ riˇcáˇr等,2019a],并生成包含5,000个样本的最终数据集。 据作者所知,这是自动停车的第一个公共数据集。 数据集以6:1:3的三个比例进行表示,即训练,验证和测试。 该数据集和基线多任务模型将通过我们的WoodScape项目向研究社区公开[Yogamani等,2019]。

3.3 Results and Discussion

在本节中,我们将说明实验设置,包括使用的数据集,训练算法细节等,并讨论结果。

我们使用了包含10,000张图像的鱼眼数据集。

我们使用Keras实现了基准对象检测,语义分割网络和多任务网络。
(We implemented our baseline object detection, semantic segmentation networks and our proposed multi-task network using Keras. )

由于多个任务都需要内存,因此所有输入图像的大小都为1280×384。

表1总结了在停车鱼眼数据集上使用独立任务网络(STL)和多任务(MTL)网络获得的结果。

MTL的主要挑战之一是平衡所有三个任务的损失功能,因为损失的规模在不同的规模上有所不同。

这导致某些任务的更快收敛和其他任务的分歧。

为了解决这个问题,我们利用加权损失函数对损失进行归一化。

我们会根据损失梯度在每个时期更新任务权重。我们根据每个时期后观察到的梯度,以与GradNorm相似的方式对不同的任务进行权衡[Chen et al。,2017]。

我们测试了MTL损失的3种配置,

第一个(MTL)使用分段损失和检测损失的简单总和(wseg = wdet = 1)。

其他两个配置MTL10和MTL100使用任务损失的加权总和,其中分段损失分别用权重wseg = 10和wseg = 100加权。

这补偿了任务丢失缩放的差异,并且wseg = 100始终提高了针对所有三个数据集的分段任务的性能。

实验结果表明,MTL网络的性能略低于STL网络

但是,多任务网络提供的计算收益以及通过进一步的微调提高性能的潜力,将使多任务网络成为将来嵌入式部署的更合适选择

4。结论

本文提供了商业级自动泊车系统的高级概述。 我们详细介绍了系统的各个方面,包括嵌入式系统体系结构,需要处理的停车用例以及解决这些用例的视觉算法。 我们关注的是一个最小的系统,该系统可以通过使用四个斜视摄像头的高效率多任务学习体系结构进行设计,以提供围绕车辆的360°视野。

我们提供了proposed deep learning architecture 的详细定量结果

并且表明尽管减少了内存消耗和计算能力,但MTL网络的准确性并没有比STL低很多

此外,我们发布了包含5,000张图像的数据集,并带有语义分割和边界框注释,以鼓励进一步的研究。

【翻译】FisheyeMultiNet: Real-time Multi-task Learning Architecture for Surround-view Automated Parking相关推荐

  1. Multi task learning多任务学习背景简介

    2020-06-16 23:22:33 本篇文章将介绍在机器学习中效果比较好的一种模式,多任务学习(Multi task Learning,MTL).已经有一篇机器之心翻译的很好的博文介绍多任务学习了 ...

  2. Multi Task Learning在工业界如何更胜一筹

    摘要: 本文主要介绍多任务学习和单任务学习的对比优势以及在工业界的一些使用.如何从单任务学习转变为多任务学习?怎样使AUC和预估的准确率达到最佳?如何对实时性要求较高的在线应用更加友好?本文将以淘宝实 ...

  3. 人群分析--ResnetCrowd: A Residual Deep Learning Architecture

    ResnetCrowd: A Residual Deep Learning Architecture for Crowd Counting, Violent Behaviour Detection a ...

  4. 多智能体强化学习Multi agent,多任务强化学习Multi task以及多智能体多任务强化学习Multi agent Multi task概述

    概述 在我之前的工作中,我自己总结了一些多智能体强化学习的算法和通俗的理解. 首先,关于题目中提到的这三个家伙,大家首先想到的就是强化学习的五件套: 状态:s 奖励:r 动作值:Q 状态值:V 策略: ...

  5. CVPR2015:An Improved Deep Learning Architecture for Person Re-Identificaton

    An Improved Deep Learning Architecture nfor Person Re-Identification Ejaz Ahmed (University of Maryl ...

  6. multi task训练torch_采用single task模型蒸馏到Multi-Task Networks

    论文地址. 这篇论文主要研究利用各个single task model来分别作为teacher model,用knowledge distillation的方法指导一个multi task model ...

  7. SortPool (DGCNN) - An End-to-End Deep Learning Architecture for Graph Classification AAAI 2018

    文章目录 1 背景介绍 图核方法 DGCNN和WL和PK的关系 2 Deep Graph Convolutional Neural Network (DGCNN) 深度图卷积神经网络 图卷积层 与We ...

  8. 综述论文翻译:A Review on Deep Learning Techniques Applied to Semantic Segmentation

    综述论文翻译:A Review on Deep Learning Techniques Applied to Semantic Segmentation 近期主要在学习语义分割相关方法,计划将arXi ...

  9. 【论文翻译】小样本学习(Few-Shot Learning)背景和主要方向简介

    [论文翻译]小样本学习(Few-Shot Learning)背景和主要方向简介 本文主要翻译自论文Generalizing from a Few Examples: A Survey on Few-S ...

  10. How to Build a Graph-Based Deep Learning Architecture in Traffic Domain A Survey

    How to Build a Graph-Based Deep Learning Architecture in Traffic Domain: A Survey 1. 文章概述 1.1 本文主要内容 ...

最新文章

  1. FD.io/VPP — VPP 的配置与运行
  2. 服务器的BIOS引导模式设置为什么,Legacy BIOS 引导模式和 UEFI 引导模式
  3. 机房动力环境监控对消防子系统、UPS不间断电源监控方案
  4. Win server 2012 R2 文件服务器--(三)配额限制
  5. 第七个猴子java_黑猴子的家:Java SE 练习题第七章
  6. 第五篇:路由网关(zuul) zuul路由 服务过滤 (Finchley版本)V2.0_dev
  7. spark更改分区_用于小文件的spark重新分区数据
  8. java httppost 400_java – HTTP状态400 – 必需字符串参数’walletName’不存在
  9. 修改一行代码,将图像匹配效果提升14%
  10. C++含有无符号类型的表达式的计算
  11. Flink on YARN(上):一张图轻松掌握基础架构与启动流程
  12. linux中安装无线网卡驱动,在linux下安装无线网卡驱动
  13. SpringBoot 使用freemarker 处理文档,找不到文件位置(报错:basePackagePath=““ /* relatively to resourceLoaderClass pkg)
  14. 项目经理会议记录内容
  15. python 爬取财经新闻_如何用 100 行 Python 代码实现新闻爬虫?
  16. DrawingManager.js___百度地图API
  17. 整车行业MES系统概念导入
  18. NVT SDK 67X获取文件时长的一种方式
  19. 程序员兼职接单的平台列表
  20. 服务器协议密码,确定SSL服务器支持的最差/最佳协议、最弱/最强密码的最快速方法?...

热门文章

  1. excel 输入自动更新的时间和日期
  2. mysql b树深度_为什么Mysql用B+树做索引而不用B树
  3. 实习成长之路:面试官说的MySQL高可用-------主备一致到底是什么?
  4. 实习成长之路: MySQL三 : 事务隔离:为什么你改了我还看不见?
  5. Spring-02-AOP切面编程
  6. Mybatis-02-对数据库的基本操作
  7. 深入理解java虚拟机读书笔记(三)
  8. 华为5ipro详细参数使用功能_华为nova6se和nova5ipro的参数配置对比评价
  9. Apache Flink 1.9.0 为什么将支持 Python API ?
  10. Android常见问题剖析