Py学习  »  机器学习算法

自动驾驶地图中的深度学习

3D视觉工坊 • 1 年前 • 199 次点击  
作者丨水管工张师傅@知乎
来源丨https://zhuanlan.zhihu.com/p/488024649
编辑丨3D视觉工坊
记录自己对刘兰个川大神文章的理解。
原文为:(貌似要翻墙)
https://link.zhihu.com/?target=https%3A//towardsdatascience.com/deep-learning-in-mapping-for-autonomous-driving-9e33ee951a44

1.离线地图vs在线地图

离线地图:
离线地图的数据源可以是卫星图像,也可以是由相机或激光雷达等车载传感器收集的数据。它可能来自同一辆车通过同一地点的多次通行,也可能来自众多车辆的拼接。地图的渲染(rending)是离线构建的,需要人工注释者在地图上注释语义信息并查看最终结果。传统的地图服务是以这种离线方式工作的,然后注释和策划的地图被提供给道路上的车辆。
在线地图:
在线地图是实时在车上或机器人上进行的。典型的例子SLAM(但是SLAM实时建图过于稀疏?)。最近,语义SLAM(semantic SLAM)专注于道路上表面标记的几何和语义,作为一种轻量级的建图方法进行了探索。此外,单目相机实时建立语义地图(monoSOM)是一个热门话题,它使用神经网络将来自多个摄像头的单目图像的时间序列融合到语义鸟瞰图中。(在其他文章中写)

2.SD Maps vs HD Maps

根据传入数据分辨率的的不同,分为两种地图。
拓扑地图(SD Maps),例如道路网络,通常不包含车道级别的信息。它们只需要相对低分辨率的图像,精度大约为米级(图左)。
高清地图(HD Maps),:侧重于提取车道级别的信息,例如车道线、路面箭头和其他语义标记。这需要分辨率更高、精度达到厘米级的图像。相应地,这两种类型的地图在本文的其余部分将被松散地称为SD地图和HD地图(图右上)。
附:HD MAP 的文章:HDMapNet: An Online HD Map Construction and Evaluation Framework
是清华大学赵行老师的文章,非常强的一个组!

1.SD映射(Road Topology Discovery)

深度学习在地图绘制上的早期应用侧重于从相对低分辨率的航拍图像中提取道路级拓扑。深度学习为 SD Map创建了一种经济实惠的解决方案,覆盖范围广。SD Map中生成的道路拓扑的主要目的在自动驾驶环境中相对有限——用于路由和导航。然而,其中一些研究中提出的方法与后来的高清地图工作高度相关,因此在这里进行了回顾。

1.DeepRoadMapper (ICCV 2017)

接收从卫星获得的航拍图像并创建结构化的道路网络。它首先执行语义分割,并在生成的道路图上运行细化和修剪算法。由于语义分割的不准确(树木、建筑物等的遮挡),许多道路都处于断开状态。为了解决这个问题,DeepRoadMapper 使用 A* 搜索算法生成连接假设以缩小差距。

2.RoadTracer (CVPR 2018)

注意到不可靠的语义分割结果,并将其作为中间表示消除。它使用迭代图构造来直接获得道路的拓扑结构。该算法需要做出决定,朝着某个方向迈出一定的距离,类似于强化学习环境中的问题。

3.PolyMapper(ICCV 2019)

灵感可能来自RoadTracer,它还消除了中间表示。它明确地统一了不同类型对象(包括道路和建筑街区)的形状表示,并将它们表示为闭合多边形。该公式是非常聪明和干净的,遵循迷宫墙追随者算法。
PolyMapper 使用 Mask RCNN 架构来提取建筑物和道路的边界掩码。基于掩码,它提取顶点,找到起始顶点,并使用 RNN 对所有顶点进行自回归迭代以形成闭合多边形。
PolyMapper的网络结构
RoadTracer 和 PolyMapper 中地图结构化表示的自回归生成与HD Map中使用的非常相似。

2.HD Mapping (Lane Level Information Extraction)

为什么需要:
SD 地图缺乏自动驾驶汽车安全定位和运动规划所需的精细细节和准确性。高清地图对于自动驾驶是必要的。高清地图生成通常采用更高分辨率的鸟瞰 (BEV) 图像,通过拼接车载摄像头图像和/或激光雷达扫描生成。

1.HRAN (Hierarchical Recurrent Attention Networks for Structured Online Maps, CVPR 2018)

对道路进行稀疏点云扫描,并输出包含车道边界实例的道路网络的结构化表示。它首先迭代地找到每条车道线的起点,然后对于每条车道线,迭代地沿着这条线绘制下一个顶点。这两个 RNN 以分层方式组织,因此命名为 HRAN——分层循环注意网络。
Hierarchical recurrent attention networks
它提出了polyline loss(折线损失)的思想,以鼓励神经网络输出结构化的折线。折线损失测量地面实况折线边缘的偏差及其预测。这比顶点上的距离更合适,因为存在许多绘制等效折线的方法。
Polyline loss (又叫 Chamfer distance loss) 更注意形状而不是顶点位置
HRAN 使用每像素 5 厘米的分辨率,并在 20 厘米精度内实现 0.91 次recall。主要故障模式来自错过或额外的车道线。请注意,100% 的准确率不一定是最终目标,因为注释者仍需要手动查看这些图像并修复它们。这些失败案例可以相对容易地修复。在后来的工作 Deep Boundary Extractor 中使用的高度梯度图可能能够修复护栏被误认为车道线的 FP 情况。
HRAN的分辨情况

2.Deep Structured Crosswalk(End-to-End Deep Structured Models for Drawing Crosswalks, ECCV 2018)

从激光雷达点和相机图像(激光雷达 + RGB = 4 通道)生成的 BEV 图像中提取结构化人行横道。该网络生成三个不同的特征图——语义分割、轮廓检测以及直接监督定义人行横道方向的角度。
这项工作在某种意义上并不完全是端到端的,因为流程的最终目标是生成两个结构化的、定向的人行横道边界。为了获得结构化的边界,三个中间特征图以及一个粗略的地图(OpenStreetMaps,它提供道路中心线和交叉路口多边形)被输入到能量最大化管道中,以找到人行横道的最佳边界和方向角。
Deep Structured Crosswalk 流程图
注:上述结果是通过多次驾驶产生的输入离线获得的。该模型还可以通过同一位置单次在线运行,并可以实现类似的性能,但在线生成的图像质量差的附加故障模式。

3.Deep Boundary Extractor(Convolutional Recurrent Network for Road Boundary Extraction, CVPR 2019)

使用折线提取道路边界。它受到 Deep Structured Crosswalk 的启发,并使用卷积 RNN(卷积 Snake,或 cSnake)以自回归方式进行预测。输入通过添加一个额外的激光雷达高度梯度通道来扩展深度结构化人行横道的输入,该通道是通过采用 Sobel 过滤的激光雷达 BEV 地图的幅度生成的。cSnake 网络迭代地处理旋转的 ROI,并输出对应于道路边界的折线的顶点。它首先预测端点。基于每个端点,它以端点为中心裁剪和旋转特征图块并定位下一个点。上述过程自回归运行。
Deep Boundary Extractore的网络结构
Deep Boundary Extractor 以 4 cm/pixel 的输入分辨率运行,实现了 ~0.90 的逐点 F1 分数和 0.993 的拓扑精度。

4.DAGMapper (Learning to Map by Discovering Lane Topology, ICCV 2019)

将HRAN的结构型车道线提取工作更进一步,并专注于像岔路口和汇集等更复杂的情况。它采用激光雷达强度地图并输出DAG(定向非循环图),而不是HRAN中的简单折线。
DAGMapper的核心中,也是一个recurrent的卷积头,可迭代地参加围绕最后一个预测点以围绕最后一个预测点为中心的裁剪特征地图补丁,并预测下一个点的位置。变化的是它还可以预测要汇集,岔路或继续的点的状态。
DAGMapper 网路结构

总结:

1.离线地图的深度学习要有人的参与。深度学习的结果需要结构化,以便于自动驾驶堆栈使用,并便于人类注释者修改。(这句不太懂什么意思)
原文:Deep learning for offline mapping has a human in the loop. The results of deep learning need to be structured to be readily consumable by an autonomous driving stack and easily modifiable by the human annotator.
2.当前的高清地图应用主要集中在提取道路边界、车道线(包括合并和分叉)和人行横道边界。
3.所有HD地图研究的核心构建块是一个循环卷积网络,该网络迭代地获取以当前注释点为中心的裁剪特征地图,并预测下一个注释点。
本文仅做学术分享,如有侵权,请联系删文。

3D视觉工坊精品课程官网:3dcver.com

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现
11.自动驾驶中的深度学习模型部署实战
12.相机模型与标定(单目+双目+鱼眼)
13.重磅!四旋翼飞行器:算法与实战
14.ROS2从入门到精通:理论与实战
15.国内首个3D缺陷检测教程:理论、源码与实战

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。


一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列三维点云系列结构光系列手眼标定相机标定激光/视觉SLAM自动驾驶)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
 圈里有高质量教程资料、答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~  

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/133262
 
199 次点击