本文笔记来源:商汤科技高级研究员李弘扬的公开课
大佬讲的公开课,受益匪浅,值得学习,作为一次记录
1. 1 团队介绍
商汤科技自动驾驶团队依托公司为背景,以 SenseParrots 作为基础平台,进行超大规模的网络学习;在自动驾驶的核心技术方面,从视觉感知、激光雷达感知、多传感器融合等多方面持续发力;在产品应用的层面上,团队在车路协同、V2X 等方面都有不同级别和维度的项目在持续推进当中。团队的研究分为两个维度:L4 级别自动驾驶的落地和从 L0 到 L2 级别辅助驾驶的落地。
1.2 自动驾驶算法流程概述
Source from Apollo; revised
首先介绍自动驾驶在感知算法层面的流程图,数据处理模块是非常重要和关键的模块,其中包括大规模数据采集,车道线上传以及自动标注等过程。Image signal Processing(ISP)模块用于调节性噪比、白平衡、颜色通道等成像质量方面的内容。Network training & Optimization 用于 Object detection 、Lane detection 相关的工作。自动驾驶是一个非常复杂的系统,需要多传感器的融合,比如需要结合车道线的检测结果与自车信息进行在线标定,再结合车辆自身的 GPS、惯导等信息,动态地来输出车身位姿等 3D Geometry。随后将最终的车道线与目标检测结果输入到决策规划控制模块。
本次课程主要介绍 Object Detection 和 Lane Detection,包括在单目和 3D 两个 setting 下的工作的介绍。
Part 2 3D 物体检测
2.1 背景介绍
3D 目标检测在整个自动驾驶的 Pipeline 里是非常重要的一环,轨迹预测、意图判断、报警、规划控制等环节需要有 3D 信息作为输入源。其中一种检测方案,是直接使用 Lidar、Radar 等带有 3D 信息的传感器,或者使用 Camera,通过网络学习 2D 到 3D 的映射关系。Camera 所需的配置比较简单,成本低;在实际的工程化落地的过程当中,在雨雪或雾霾天气下,Camera 的鲁棒性要更高,且检测距离更远,30 fov 的相机可以达到 300 米。
有关 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 信息。
本工作的方案分成两部分。上支路预测定位信息,即 location;下支路对单个目标预测关键点的 heatmap,location,输出局部朝向信息 。将局部预测结果投回到全局空间,输出最终的 3D 检测结果。
实验结果表明,性能得到了明显的提高,并且可以较好地嵌入 M3D-RPN 网络。且不同距离下的误差较为稳定。
2.3 Exploring Intermediate Representation for Monocular Vehicle Pose Estimation
这项工作主要解决外参变化的影响。车辆行驶中的颠簸会引起外参的变化,导致 3D 检测的深度预测不太准。这种任务需要额外的分支去预测外参,利用估算出来的相机外参把 Backbone 提出来的 feature 变化到同一个视角下,对同一视角的 feature 做 2D 检测和 3D 检测回归。
实验结果表明,在不同视角下获得的效果比较明显,尤其在颠簸路段,可以使稳定性获得较大提升。
2.4 总结
● 增加多种图像平面的检测点,用于辅助提升 3D 检测的性能
● 增加 2D 和 3D 的一致性约束,有助于模型性能提升
● 深度信息对 3D 目标检测性能提升明显,对截断目标也有一定帮助
● BEV 视角下的 3D 检测能将任务简化,对远近目标不一致问题又较大的优化
● 利用模型估算相机外参数,可以提升模型的泛化性能
Part 3 3D车道线检测
3.1 问题介绍与动机
车道线检测是从图像分割开始的,但由于在实际控制规划等后续模块中,需要在世界坐标系下,所以车道线检测有以下几个步骤:图像平面的车道线检测、投影到 (水平) 地面 (IPM, inverse perspective mapping)、根据车道线模型进行拟合等后处理。
但是这种方法存在一定的问题。如果用单目去做车道线检测,不依托别的模块,比如说在线标定等,车道线会在 BEV 下出现非常严重的抖动,且水平路面假设在复杂场景 (上下坡等) 不成立。学术数据集 (CULane/TuSimple等) 在线型/路沿等 attribute 上的缺失,与量产应用存在差异 。
3.2 现有工作介绍
AAAI 2018 https://arxiv.org/abs/2103.12040
In ArXiv https://arxiv.org/abs/1712.06080
从 2D 的经典的方法,例如 Special CNN 开始考虑,基于分割的任务去做 multi class 的分割,预测四条车道线。这个方法非常经典,但也有些不足,如固定的数量多车道线、需要聚类等后处理、模型比较大等。
一些 SOTA 的方法,如 LaneAF 引入了 Affinity Fields 的概念,打破了固定数量的限制。另外还有一些 Row-wise 的方法,其中比较代表性的是 CondLaneNet,这是阿里的一个工作,利用 conditional convolution,实现了更精细的车道线检测,并且引入了 Recurrent instance module 用于解决车道线分叉场景。
在 Anchor based 的 LaneATT 中,用一条线作为 anchor,并且在整个图片的左右、下面设置了上千个 anchor,对车道线关于 anchor 的 offset 进行回归,在车道线检测方面提升了很多点。
在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等
Part 4 实际量产方面对感知模块的需求和思考
在学术界中,以自动驾驶为例,需要检测图像里面所有的物体,mAP 越高越好,但在工业界,我们只关心 CIPO(危险目标),且泛化能力一定要强,并且需要考虑算力与性能的 trade off。
从纯学术技术到量产落地:工业界考量因素
● Philosophy 1: 相对自车,更关心前方物体和左右车道线,要求性能 maximize in all circumstances
● Philosophy 2: 相比bounding box,更关心3D空间下(x,y,z)的 物体间位置关系,即物体位置(深度)、速度、 加速度、轨迹
● Philosophy 3: 性能很重要,同时关心模型在某款芯片上部署时的 效率问题;希望多任务学习,最大化利用芯片资源
● Philosophy 4: 大规模数据采集、处理、部署
Part 5 Q&A
1. 请问多任务方案是怎么做的?
多任务方案大致有两个派别,一个是从 optimization 的角度算 loss,另一个是改网络的 architecture。多任务学习最重要的就是 task A 和 task B,同时学的时候能不能互相帮助,甚至带来提升。前提是这两个任务要比较像,例如 tracking 和 detection 是前后模块,有高度绑定的关系,可以互相来提升。或者引入一个额外的任务,其中包含 feature 或者 domain knowledge,帮助 task A 和 task B 同时提升。
2. 前向运动 co-image 是不是会退化?
激光雷达是一圈采集,转一圈只打一个点。在自车有运动的情况下,确实会有一些畸变。自车相对其他静止目标的畸变可以靠自车的运动信息做补偿。如果自车和其他目标之间有相对运动,只靠自车信息补偿是不够的。在数据出真值的时候,根据多帧的信息去判断,做一个运动模型,根据这个运动模型,对目标车上的激光雷达点云做补偿。
3. 深度信息如何获得?
深度信息可以直接通过激光点云获得。
往期推荐阅读:
王博Kings:无人驾驶系列知识入门到提高4--动态环境感知与2D检测
王博Kings:无人驾驶系列知识入门到提高5--动态环境感知与3D检测
王博Kings:无人驾驶系列知识入门到提高6-动态环境感知与跟踪
王博Kings:无人驾驶系列知识入门到提高7-高精度地图 V2X HD MAP