论文标题:
Monocular Localization with Semantics Map for Autonomous Vehicles
论文作者:
Jixiang Wan, Xudong Zhang, Shuzhou Dong, Yuwei Zhang, Yuchen Yang, Ruoxi Wu, Ye Jiang, Jijunnan Li, Jinquan Lin, Ming Yang
作者单位:OPPO研究院、上海交通大学
导读:
该研究提出一种轻量级视觉语义定位算法,以解决自动驾驶中的定位难题。算法使用稳定语义特征替代易变的纹理特征,通过离线构建语义地图并在线关联实时数据进行定位,提高了定位的准确性和效率。实验验证表明,该方法适用于多种自动驾驶场景,是可靠的定位技术。©️【深蓝AI】编译
1. 摘要
对于自动驾驶汽车而言,实现精确且鲁棒的定位依旧是当下的一个重大挑战。传感器的成本以及本地计算效率的局限性,使得该技术难以扩展到大规模的商业应用中。传统的基于视觉的方法侧重于易受光照、季节、视角和外观变化影响的纹理特征。此外,带有描述符的地图的庞大存储容量及复杂的优化过程也阻碍了系统性能。为了平衡效率与准确性,本文提出了一种新颖的轻量级视觉语义定位算法,该算法采用稳定的语义特征而非低级别的纹理特征。首先,通过摄像头或LiDAR传感器检测地面标记、车道线、柱子等语义对象,在离线状态下构建语义地图。随后,通过在线关联视觉数据中的语义特征与地图对象来进行实时定位。本文在公开的KAIST城市数据集以及本文自行记录的场景中评估了提出的定位框架。实验结果表明,本文的方法在多种自动驾驶定位任务中是一种可靠且实用的解决方案。
2. 介绍
自动驾驶技术近期备受关注,核心在于自我定位,对安全、路径规划至关重要,但需平衡成本与精度。GPS-RTK与LiDAR虽精度高,成本问题限制其普及,故转向成本效益好的视觉传感器,特别是摄像头。
视觉定位技术,特别是PnP问题解决,依赖预建3D地图与2D图像特征匹配,需高度稳定一致的特征。深度学习推进了特征描述与匹配优化,端到端姿态估计展现潜力,但新环境适应性待测。语义信息融合被视为提高定位精度与鲁棒性的关键,尤其在复杂城市环境,利用稳定语义特征如车道线简化计算并强化定位。
研究表明,语义信息集成极大提升定位准确性和鲁棒性,优化视觉特征并减小计算开销,自动驾驶中,通过检测语义对象如车道线实现高效定位。这些语义特征在城市环境普遍存在,且在多变条件下稳定性强,相比传统特征。构建语义地图采用语义对象而非密集点,降低了地图的存储与传输成本。
将当前观测到的语义线索与语义地图中的元素关联起来,为自动驾驶单目视觉定位提供了极具前景的解决方案。然而,这样的做法面临几个挑战:
1)标准矢量高清晰度(HD)地图通常需要专门的数据采集设备和大量人力进行标注;
2)由于维度降级缺陷,将2D图像中的目标正确转换为3D真实形状是一个难题。
因此,本文提出了一种面向自动驾驶的轻量级视觉定位流程,包括无需人工注释的语义地图构造器和使用低成本摄像头及IMU设备的定位模块。本文的主要贡献总结如下:
• 本文提出了一种增强型逆透视映射模型,考虑了相机旋转,可在运动中准确计算鸟瞰图。
• 本文提出了一种算法,利用常规LiDAR并最少的人工辅助或监督来构建全局语义地图。
• 本文提出了一种基于常见道路视觉语义特征的单目定位算法,并在实际交通场景中验证了其有效性。
3. 相关工作
3.1 视觉定位
●VINS和ORB-SLAM是常见的视觉SLAM框架,整合了特征点处理、关键帧优化、回环检测等模块,实现精确轨迹估计,但面对大规模城市环境实时定位仍具挑战。
●Hloc构建了包含图像检索、特征匹配和姿态估计的全局定位框架,而LaneLoc、TM3Loc、RSCM、Dt-loc和LAVIL等方法分别通过利用车道线、高清地图语义地标、形状分类、距离变换及结合LiDAR里程计等策略,探索提升定位精度与效率,同时强调降低预构建地图的人工成本。
3.2 雷达SLAM
●LiDAR技术因能直接获取物体的真实尺度和位置信息,极大地促进了高精度语义地图的构建。
●从LOAM算法开始,后续发展如Lego-LOAM通过剔除地面点和加入回环检测减小计算量与漂移,LIOM引入IMU预积分实现紧耦合SLAM,FAST-LIO系列则通过IMU辅助减少运动畸变,优化计算效率,并在FAST-LIO2中提出增量k-d树数据结构,进一步提升了大规模点云处理的效率。
4. 本文算法
本文介绍了一种基于语义地图的视觉定位方法,如图1所示。系统包含两部分:
1)生成全局语义地图:采集车辆(LIDAR、GPS-RTK、IMU)数据,LiDAR SLAM建点云图,提取特征构建语义地图;
2)定位:CNN从摄像头图像提取语义信息,IPM处理地面像素建局部图并与全局语义图对齐。杆状物投影至图像线匹配,最小化重投影误差确定6DOF车辆姿态。
图1|系统结构示意图©️【深蓝AI】编译
4.1 语义地图
通过在位姿图优化模块中融合GPS-RTK信息改进的FAST-LIO2算法,确保了全局位置精度,LiDAR收集的数据被注册为高精度点云地图。从点云中分割出杆状语义特征,并利用欧几里得聚类和RANSAC线性拟合提取每个杆的两端点。地面点云通过预训练的KPConv模型和平面生长法提取。为了准确分割地面标记,本文将KPConv分割结果投影到俯视图(BEV)平面上,将路面点云的反射率视为像素值。此处采用OTSU算法进一步二值化反射率值,以便清晰分离车道标记和路面。最后,利用3D点云与BEV图像之间的映射关系,将分割结果反投影回3D点云中,实现相关元素的三维空间语义分割,如图2所示:(a)为原始点云地图。(b)是由LiDAR SLAM产生的地面点云。©给出了一个俯视图(BEV)图像示例,其中每个像素代表一个10厘米的体素。(d)展示了OTSU二值化结果,该结果保留了道路上的高对比度特征,包括车道线和路面标记。
图2|展示了点云地图生成及俯视图分割的过程©️【深蓝AI】编译
4.2 图像分割
采用轻量级的BiSeNetV2模型对图像进行语义分类,主要分为地面标记、杆状物和背景三类。为了提升效率,使用OpenCV提取地面标记轮廓代替全图语义掩模,并对杆状物实例应用最小二乘法拟合为直线,便于后续距离计算。图3展示了这一过程在实际交通场景中的应用效果。(a)是由前视摄像头捕捉的原始图像。(b)是语义分割的结果。其中,橙色像素和灰色像素分别代表地面标记和杆状物。绿色像素着重标示出地面标记的轮廓,而红色像素则标识出了杆状物拟合的直线。需要注意的是,为了减少噪声干扰,较短的杆状物已被排除在处理之外。
图3|为图像分割说明©️【深蓝AI】编译
4.3 逆透视变换
该步骤将图像中分割出的地面标记转换到车辆坐标系下,通过针孔摄像机模型原理完成从地面点到图像点的投影,如图4所示,这一转换对于后续的视觉定位至关重要。
图4|基本逆透视映射(IPM)模型的示意图©️【深蓝AI】编译
实际驾驶场景中,移动车辆的偏转角度通过集成IMU数据进行计算。随后,使用带有旋转补偿的IPM模型计算特定像素的投影坐标,以精确恢复它们在空间中的3D位置。图6(a)展示了未经补偿的标准IPM模型所产生的扭曲的俯视图(BEV)图像。相反,图6(b)呈现了经过角度补偿的增强型IPM模型的结果。这说明即使在行驶过程中角度发生微小变化,也会在俯视图图像中产生显著的扭曲现象。
图5|(a) 是通过基础IPM转换得到的俯视图(BEV)图像;(b) 是在考虑了偏转角度补偿(roll, pitch, yaw = (0.8°, −1.9°, −1.2°))后的增强型IPM结果©️【深蓝AI】编译
4.4 优化求解器
在对第 k k k帧图像的姿态进行优化之前,必须准备好车辆状态信息,这包括先前的姿态以及地面标记和杆状特征的位置。然后使用迭代非线性优化方法,将当前特征与全局语义地图进行匹配,从而得出车辆的当前位置。
· 先前姿态(Prior Pose)
Vins-mono提出了一种视觉惯性测距(VIO)方法,能够提供车辆的相对位置和旋转信息。为提高先前姿态的准确性,计算第 k k k帧与 k − 1 k-1 k−1帧之间的相对姿态变换,并将其融入到前一帧的语义定位结果中。这样做有助于减少由IMU积分累积造成的误差。第 k k k帧的先前姿态,记为 T k ∗ T^*_k Tk∗,可以通过以下公式表达:
T k ∗ = T k − 1 ( T ^ k − 1 ) − 1 T ^ k T_k^{*} = T_{k-1} \left( \hat{T}_{k-1} \right)^{-1} \hat{T}_k Tk∗=Tk−1(T^k−1)−1T^k
其中, T k − 1 T_{k-1} Tk−1表示通过本文的语义定位算法获得的前一帧的定位结果; T ^ k − 1 \hat{T}_{k-1} T^k−1和 T ^ k \hat{T}_k T^k分别是对应帧的VIO输出结果。
· 地面标记表示
在第 k k k帧图像中,本文保留了地面标记轮廓的像素。将车道线轮廓中的 m m m个点的位置指定为 P I , lane , k = { ⟨ p i , lane ⟩ } i = 1 m P_{I,\text{lane},k}=\{\langle p_{i,\text{lane}}\rangle\}_{i=1}^m PI,lane,k={⟨pi,lane⟩}i=1m,其中 p i = [ u i , v i ] T p_i=[u_i, v_i]^T pi=[ui,vi]T代表像素坐标。因此,车道线点在车辆坐标系 { V } \{V\} {V}中的表示为:
P V , lane , k = T V C M ipm ( P I , lane , k ) P_{V,\text{lane},k}=T_{VC}M_{\text{ipm}}(P_{I,\text{lane},k}) PV,lane,k=TVCMipm(PI,lane,k)
其中,矩阵 T V C T_{VC} TVC是从坐标系 { C } \{C\} {C}到 { V } \{V\} {V}的外部参数,保持恒定。 M ipm ( ⋅ ) M_{\text{ipm}}(\cdot) Mipm(⋅)代表IPM模型。
鉴于单个图像有限的视野和分割噪声,本文采用滑动窗口积累多帧车道数据。本文生成由最近 c c c帧地面特征组成的局部语义地图,并限制其大小不超过50米。随后,利用先验姿态 T W , V ∗ , k T_{W,V}^{*}{}_{,k} TW,V∗,k,将局部地图转换到世界坐标系 { W } \{W\} {W}中。通过构建全局语义地图的KD树,搜索附近的点 P ‾ W , lane \overline{P}_{W,\text{lane}} PW,lane,公式表述如下:
P ‾ W , lane ≈ P W , lane , k = T W , V ∗ , k ∑ i = 0 c − 1 [ T V C M ipm ( p I , lane , k − i ) ] \overline{P}_{W,\text{lane}} \approx P_{W,\text{lane},k} = T_{W,V}^{*}{}_{,k} \sum_{i=0}^{c-1}[T_{VC}M_{\text{ipm}}(p_{I,\text{lane},k-i})] PW,lane≈PW,lane,k=TW,V∗,ki=0∑c−1[TVCMipm(pI,lane,k−i)]
最终,本文仅考虑距离小于某一阈值(例如1米)的邻近点。损失函数计算如下:
L lane = ∑ ∥ ∥ P W , lane , k − P ‾ W , lane ∥ ∥ 2 + ∑ D ( P W , lane , k , L ‾ W , lane ) L_{\text{lane}} = \sum\|\|P_{W,\text{lane},k} - \overline{P}_{W,\text{lane}}\|\|^2 + \sum D(P_{W,\text{lane},k}, \overline{L}_{W,\text{lane}}) Llane=∑∥∥PW,lane,k−PW,lane∥∥2+∑D(PW,lane,k,LW,lane)
其中, L ‾ W , lane \overline{L}_{W,\text{lane}} LW,lane表示使用语义地图中最邻近的5个点拟合的直线,而 D ( ⋅ ) D(\cdot) D(⋅)用于衡量点到直线的距离。
· 杆状物体表示
当地面标记不可见时,仅依赖于平行的车道线无法为车辆前进方向提供有效的约束。杆状物体(如杆子、灯柱、树干等)是笔直且垂直于地面的,可以用来解决这个问题。
本文在语义地图中使用端点对来表示 n n n个杆状物体,记为 P ‾ W , pole = { ⟨ p 1 i , p 2 i ⟩ } i = 1 n \overline{P}_{W,\text{pole}} = \{\langle p_{1i}, p_{2i}\rangle\}_{i=1}^n PW,pole={⟨p1i,p2i⟩}i=1n,每个杆状物体 i i i由两个端点表示 p 1 i = [ x i , y i , z 1 i ] T p_{1i} = [x_i, y_i, z_{1i}]^T p1i=[xi,yi,z1i]T和 p 2 i = [ x i , y i , z 2 i ] T p_{2i} = [x_i, y_i, z_{2i}]^T p2i=[xi,yi,z2i]T。此外,这些杆状物体借助于先验姿态和投影函数被投影到第k帧图像中,形成 P ‾ I , pole \overline{P}_{I,\text{pole}} PI,pole。
P ‾ I , pole , i = 1 z C i K ( T V C ) − 1 ( T W , V ∗ , k ) − 1 P ‾ W , pole , i \overline{P}_{I,\text{pole},i} = \frac{1}{z_{C_i}}K(T_{VC})^{-1}(T_{W,V}^{*}{}_{,k})^{-1}\overline{P}_{W,\text{pole},i} PI,pole,i=zCi1K(TVC)−1(TW,V∗,k)−1PW,pole,i
其中, z C i z_{C_i} zCi是杆状物体点 i i i在相机坐标系 { C } \{C\} {C}中的z坐标。
对于投影到图像上的每个端点,本文找到由杆状物体分割结果拟合的最近直线。从端点 P ‾ I , pole \overline{P}_{I,\text{pole}} PI,pole到相应拟合直线 L I , pole , i L_{I,\text{pole},i} LI,pole,i的距离被计算为残差。
L pole = ∑ i = 0 n D ( P ‾ I , pole , i , L I , pole , i ) L_{\text{pole}} = \sum_{i=0}^{n}D(\overline{P}_{I,\text{pole},i}, L_{I,\text{pole},i}) Lpole=i=0∑nD(PI,pole,i,LI,pole,i)
最后,最优的全局一致性匹配是一个非线性最小二乘问题,本文采用带有LM算法的Ceres求解器来求解车辆的姿态。
T W , V , k = arg min T W , V ∗ , k ( L lane + L pole ) T_{W,V,k} = \arg\min_{T_{W,V}^{*}{}_{,k}}(L_{\text{lane}} + L_{\text{pole}}) TW,V,k=argTW,V∗,kmin(Llane+Lpole)
5. 实验评估
5.1 数据集
本文使用两个自动驾驶视觉定位的数据集:
1)KAIST数据集,包含城市复杂环境的多种传感器数据,适用于多种驾驶场景;
2)自主研发数据集,涵盖重庆6公里道路网,由自动驾驶车辆搭载
多传感器采集,用以构建地图和定位验证,GPS-RTK数据作为定位基准。
图7中,图(a)显示了本文自记录数据集中工业园区区域的卫星地图。图(b)是工业园区的全局语义地图,其中地面标记以黄色绘制,杆状物的端点以红色标出。蓝色框表示缺少足够车道语义信息的区域。图©是在工业园区场景中实时姿态优化的视觉示例。图(d)展示的是公共道路的情况。
图7|展示了定性结果的说明©️【深蓝AI】编译
5.2 视觉定位精度
为评估系统性能,本文对比了CL+PA、PC semantic、fusion SFM等语义定位算法,测试基于KAIST数据集,依据基准标准评价x、y定位及航向角精度,采用ATE的RMSE为指标,含RMSE平移与旋转。表1显示,本文的算法在各场景与基线相比,定位精度相当。
表1|KAIST城市数据集的RMSE结果©️【深蓝AI】编译
为进一步评估本文系统的有效性和泛化能力,本文基于自录数据集进行了一项实验,并将本文的算法与最先进的视觉定位工具箱Hloc进行了对比。与Hloc详细对比的结果见表2。
表2|提案算法在自记录数据集上的性能对比©️【深蓝AI】编译
Hloc针对公园数据集需4.5GB colmap地图数据,而本文的系统仅需2MB语义点云地图,即便如此,本文系统在平移与旋转精度上超越基线。工业区定位精度受车道线缺失影响低于公共道路(图7b),Hloc则利用密集建筑在开阔道路表现更佳。图7c-d展示了算法在不同场景的实时定位示例。图8揭示了定位误差分布,水平误差集中、趋近零,证明车道线,尤其是主车道线,对横向定位有强约束。垂直方向与航向角误差较大,或因杆状物监控不足。
图8|展示了定位误差在垂直方向、水平方向以及航向角上的概率分布图©️【深蓝AI】编译
为了详细评估每个提议特征的有效性,本文在公共道路数据集上进行了消融研究。为了与VIO结果公平对比,本文也采用了EVO计算相对姿态误差(RPE),如表3所示。本文的方法通过融入全局地图消除了VIO的累积漂移误差,使得平移RMSE达到0.492米,这对于自动驾驶任务是可以接受的。有趣的是,无论是在RPE方面,语义地图中的车道线和杆状物特征都优于基线,表明视觉特征有助于实现更高效和鲁棒的定位精度
表3|不同方法在公共道路数据集上的验证结果©️【深蓝AI】编译
6. 总结
本研究提出一种自动驾驶视觉定位系统,依托LiDAR构建语义地图,利用地面标记、车道线等特征进行车辆定位。系统在复杂交通实测中展现了较基线更高的定位精准度(平移与旋转)。未来研究方向将探索集成GPS等低成本传感器,以增强在复杂场景下的定位鲁棒性。
编译|匡吉
审核|Los
移步公众号【深蓝AI】,第一时间获取自动驾驶、人工智能与机器人行业最新最前沿论文和科技动态。