盘一盘面向量产的3D目标与车道线检测

作者 | 王博Kings  编辑 | 汽车人

原文链接:https://zhuanlan.zhihu.com/p/391718860?

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【车道线检测】技术交流群

后台回复【车道线综述】获取基于检测、分割、分类、曲线拟合等近几十篇学习论文!

1. 1 团队介绍

3e079d6af6fbc3b12af086a54f07522d.png

商汤科技自动驾驶团队依托公司为背景,以 SenseParrots 作为基础平台,进行超大规模的网络学习;在自动驾驶的核心技术方面,从视觉感知、激光雷达感知、多传感器融合等多方面持续发力;在产品应用的层面上,团队在车路协同、V2X 等方面都有不同级别和维度的项目在持续推进当中。团队的研究分为两个维度:L4 级别自动驾驶的落地和从 L0 到 L2 级别辅助驾驶的落地。

1.2 自动驾驶算法流程概述

a4e96c56d31da195142b700ea327c06f.png

Source from Apollo; revised

首先介绍自动驾驶在感知算法层面的流程图,数据处理模块是非常重要和关键的模块,其中包括大规模数据采集,车道线上传以及自动标注等过程。Image signal Processing(ISP)模块用于调节性噪比、白平衡、颜色通道等成像质量方面的内容。Network training & Optimization 用于 Object detection 、Lane detection 相关的工作。自动驾驶是一个非常复杂的系统,需要多传感器的融合,比如需要结合车道线的检测结果与自车信息进行在线标定,再结合车辆自身的 GPS、惯导等信息,动态地来输出车身位姿等 3D Geometry。随后将最终的车道线与目标检测结果输入到决策规划控制模块。

本次课程主要介绍 Object Detection 和 Lane Detection,包括在单目和 3D 两个 setting 下的工作的介绍。

1Part 2 3D 物体检测

2.1 背景介绍

3D 目标检测在整个自动驾驶的 Pipeline 里是非常重要的一环,轨迹预测、意图判断、报警、规划控制等环节需要有 3D 信息作为输入源。其中一种检测方案,是直接使用 Lidar、Radar 等带有 3D 信息的传感器,或者使用 Camera,通过网络学习 2D 到 3D 的映射关系。Camera 所需的配置比较简单,成本低;在实际的工程化落地的过程当中,在雨雪或雾霾天气下,Camera 的鲁棒性要更高,且检测距离更远,30 fov 的相机可以达到 300 米。

f058442033fe4400ae4887ed788c7d2e.png

有关 3D 检测任务的 paper 大致可以分成两类。第一类是 Pseudo-Lidar 的方法,通过 image 的 depth map 和对应的 image 的信息,投影到世界坐标系下,再套一个 3D 点云检测的 Pipeline,就可以进行预测。这种方法的优势是受内外参影响比较小,在 BEV 视角检测可以缓解目标远近尺寸不一致的问题,且朝向回归更加直观。第二类是直接通过 image 进行回归,对图片做预处理和 feature 提取后得到中间结果,利用这些结果做网络的 forward,得到最终的 3D 结果。此种方案更加受欢迎,且耗时较小。

在实际应用中,3D 检测任务存在一些问题,例如 Mono3D 模型对内外参依赖严重,截断、遮挡目标的检测性能下降明显、远距离小目标检测性能下降明显等。

从这些问题出发,下面将介绍本团队的一些研究工作。

2.2 Monocular 3D Object Detection: An Extrinsic Parameter Free Approach

本工作的出发点在于,目前 3D 物体检测对朝向的预测不太准确,希望能够做一些额外的优化。其次希望不直接去回归 3D 检测框,而是利用中间的结果,对中间结果做一些约束,再通过 Geometry 的变化得到 3D 信息。

06caf1e5389544945f4eaf77b4bd6054.png

本工作的方案分成两部分。上支路预测定位信息,即 location;下支路对单个目标预测关键点的 heatmap,location,输出局部朝向信息 。将局部预测结果投回到全局空间,输出最终的 3D 检测结果。

70b0c8094df62e1cb01f325dbd7107d3.png

实验结果表明,性能得到了明显的提高,并且可以较好地嵌入 M3D-RPN 网络。且不同距离下的误差较为稳定。

2.3 Exploring Intermediate Representation for Monocular Vehicle Pose Estimation

2a9c87880e103bcb0da23b912d70cf6f.png

这项工作主要解决外参变化的影响。车辆行驶中的颠簸会引起外参的变化,导致 3D 检测的深度预测不太准。这种任务需要额外的分支去预测外参,利用估算出来的相机外参把 Backbone 提出来的 feature 变化到同一个视角下,对同一视角的 feature 做 2D 检测和 3D 检测回归。

410ef33a14447a61e50f4dd23fd32a8d.png

实验结果表明,在不同视角下获得的效果比较明显,尤其在颠簸路段,可以使稳定性获得较大提升。

2.4 总结

  • 增加多种图像平面的检测点,用于辅助提升 3D 检测的性能

  • 增加 2D 和 3D 的一致性约束,有助于模型性能提升

  • 深度信息对 3D 目标检测性能提升明显,对截断目标也有一定帮助

  • BEV 视角下的 3D 检测能将任务简化,对远近目标不一致问题又较大的优化

  • 利用模型估算相机外参数,可以提升模型的泛化性能

2Part 3 3D车道线检测

3.1 问题介绍与动机

车道线检测是从图像分割开始的,但由于在实际控制规划等后续模块中,需要在世界坐标系下,所以车道线检测有以下几个步骤:图像平面的车道线检测、投影到 (水平) 地面 (IPM, inverse perspective mapping)、根据车道线模型进行拟合等后处理。

但是这种方法存在一定的问题。如果用单目去做车道线检测,不依托别的模块,比如说在线标定等,车道线会在 BEV 下出现非常严重的抖动,且水平路面假设在复杂场景 (上下坡等) 不成立。学术数据集 (CULane/TuSimple等) 在线型/路沿等 attribute 上的缺失,与量产应用存在差异 。

3.2 现有工作介绍

f5a50230e7d11f0e6d51c01128b1427f.png

AAAI 2018 https://arxiv.org/abs/2103.12040

In ArXiv https://arxiv.org/abs/1712.06080

从 2D 的经典的方法,例如 Special CNN 开始考虑,基于分割的任务去做 multi class 的分割,预测四条车道线。这个方法非常经典,但也有些不足,如固定的数量多车道线、需要聚类等后处理、模型比较大等。

1e6fba5428f796e823341a53e06f404c.png

一些 SOTA 的方法,如 LaneAF 引入了 Affinity Fields 的概念,打破了固定数量的限制。另外还有一些 Row-wise 的方法,其中比较代表性的是 CondLaneNet,这是阿里的一个工作,利用 conditional convolution,实现了更精细的车道线检测,并且引入了 Recurrent instance module 用于解决车道线分叉场景。

在 Anchor based 的 LaneATT 中,用一条线作为 anchor,并且在整个图片的左右、下面设置了上千个 anchor,对车道线关于 anchor 的 offset 进行回归,在车道线检测方面提升了很多点。

d098c24952a5c7874566281ea3a8330e.png

在3D车道线检测中具有代表性的是 3D-LaneNet 和 Gen-LaneNet。

3D-LaneNet 是一个一阶段模型,采用了 Anchor Based 的方法;Gen-LaneNet 是基于 3D-LaneNet 的提升,它是一个二阶段模型。第一阶段首先对 2D 层面进行图像分割,然后利用外参的真值将分割的图像投影到 virtual top view,最终预测得到 3D 下的结果。

3.3 未来可延伸方向讨论

在模型方面:

  • Learning-based Online Calibration

  • Incorporating Temporal Info

  • Take-aways from 2D Lane Detection

  • Take-aways from Depth Estimation, Object Detection, Multi-task learning

在数据集方面:

  • Real world 3D Evaluation Metrics

  • AP/F1 in different x/y

  • Category/type:虚/实/黄/白

  • Others:路沿/Stopline等

3Part 4 实际量产方面对感知模块的需求和思考

在学术界中,以自动驾驶为例,需要检测图像里面所有的物体,mAP 越高越好,但在工业界,我们只关心 CIPO(危险目标),且泛化能力一定要强,并且需要考虑算力与性能的 trade off。

从纯学术技术到量产落地:工业界考量因素

  • Philosophy 1: 相对自车,更关心前方物体和左右车道线,要求性能 maximize in all circumstances

  • Philosophy 2: 相比bounding box,更关心3D空间下(x,y,z)的 物体间位置关系,即物体位置(深度)、速度、 加速度、轨迹

  • Philosophy 3: 性能很重要,同时关心模型在某款芯片上部署时的 效率问题;希望多任务学习,最大化利用芯片资源

  • Philosophy 4: 大规模数据采集、处理、部署

4Part 5 Q&A

1. 请问多任务方案是怎么做的?

多任务方案大致有两个派别,一个是从 optimization 的角度算 loss,另一个是改网络的 architecture。多任务学习最重要的就是 task A 和 task B,同时学的时候能不能互相帮助,甚至带来提升。前提是这两个任务要比较像,例如 tracking 和 detection 是前后模块,有高度绑定的关系,可以互相来提升。或者引入一个额外的任务,其中包含 feature 或者 domain knowledge,帮助 task A 和 task B 同时提升。

2. 前向运动 co-image 是不是会退化?

激光雷达是一圈采集,转一圈只打一个点。在自车有运动的情况下,确实会有一些畸变。自车相对其他静止目标的畸变可以靠自车的运动信息做补偿。如果自车和其他目标之间有相对运动,只靠自车信息补偿是不够的。在数据出真值的时候,根据多帧的信息去判断,做一个运动模型,根据这个运动模型,对目标车上的激光雷达点云做补偿。

3. 深度信息如何获得?

深度信息可以直接通过激光点云获得。

国内首个自动驾驶学习社区

近1000人的交流社区,和20+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

72f729f7c1da310617a765f688c7d162.jpeg

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向;

d87ef2213d58e1f7991d6104a4121eab.jpeg

添加汽车人助理微信邀请入群

备注:学校/公司+方向+昵称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值