自动驾驶的重要一环:谈谈感知前沿技术

2023-05-16

本文总结于Waymo研发经理周寅于2021年8月29日在深蓝学院的讲座。讲座内容主要包括自动驾驶系统的总览,自动驾驶感知的介绍,以及感知的前沿动态和总结。

1.自动驾驶系统总览

关于自动驾驶系统,目前主流的L4级别自动驾驶系统通常包括预先提供的地图以及众多传感器,具体传感器系统包括激光雷达系统,雷达系统以及视觉系统。 无人驾驶的目的是通过这些输入来控制汽车的行驶。近些年,由于深度学习的兴起,我们在更多的模块部署了深度学习的模块,不过虽然端对端的深度学习有很美好的前景,但是与目前工业界模块化的设计方式相比,依然有不少差距。

å¾ç

 

图一:无人车系统主流的模块化设计 

关于如今无人车系统的模块,输入通常包括高精地图以及各种传感器, 然后基于传感器和地图,我们就可以知道当前车辆的位置信息 (比如汽车位于哪个车道,前方是否有斑马线等), 接下来,我们就可以进行感知,了解周围的环境信息(比如车辆、行人、信号灯、施工障碍物等) 并规划路径进行驾驶。

其中,感知通常是基于地图,因为地图能为我们提供很多的先验信息,比如红绿灯的位置,十字路口的位置等,基于定位和感知的结果,我们可以进行更准确的行为预测,目的是为了判断周围的物体未来可能会有怎样的行为或者运动。在这样的预测的基础下,我们接下来就可以实时地规划出车辆的最优路径。

2.自动驾驶感知的介绍

本次讲座,我们将主要关注感知的环节。关于感知,我们的输入就是各个传感器采集到的数据以及地图,输出则是对于周围环境的各种表征。关于自动驾驶感知的路线,目前比较主流的包括Waymo为代表的多传感器感知路线,以及Tesla的纯视觉感知路线。

就个人观点,从无人驾驶的角度,我们希望达到最安全的驾驶等级, 然而不管哪种传感器,都存在一定的感知”盲区”。因此,我们需要传感器弥补其他传感器在特定场合的不足。比如激光雷达在雨天和雾天通常效果不佳,因此我们装配上摄像头和雷达来弥补激光雷达的这一不足。

关于感知,学术界和工业界主要关注的包括六个问题:

  1. 目标检测和跟踪。包括目标的大小朝向位姿;
  2. 物体分割。在图像上我们需要对每个像素点标定类别,对于点云,我们需要对每个点标定类别;
  3. 流估。我们想了解物体运动的趋势;
  4. 深度估计。我们需要得到每个点的深度信息,这对于视觉感知非常重要;
  5. 对于行人的姿态估计, 我们希望清晰的了解到行人的意图和行为;
  6. 高精地图的实时生成

在这些问题中, 目标检测是学术界和工业界共同关注的重点。关于目标检测的讨论,我们可以分为五个维度进行讨论:

  1. 普适性,也就是它是否能在各个场景下(比如极端天气,不同城市场景等)实现满意的检测识别效果;
  2. 识别的质量和效果,我们希望识别的效果尽可能的准确;
  3. 运算效率,我们希望模型不仅效果好,并且跑的快、占用的内存资源较少;
  4. 数据标注的自动化,我们希望用更低的人力和金钱和时间成本获得更有效的数据进行模型训练;
  5. 数据的灵活性,我们希望模型能够适应各种数据类型,比如仿真的模拟数据,经过压缩的数据等。

 3.感知前沿介绍

在感知的五个维度中,检测质量,普适性,计算效率是和自动驾驶汽车的实时性能(onboard)息息相关的, 而其他的两个维度——数据灵活性和标注自动化通常可以线下(offboard)优化,也同样得到了越来越多的关注了。接下来我们也将就这几个维度分别介绍我们的工作。

å¾ç

 图二:自动驾驶感知的五个维度

关于模型普适性,我们不久前发布在ICCV的论文Unsupervised Domain Adaptation for 3D Object Detection via Semantic Point Generation(简称SPG)就是关于这个主题的。 它实现了有效率少参数的模型,能够通过恢复激光雷达的扫描盲区而提高点云质量。同时,它可以在不需要任何额外训练数据的情况下,显著提高检测器在遮挡情况下和在雨天的性能。

图片

 图三:雨天激光雷达的点云显示更加分散

 我们这篇文章的核心思想就是在有限或者不完整的点云输入的情况下,让模型自己去猜测点云的一些细节部分, 所以SPG可以被视作一个联合学习(joint learning)的框架。具体来说,它包括两个部分:分别是3D分割和前景形状恢复。3D分割意味着我们要分类每个前景点云的栅格,看它属于希望被检测的物体还是背景。对于物体的形状,我们会生成新的点来对它进行复原。

所以,这个模型的流程包括以原始点云作为输入,通过前景点的生成,和原始点云进行叠加,再把增强的点云进行输入,用于目标检测。我们把点云恢复后的数据提供给Pointpilars, PV-RCNN等模型,这些模型的总体检测效果也得到了有效提升,并且在很多困难的检测场景中,模型的检测效果得到了更为显著的提升。对PV-RCNN而言,SPG带来的时耗增长在10%左右,还有进一步优化的空间。

图片

图四:SPG通过稀疏点云恢复物体形状 

第二个工作是关于如何提高模型的性能。在3D-MAN: 3D Multi-frame Attention Network for Object Detection这个工作中,我们提出了用注意力机制来学习和融合多帧信息。我们用了一个有效的主干网络来提取潜在特征,再用注意力机制通过参考当前帧的信息和历史帧信息来调整特征。

图片

图五:3D-MAN结构框架 

在Waymo数据集中,我们对于方法进行了测试。我们看到此方法让检测效果有了大幅度提升。

第三个工作是关于如何提高模型的效率——RSN: Range Sparse Net for Efficient, Accurate LIDAR 3D Object Detection。这个工作的出发点是希望在提高检测效果的同时,保证运行速度和内存效率。

这个工作的核心思想是利用点云的稀疏性,最大化的提高运行效率,节省运行时间,而方式是去除去背景部分的点云,从而最大程度的提高效率。这个方法的实现是把点云以Range Image的形式呈现,然后利用网络进行分割,把属于前景点云的特征提取出来。接下来,通过进一步的稀疏特征提取以及Box regression, 我们就可以得到检测结果。

我们也把效果在Waymo数据集中进行了测试,发现相比于PV-RCNN,它在提高了精度的基础上,还非常显著地减少了延时。

刚才讨论的三个话题都是关于线上改进模型的工作,而线上的效果提升非常依赖于车上的计算资源,并且只有很有限的实时信息。而对于线下的效果提升,我们可以拥有更多的计算资源,并且有多种传感器的全局信息,因此在这个大方向,也有很多的工作值得尝试。

针对标注自动化,在Offboard 3D Object Detection from Point Cloud Sequences中,我们提出了一种自动数据标注的方法,它可以使用结构化的信息来提高自动标注和跟踪的效果,并且,我们把算法效果和人工标注的效果进行对比,两者已经非常接近。

这一工作的动机在于人工标注通常非常的耗时耗力,20秒的数据可能需要一个专业标注员数天的时间标注。因此我们的思路是让机器处理绝大多数场景,只把很难处理的场景交给人工标注员去处理或者修饰。

算法流程如下,对于每一帧我们都得到通过检测得到检测框的大小类别,并且进行跟踪,对于静态和动态物体,我们根据运动状态进行分类。接着基于PointNet进行处理,从而得到物体更精确的状态。

结果证明,我们的自动标注结果相比于PointPillars和PV-RCNN,检测精度有了很大的提升。

图片

 图六:自动标注和PointPillars,PV-RCNN检测效果的对比

关于数据的灵活性这一主题,我们在工作SurfelGAN: Synthesizing Realistic Sensor Data for Autonomous Driving中,目标是根据已有的相机和激光雷达数据,让车辆在一个全新的位姿情况下,也能得到接近真实的感知信息。为了实现这个目标,第一步是利用LiDAR和图片信息进行3D重建,然后利用对抗生成网络,我们可以实现效果的增强,包括前景和背景效果的提高。这个工作的应用包括:得到新的视角的图片信息以及实现对于场景中物体的挪动和方向调整。

图片

 图七:利用SurfelGAN实现物体的调整

4.总结

 我们接下来来总结一下今天的课程内容,在今天的课程中,我们了解了一个完整的自动驾驶车辆的系统架构和功能:包括定位,感知和行为预测以及规划。接下来,我们在感知模块展开更详细的介绍,并介绍了比较经典的研究方向。从五个方面,我们介绍了Waymo的五篇经典论文,包括线上和线下的感知,关于这两者的关系,我认为具有强耦合的联系,通过共同推进这两方面的进步,我们可以实现自动驾驶感知能力的进一步提高。

感谢深蓝学员何常鑫同学的整理,非常感谢周寅博士对本文章的审核与修改。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自动驾驶的重要一环:谈谈感知前沿技术 的相关文章

随机推荐

  • 复杂链表的复制(java)

    题目 输入一个复杂链表 xff08 每个节点中有节点值 xff0c 以及两个指针 xff0c 一个指向下一个节点 xff0c 另一个特殊指针指向任意一个节点 xff09 xff0c 返回结果为复制后复杂链表的head xff08 注意 xf
  • CMake学习-添加头文件路径,库路径,库

    CMake中 xff0c 添加头文件路径 xff0c 对应的函数叫include directories 然后在参数中 xff0c 把所有需要添加的路径 xff0c 加进去就可以了 添加库路径 xff0c 对应的函数叫LINK DIRECT
  • Docker Run 命令

    docker run 参数 xff1a e xff1a 向容器内传递环境变量 xff0c 启动容器时用户可以动态传参 v 挂载文件 xff0c 把该容器的数据保存到挂载文件上 p 端口映射 xff08 p 8888 3306 8888宿主机
  • 如何复现论文?什么是论文复现?

    参考资料 xff1a 学习篇 顶会Paper复现方法 知乎 如何读论文 xff1f 复现代码 xff1f 复现代码是什么意思 CSDN 我是如何复现我人生的第一篇论文的 知乎 在我看来 xff0c 论文复现应该有一个大前提和分为两个层次 大
  • Kinect 获取深度图计算距离,并进行彩色图和深度图之间的映射

    Kinect 获取深度图计算距离 xff0c 并进行彩色图和深度图之间的映射 最近所进行的项目需要利用KINECT获取深度距离 xff0c 需要得到彩色图中某一点的位置 xff0c 在网上找了很多资料 xff0c 都不是很好 xff0c 碰
  • 十一个顶级的Git 客户端,绝对很实用!

    导读Git是一种免费开源的分布式版本控制系统 xff0c 可用于处理软件开发及另外几种版本控制任务 它旨在处理大大小小的各种项目 xff0c 并确保速度 效率和数据完整性 Linux用户主要可以通过命令行来管理Git xff0c 不过外面有
  • Windows USB串口接收GPS北斗模块数据和数据说明

    陈拓 2022 05 07 2022 05 09 1 简介 本文以GPS 43 北斗卫星定位授时导航模块HT1818Z3G5L为例 xff0c 在Win10下读数据 产品参数 引脚定义 2 连接PC机和HT1818Z3G5L模块 如图 xf
  • Linux也有全功能杀毒软件啦!

    导读近日 xff0c 瑞星公司推出瑞星杀毒软件Linux全功能版 xff0c 它是一款功能齐全 高性能的企业级安全产品软件 xff0c 并且新增国内首家 文件监控 与 网络监控 功能 xff0c 对Linux系统进行系统和网络双层防护 xf
  • 虚拟现实的起源、发展、爆发与沉淀

    虚拟现实的三生三世 闲来无事翻篇外文 xff0c 本博主并非故意蹭热点 xff08 奸笑 xff09 xff0c 结尾我会细说为何是三生三世 xff0c 不是五生五世 xff1a 虚拟现实远早于这个概念被创造和形式化之前 在这篇描写虚拟现实
  • UCOS消息队列的使用【转】

    UCOS消息队列的使用 转 收藏 消息队列的使用 1 需在以下文件中配置如下内容 OS CFG H OS MAX QS N 你需要的值 根据需要自己配置 define OS Q EN 1 Enable 1 or Disable 0 code
  • to_string函数的用法

    to string 函数 xff1a 将数字常量转换为字符串 xff0c 返回值为转换完毕的字符串 头文件 xff1a include lt string gt string s 61 to string i 将整数i转换为字符串表示形式
  • EKF2学习之控制融合模式

    By snowpang 2017 8 10 1 存储控制状态值 xff0c 并开启状态变化检测 control status value bitmask containing filter control status union filt
  • 经典算法 (四) 桶排序

    时隔一年 xff0c 小葵花课堂再次开课 xff0c 这次开课不会像之前那样很早就停课了 xff0c 在此给大家道个歉 xff1a 对不起 嘻嘻 又到了毕业季了 xff0c 废话不多说 xff0c 继续我们的算法学习 一丶算法描述 桶排序
  • 程序调试记录(纯自用)

    Stack类测试 xff1a 在测试Stck类型的变量内容是否正确时 xff0c 经常会通过把所有值pop出来输出的方法 xff0c 这样容易造成一个问题就是 xff0c 栈已经被弄空了 xff0c 以后再用的时候就会是一个空栈 所以 xf
  • vector详解

    引言 emmm 这篇博客写作的缘由其实就是我在日常使用vector的时候发现对vector并不怎么了解所以决定写这篇博客的 写这篇博客 xff0c 我参考了vector C 43 43 Reference中的内容 xff0c 及侯捷先生的
  • Eigen快速入门

    Eigen快速入门 一个简单的例子 span class hljs preprocessor include lt iostream gt span span class hljs preprocessor include 34 Eigen
  • PX4 的 ECL EKF 公式推导及代码解析

    原创作者 USRL所长 64 CSDN 文章来源 https blog csdn net u010307048 article details 100553475 如需转载联系联系原创作者 作者整理的内容如下 xff0c 干货很多 xff0
  • git fatal: The remote end hung up unexpectedly错误解决方法

    在使用git更新或提交项目时候出现 34 fatal The remote end hung up unexpectedly 34 原因是推送的文件太大 那就简单了 xff0c 要么是缓存不够 xff0c 要么是网络不行 xff0c 要么墙
  • 公开课精华|机器人的带约束轨迹规划

    本文章总结于大疆前技术总监 xff0c 目前在卡内基梅隆大学读博的杨硕博士在深蓝学院的关于机器人的带约束轨迹规划的公开课演讲内容 全文约5000字 笔者不是机器人领域的 xff0c 因此特地去了解了一下杨硕博士 xff0c 深感佩服 xff
  • 自动驾驶的重要一环:谈谈感知前沿技术

    本文总结于Waymo研发经理周寅于2021年8月29日在深蓝学院的讲座 讲座内容主要包括自动驾驶系统的总览 xff0c 自动驾驶感知的介绍 xff0c 以及感知的前沿动态和总结 1 自动驾驶系统总览 关于自动驾驶系统 目前主流的L4级别自动