[论文阅读]Road Mapping and Localization using Sparse Semantic Visual Features

IEEE ROBOTICS AND AUTOMATION LETTERS 2021 文章链接

速读

1.1 论文试图解决什么问题?这是否是一个新的问题?
将道路中的语义信息用于解决自动驾驶定位这一问题。不是新问题。
1.2 有哪些相关研究?如何归类?谁是这一课题在领域内值得关注的研究员?
相关研究提及较少
1.3 文章的贡献是什么?
提出了一个提取、建模优化语义道路元素的视觉SLAM方法,结合深度学习模型提取语义。
①一个深度学习模块用于语义信息提取;
②道路语义的参数化(用关键点对道路线和路标建模、用分段三次样条曲线参数化车道线)并用其设计了相关的loss function
③用这些信息建立了完整的SLAM系统;
1.4 文章解决方案的关键是什么?
基于特征点和语义信息将SLAM中使用的信息从像素级向物体级扩展
1.5 实验如何设计?实验结果足够论证其效果吗?
①网络的训练上通过人工标注数据集中的图片作为训练数据;
②训练网络的对三种语义目标的分类准确率、召回率、像素误差做实验测试;
定位实验:一个基于类似特征点描述的传统方法作为baseline,尽量保持两个方法条件一致,不相同的地方做出了声明,主要比较绝对轨迹的translational root-mean-squared-error (T.RMSE)
③Self-Relocalization:地图大小和T.RMSE两个维度上的比较说明语义地图占用更小空间的情况下由高质量在线定位效果;
④Cross-Relocalization:还添加了一个baseline:Maplab。所有数据完成定位,鲁棒性好、准确性好、轻量
⑤Modular and Efficiency Analysis:更细节的比较,loose tracking和tight tracking两种情况的运行实验,三种语义对象使用的特征点数量实验,各个部分使用时间说明;
⑥Stability of Semantic Mapping:建图阶段的位姿结果实验;
1.6 数据集是什么?
两个真实的数据集:
一个公开的数据集KAIST:使用26, 28, 38, 39四条城市环境的左相机+IMU+GPS数据;
一个自己采集的数据集:于杭州采集共两条,设备为10Hz ON AR0144 stereo camera, a 200Hz Bosch BMI 088 IMU and a 10Hz u-blox F9 RTK-GPS,一条长4.7km一条长3.2km
1.7 还会存在什么问题
①好像没有对路口的建模
[论文阅读]Road Mapping and Localization using Sparse Semantic Visual Features_第1张图片
②还有那些语义信息可以使用
③对极端天气情况下,语义信息能够雨天下的有效定位(视觉上的模糊)、雪天下的定位(地面上语义信息消失)


以下是精读部分

2 系统框架

[论文阅读]Road Mapping and Localization using Sparse Semantic Visual Features_第2张图片
与使用类似框架的已有结果不同的是作者使用多种语义信息

框架分为离线构建语义地图+在线定位,具有批处理和滑动窗口策略的紧耦合状态优化;
语义实例被分为三类:地面上的物体(路灯、路标)、地面元素(左转右转标记)、线(车道线)

3 各部分功能

3.1 Selection of Road Features

被选定为语义标志的元素:
①道路上方的路灯和交通标志,稳定且足够被前放相机捕获;
②路面上的醒目标志,占据画面大部分的路面信息,虽然大多时候被遮挡;
实线和虚线车道线,实线提供方向约束,虚线矩形块的角点作为一系列点标记;
[论文阅读]Road Mapping and Localization using Sparse Semantic Visual Features_第3张图片

3.2 Detection of Road Features

两步的检测模块:
①物体级的检测得到道路上方和路面上的语义信息框,以及车道轮廓上的采样像素
②沿着虚线车道检测虚线车道的角点

为了减少前端的重复工作使用无锚检测方法CenterNet(an anchor free detection method CenterNet)

使用DLA-34和DCN module作为特征提取部分。后面这一部分没看懂,好像是设计不同的loss function得到各种具有不同意义的H,然后通过对H的聚类得到属于哪一类语义信息?
①Object boxes and keypoints:在CenterNet的基础基础上提出六个head用于检测这类语义;
②Lanes: H 7 H_7 H7输出左右边界点和上下边界点, H 8 H_8 H8是个左右边界点 or 上下边界点 or 都不是的三分类, H 9 H_9 H9用于降低位置特征的维度,最后通过DBSCAN聚类;
Dashed lane corners:给定64*64的图像检测角点练成线段表示虚线块, H 10 H_{10} H10计算角度上的differences, H 11 H_{11} H11计算长度上的differences;

3.3 Feature Tracking for Semantic Entities

对于地面上的标志和车道线等地面物体ground objects追踪,在IMU积分得到的位姿 T ′ T' T下的重投影误差如下,相较于常见的追踪多了一个有趣的约束:
p ′ = π ( T ′ ⋅ π ′ ( p , z p ) ) , w i t h   G ⋅ π ′ ( p , z p ) = 0 p' = \pi(T'\cdot\pi'(p, z_p)), with\ G\cdot\pi'(p, z_p)=0 p=π(Tπ(p,zp)),with Gπ(p,zp)=0表示特征点是在某个确定平面上的,其中:
π ′ ( p , z p ) \pi'(p, z_p) π(p,zp)表示像素点反投影到世界坐标系下的坐标
T ′ T' T表示由IMU积分得到的两帧间相对位姿
G = [ θ , ϕ , d ] G = [\theta, \phi, d] G=[θ,ϕ,d]表示一个世界坐标系下的平面,其物理意义为ground objects像素点所在的地面,对于 G G G上面的点 x x x有:
G ⋅ x ≜ [ c o s θ c o s ϕ , c o s θ s i n ϕ , s i n θ ] T x + d = 0 G\cdot x \triangleq [cos\theta cos\phi, cos\theta sin\phi, sin\theta]^Tx + d = 0 Gx[cosθcosϕ,cosθsinϕ,sinθ]Tx+d=0如何匹配:
使用Hungarian matching strategy,对像素进行物体级(instance-wise)和像素级(pixel-wise)的匹配
① instance-wise:在规则物体用多边形面表示和车道线用5像素宽的线段表示,计算交集intersection-over-union ( IOU )
② pixel-wise:计算重投影误差
IOU比例应>50% + 重投影误差应<5
[论文阅读]Road Mapping and Localization using Sparse Semantic Visual Features_第4张图片

对于垂直平面上的路灯等vertical objects,使用光流法跟踪由GFTT extractor和FREAK descriptor提取的特征点来检测这类语义目标,由于语义检测得到的目标一般在空中,所以检测框内会包含目标之外的其他特征点,需要做离群点筛选

3.4 Representation and Initialization of Road Lanes

控制点到模拟车道线
用一系列控制点构造的分段三次Catmull-Rom样条曲线(the piecewise cubic Catmull-Rom spline curves)表示车道线的左右轮廓。分段三次Catmull-Rom样条曲线就是用四个点 C k − 1 , C k , C k + 1 , C k + 2 C_{k-1}, C_k, C_{k+1}, C_{k+2} Ck1,Ck,Ck+1,Ck+2模拟一段由 C k C_k Ck C k + 1 C_{k+1} Ck+1的曲线,其中 C k − 1 C_{k-1} Ck1 C k + 2 C_{k+2} Ck+2控制曲线两端点的朝向,具体公式如下:
C ( t ′ ) = [ t ′ 3 t ′ 2 t ′ 1 ] T [ − τ 2 − τ τ − 2 τ 2 τ τ − 3 3 − 2 τ − τ − τ 0 τ 0 0 1 0 0 ] [ C k − 1 C k C k + 1 C k + 2 ] T C(t') = \begin{bmatrix} t'^3 \\ t'^2 \\ t' \\ 1 \\ \end{bmatrix}^T \begin{bmatrix} -\tau & 2-\tau & \tau-2 & \tau \\ 2\tau & \tau-3 & 3-2\tau & -\tau \\ -\tau & 0 & \tau & 0 \\ 0 & 1 & 0 & 0 \\ \end{bmatrix} \begin{bmatrix} C_{k-1} \\ C_k \\ C_{k+1} \\ C_{k+2} \\ \end{bmatrix}^T C(t)=t3t2t1Tτ2ττ02ττ301τ232ττ0ττ00Ck1CkCk+1Ck+2T[论文阅读]Road Mapping and Localization using Sparse Semantic Visual Features_第5张图片
其中 τ = 0.5 \tau=0.5 τ=0.5表示曲线的在控制点间的弯曲程度, t ′ ∈ [ 0 , 1 ] t'\in[0, 1] t[0,1]表示 C k C_k Ck C k + 1 C_{k+1} Ck+1的某一个中间位置。
[论文阅读]Road Mapping and Localization using Sparse Semantic Visual Features_第6张图片

由此我们即可将 C k , k ∈ [ 1 , M + 2 ] C_k, k\in[1, M+2] Ck,k[1,M+2]个控制点分成 M − 1 M-1 M1组,并用其描述出经过 C k , k ∈ [ 2 , M + 1 ] C_k, k\in[2, M+1] Ck,k[2,M+1]这些控制点且两端点方向由 C 1 C_1 C1 C M + 2 C_{M+2} CM+2控制的曲线。

控制点的生成
首先使用3得到一系列车道线上的点组成的点集 U c , j { P c j } U_{c,j}\{P_{cj}\} Uc,j{Pcj},然后从中随机取N个样本点组成点集 C k , k ∈ [ 2 , N + 1 ] C_k, k\in[2, N+1] Ck,k[2,N+1],用这个点集构造样条曲线 C ( t ′ ) C(t') C(t)模拟车道线,误差为:
a r g m i n C k   ∑ c , j ∣ ∣ P c j − C ( t c j ) ∣ ∣ x Ω 2 + ∑ k = 3 N + 1 ∣ ∣   ∣ C k − C k − 1 ∣ − λ 1 ∣ ∣ y Ω 2 w i t h < C 1 , β 1 > ← { ∣ C 2 − C 1 ∣ = ∣ C 3 − C 2 ∣ , β 1 ⋅ N 2 = τ ( C 3 − C 1 ) \begin{aligned} &\underset{C_k}{argmin}\ \sum_{c, j} ||P_{cj}-C(t_{cj})||_{x_{\Omega}}^2 + \sum_{k=3}^{N+1} ||\ |C_k-C_{k-1}|-\lambda_1||_{y_{\Omega}}^2 \\ & with \leftarrow\left\{ \begin{array}{rcl} |C_2-C_1|=|C_3-C_2|,\\ \beta_1\cdot N_2=\tau(C_3-C_1)\\ \end{array} \right. \end{aligned} Ckargmin c,jPcjC(tcj)xΩ2+k=3N+1 CkCk1λ1yΩ2with<C1,β1>{C2C1=C3C2,β1N2=τ(C3C1)
左边项表示拟合的曲线和观测到的曲线上的点构成的误差,其中 t c j t_{cj} tcj是通过求解式子 C ′ ( t c j ) ( C ( t c j − P c j ) ) = 0 C'(t_{cj})(C(t_{cj}-P_{cj}))=0 C(tcj)(C(tcjPcj))=0得到;
右边项表示正则项,保证均匀采样控制点,即两个控制点间距离最好相差 λ 1 \lambda_1 λ1
with项用于初始化确定曲线初始方向的线外点 C 1 C_1 C1 ∣ C 2 − C 1 ∣ = ∣ C 3 − C 2 ∣ |C_2-C_1|=|C_3-C_2| C2C1=C3C2表示 C 1 C_1 C1在以 C 2 C_2 C2为圆心, ∣ C 3 − C 2 ∣ |C_3-C_2| C3C2为半径的球面上;第二个式子没有看懂;如果 C 1 C_1 C1有多个结果的话选择和 C 3 C_3 C3在反方向的;
④点 C N + 2 C_{N+2} CN+2的确定和类似;

车道线的生成步骤
①随机选择一个初始点;
②递归地在点的两边 [ 0.5 λ 1 , 1.5 λ 1 ] [0.5\lambda_1, 1.5\lambda_1] [0.5λ1,1.5λ1]内随机选取点;
为每个曲线生成最多500组点集,选取各个点集生成的候选曲线中误差项最小的那条

3.5 State Estimator Design

符号 意义 符号 意义
a 地面或垂直物体 i 物体a在c第几个像素,表示为 ( ⋅ ) a i c (\cdot)_{a^i}^c ()aic
b 曲线 k 曲线b的第几个控制点,表示为 ( ⋅ ) b k (\cdot)_{b^k} ()bk
c 照片帧 m 曲线b在c的第几个采样点,表示为 ( ⋅ ) b m c (\cdot)_{b^m}^c ()bmc
j j ∈ { m , n } j\in\{m, n\} j{m,n} n 曲线b的角点,表示为 ( ⋅ ) b n c (\cdot)_{b^n}^c ()bnc

提出5种优化变量
①关键点i在地面或者直立的物体a中的3D位置 P a i ∈ R 3 P_{a^i}\in \mathbb{R}_3 PaiR3
②3中提到的平面表示 G G G
直立物体在全局坐标系下的垂直平面表示为 V a ( φ , e ) ⋅ x ≜ [ c o s φ , s i n φ , 0 ] T   x + e = 0 V_a(\varphi, e)\cdot x \triangleq [cos\varphi, sin\varphi, 0]^T\ x + e = 0 Va(φ,e)x[cosφ,sinφ,0]T x+e=0,其中 φ ∈ [ 0 , 2 π ] , e ∈ R 3 \varphi\in [0, 2\pi], e\in\mathbb{R}_3 φ[0,2π],eR3,它相较于2少一个维度;
④曲线b的控制点 C b k ∈ R 3 C_{b^k}\in \mathbb{R}_3 CbkR3
⑤曲线b上被帧c观测的像素点 p b j c p_{b_j}^c pbjc相关的一个动态参数 t b j c ∈ R t_{b^j}^c\in\mathbb{R} tbjcR,表示曲线上哪个地方(上面有提到),其作用为确保曲线投影的正确性;

五种变量和原相机位姿 T c T_c Tc构成三种约束
[论文阅读]Road Mapping and Localization using Sparse Semantic Visual Features_第7张图片

①Points observation factors:常规的重投影误差
1 f a i c = ∣ ∣ p a i c − π ( T c − 1 ⋅ P a i ) ∣ ∣ 1 Ω a i c 2 ^{1}f_{a_i}^c = ||p_{a^i}^c-\pi(T_c^{-1}\cdot P_{a^i})||_{^{1}\Omega_{a_i}^c}^2 1faic=paicπ(Tc1Pai)1Ωaic2②Spline observation factors:曲线观测误差,即曲线上的边沿的点和角点 p b j c p_{b_j}^c pbjc的投影误差
2 f b j c = ∣ ∣ p b j c − π ( T c − 1 ⋅ C b ( t b j c ) ) ∣ ∣ 2 Ω b j c 2 ^{2}f_{b_j}^c = ||p_{b^j}^c-\pi(T_c^{-1}\cdot C_b(t_{b_j}^c))||_{^{2}\Omega_{b_j}^c}^2 2fbjc=pbjcπ(Tc1Cb(tbjc))2Ωbjc2Coplanar prior factors:平面先验残差, 3 f a i ^{3}f_{a^i} 3fai为水平平面, 3 f x ^{3}f_{x} 3fx为竖直平面,点在平面上的话残差项应该为0
3 f a i = ∣ ∣ V a ⋅ P a i ∣ ∣ 3 Ω a i 2 , 3 f x = ∣ ∣ G ⋅ ( T c − 1 ⋅ P x c ) ∣ ∣ 3 Ω x c 2 , x ∈ { a i , b j } \begin{aligned} & ^{3}f_{a^i} = ||V_a\cdot P_{a^i}||_{^{3}\Omega_{a^i}}^2,\\ & ^{3}f_{x} = ||G\cdot (T_c^{-1}\cdot P_{x}^c)||_{^{3}\Omega_{x}^c}^2, x\in \{a^i, b^j\} \end{aligned} 3fai=VaPai3Ωai2,3fx=G(Tc1Pxc)3Ωxc2,x{ai,bj}对式子中三个 Ω \Omega Ω的详细意义和具体使用没有整理清楚

状态估计步骤
①初始化优化变量(这里理解不一定对,得对照代码):
1)用GNSS-VIO轨迹中恢复的位姿三角化特征点;
2)将三角化后的地面点转化到观测帧,做3D平面拟合;
3)用已有点对垂直语义对象做2D曲线拟合,得到 V a ( φ , e ) V_a(\varphi, e) Va(φ,e),然后用于对检测的2D box中的特征点的检测;
4)有了2)后用3计算车道线;
5)求解样条4)的过程中将求解得到的3D association parameter分配给 t b j c t_{b^j}^c tbjc,然后使用独立的非线性优化refine。(后续具体描述没有看懂)
②离线建图:
所有变量都初始化后,用推导的视觉惯导里程计因子图优化,所有的关键帧和检测到的优化变量参与最终的BA优化
在线定位:固定上面①和②式子中的语义要素(语义上的3D点和样条曲线的控制点等),以此来对定位增加约束,实现语义信息在定位中的使用。因为③式是用构建语义时的共面约束,在定位时不再使用。

3.6 Re-Identification and Feature Merging

Re-Identification:使用3D到3D的语义关联而不是词袋,因为这类信息是稀疏的且在外观上难以辨别。将质心小于5m的三角化物体认为是用一个物体并使用Hungarian strategy合并。对于伴随的GFTT点,使用FREAK描述子在多帧间投票,使用union-find algorithm合并再进行全局状态优化

3.7 Data Structure of Semantic Maps

语义地图 M \mathcal{M} M=set(观测帧 O \mathcal{O} O,语义路标 L \mathcal{L} L,共视图 G \mathcal{G} G(连接 O \mathcal{O} O L \mathcal{L} L));
观测 c c c保存全局位姿 T c T_c Tc和GNSS测量值;
垂直的语义路标保存语义信息、点的3D位置
不存储描述子

3.8 Localization Based on Semantic Maps[论文阅读]Road Mapping and Localization using Sparse Semantic Visual Features_第8张图片

四个阶段
①map uninitialized:地图到当前位姿的转换为止 T M T_{\mathcal{M}} TM,用GPS得到一小段距离(小于30m)的粗略位置信息,得到观测帧 O M ⊂ O \mathcal{O}_{\mathcal{M}}\subset\mathcal{O} OMO,并转入②阶段;
②local search:获得标签 L M = G ( O M ) \mathcal{L}_\mathcal{M}=\mathcal{G(\mathcal{O_{\mathcal{M}}})} LM=G(OM),建立2D-3D的PnP-Ransac,初始化 T M T_{\mathcal{M}} TM并转入④阶段;
④loose tracking和tight tracking:两个tracking阶段设定的阈值不同,都往滑动窗口添加reconstructed associations,并用5中的①和②优化,初始位姿 T c T_{\mathcal{c}} Tc转化为 T c M T_{\mathcal{cM}} TcM T M T_{\mathcal{M}} TM两个变量来优化。将所有map 元素投影到当前帧,用一个准则确定投影关系
y f x c < ∣ ∣ σ 2 ∣ ∣ y Ω x c 2 , x ∈ { a i , b j } , y ∈ { 1 , 2 } ^{y}f_x^c < ||\sigma_2||_{^{y}\Omega_x^c}^2, x\in \{a^i, b^j\}, y\in \{1, 2\} yfxc<σ2yΩxc2,x{ai,bj},y{1,2}阈值 σ \sigma σ在loose和tight中对deep特征点和classical 特征点的对应值是不同的

你可能感兴趣的:(SLAM,文章阅读,语义,自动驾驶,人工智能)