【泡泡图灵智库】基于稀疏的语义特征的道路建图与定位
基于稀疏的语义特征的道路建图与定位
标题:Road Mapping and Localiztion using Sparse Semantic Visual Features
作者:Wentao Cheng, Sheng Yang, Maomin Zhou, Ziyuan Liu, Yiming Chen, Mingyang Li
来源:RA-L 2021
编译: 方川
审核: zhuhu
大家好,这是泡泡图灵智库推送的第682篇文章,欢迎个人转发朋友圈;其他机构或自媒体如需转载,后台留言申请授权.
今天给大家带来的是Ra-L最新的一篇语义SLAM工作: Road Mapping and Localiztion using Sparse Semantic Visual Features. 这篇工作提取室外道路环境中的稀疏语义特征,基于这些语义特征点设计一套完整的离线建图和在线定位流程,在自动驾驶任务中提高了建图和定位的精度和效率。
摘要:
我们通过提取、建模和优化道路上的语义元素,为自动驾驶汽车提出一种新的视觉建图与定位方法。具体的,我们提出一种级联的深度学习模型来检测道路上的标准语义元素,进而提高位姿精度并且压缩地图大小。对于路灯、标志牌、车道指示符号用深度特征点构成的轮廓形状来建模检测到的这些语义元素,使用三次样条曲线来参数化车道线。基于道路上的语义元素,我们建立了完整的建图语定位管线:a) 新的图像处理前端. b) 语义元素融合方案. c) 优化后端. 通过在公共数据集和我们自己测试平台上的实验,证明了我们方法相对于传统方法的有效性和优势。
主要贡献:
一个用于提取语义特征的卷积神经网络的图像处理前端; 参数化道路元素并且设计损失函数的方法; 可以用于离线建图和在线定位的语义优化模块;
算法流程:
我们方法的系统框图如下图所示:
蓝色线段连接的是构建紧凑的语义地图的过程,绿色线段连接的是利用构建好的地图进行在线定位过程。建图过程包括每个图像关键帧上的特征提取、跟踪,位姿估计与优化,以及利用这些语义特征点的回环检测,最后这些相机位姿和地图点被压缩为“地图数据”,为定位过程所用。在定位过程中,我们利用离线地图来完成相机定位,并且提出一种混合式的检测、跟踪策略,来减轻端上感知模块的负担。
道路标准元素:
本文制定了三类道路语义元素,总共10种元素:
需要说明的是,这里我们使用角点构成的结构轮廓来表示这些元素,而且在车道线solid line or dash line上对车道线轮廓进行均匀采样,得到更多的特征点。
特征检测和跟踪:
two-stage的检测过程会先提取实例级的语义元素bbox, 然后得到这些bbox中的被编码的轮廓角点。本文中使用的感知前端参考人体位姿估计的CenterNet,可以提取多个物体bbox和特征点;特征点的表示方式(描述子)用LaneNet中的一个head来产生,并且使三种不同类型的语义元素的特征角点描述子具有唯一性。具体的Heads设计如下表所示:
在tracking过程中,IMU预积分得到的作为相对位姿的初值. Ground Objects可以提供路面约束也被应用到相机位姿的估计中, 具体的: . 另外,我们使用instance-wise和pixel-wise的帧间数据关联策略来跟踪Ground Objects。对于的竖直的Pole Objects语义特征如路灯、标志牌,我们提取FREAK描述子然后使用光流法追踪。
和代表同一个地图点在两个相邻关键帧之间的投影。
车道线的参数化:
本文使用分段的三次样条曲线来表示车道线的左、右轮廓。四个连续控制点将决定一条三次样条曲线:
描述控制点处的曲线的弯曲程度. 和为中间控制点. 我们用公式(1)反投影这些Ground Objects的角点, 进而达到初始化样条曲线控制点的目的. 反投影得到的相机空间中Ground Objects角点集合 ,其中表示相机。在这些点中随机选取N个来初始化控制点, 选取的损失函数:
我们为每条样条曲线随机生成500个控制点序列,通过公式(3)挑选最好的序列,这种方法与B样条曲线或贝塞尔曲线相比, 允许我们可以随机出初始化。
##状态估计器:
语义元素的notation:
为了把语义特征引入到状态估计过程,我们设计了5中优化变量:
检测到的语义特征点对应的3D空间点 ;
相机可视范围内的Ground Objects对应的地面参数, ;
Pole Objects的竖直平面参数, 如路灯;
用来描述Lanes Object的每个样条曲线的控制点;
用来初始化样条曲线的数据关联变量;
基于这些优化变量,我们对每个图像关键帧的位姿应用了三种类型约束:
Point observation factors:
是图像上检测到的特征点,是检测噪声的方差
Spline observation factors:
我们单独把空间中拟合的样条曲线作为一个约束, 为图像上检测到的Lanes 的角点或采样角点. 可以视为能够动态关联Lanes' 控制点与的参数.
Coplanar prior factors:
水平地面约束和竖直平面约束都被考虑.
初始化Ground objects和Pole objects:
本文使用GNSS-VIO给出的位姿初始化所有语义特征点, 即优化变量1);
利用Ground Objects的空间点1) 来初始化地面参数;
竖直平面约束 与重力方向垂直, 在VIO初始化之后也随之被确定;
初始化样条曲线:
样条曲线的初始化可以根据公式(2)、(3)完成
离线建图:初始化上述变量后,我们在vio基础上得到一个因子图来优化上述factors:
融合水平地面、竖直平面、语义特征点、Lanes'样条曲线控制点,对相机位姿产生约束.
在线定位:
在定位阶段, 我们把地图点固定, 利用公式(4)、公式(5)约束相机位姿.
重定位和地图点合并:
在重定位阶段, 我们直接利用这些3D 语义地图点来完成语义元素的重识别, 抛弃了传统的视觉词包的重定位方法. 因为重复的语义元素在我们整个运行轨迹中还是比较稀疏的. 然后我们利用混合的dl语义特征和传统GFTT特征, 来完成地图点合并.
语义地图的数据结构:
语义地图 包括观测数据 , 地图点 , 共视关系图 . 对于每一个观测数据(图像), 保存它在世界坐标系的位姿和最邻近的GNSS测量(方便在线定位过程中GPS检索). 每一个地图点,我们只存储它的位置和语义标签信息,不保存特征描述子.
基于语义地图的定位:
定位过程的状态机流程如上图所示, 首先根据GPS信息将地图与wgs坐标align起来,然后利用GPS信息进行粗定位,进入local search模式. 在local search模式中, 获取地图点子集, 通过解PnP问题得到当前图像帧在语义地图中的位姿.
在tracking过程,我们有loose tracking和tight tracking两种模式。通过将所有地图点投影到当前帧,根据Hungarain mathcing策略来建立projective asscociation:
实验:
在KAIST数据集和我们自己采集的两段数据集上进行实验。
视觉感知模块实验:
首先利用了KAIST数据集上的3207张单目相机图像来训练和测试我们的前端深度学习模型,在测试集上的测试的分类精度、检测召回率、角点的精度结果如Fig.5和Table III所示
建图语定位实验:
我们将本文方法与传统视觉建图方法对比, 传统视觉建图方法选用FREAK描述子. 两种地图的可视化如下图:
为了使两种方法得到的地图文件大小相近, 我们对传统建图结果的地图进行了压缩, 同时将FREAK描述子压缩位一个10维向量. 我们在实验中把压缩算法的参数作为一个变量, 列在我们的Self-Relocalization实验和Cross-Relocalization实验结果中: 图标纵轴位定位的Translational RMSE:
另外, 我们还对定位阶段中, 不同tracking model下的语义观测的数据关联的运行时消耗进行了统计. 在视觉前端感知模块中, Lanes的感知需要17.6ms/693Mb, 语义特征角点的提取需要7.5ms/422Mb, 其他物体和特征点的提取需要17.6ms/1177Mb. 在定位模块中, local seach模式平均运行耗时300ms, loos tracking和tight tracking模式运行耗时小于1ms.