论文:《Eigenlanes: Data-Driven Lane Descriptors for Structurally Diverse Lanes》
代码:https://github.com/dongkwonjin/Eigenlanes
核心:在 Eigenlane Space 中检测车道线
创新点
- Eigenlane:数据驱动的车道描述符,在特征车道空间中紧凑地表示结构多样化的车道;
- SIIC-Net:高效地检测和回归特征车道空间中的道路车道;
- SDLane数据集:比现有数据集更真实地表示真实驾驶环境中结构多样化和复杂的车道;
0、结构
1、Eigenlanes
用车道线在训练集中的分布来表示车道线。
- 车道线:x=[x1,x2,...,xN]T\pmb{x}=[x_1,x_2,...,x_N]^Tx=[x1,x2,...,xN]T (横坐标)
- 车道线矩阵:A=[x1,x2,...,xL]\pmb{A}=[\pmb{x}_1,\pmb{x}_2,...,\pmb{x}_L]A=[x1,x2,...,xL](训练集中的所有车道线)
- 使用 Frobenius 泛数 ∣∣A−AM∣∣F||\pmb{A}-\pmb{A}_M||_F∣∣A−AM∣∣F ,其在被最小化时,A\pmb{A}A 的最佳 MMM 阶逼近为:
AM=[x~1,x~2,...,x~L]=σ1u1v1T+⋯+σMuMvMT\pmb{A}_M=[\pmb{\tilde{x}}_1,\pmb{\tilde{x}}_2,...,\pmb{\tilde{x}}_L]=\sigma_1 \pmb{u}_1 \pmb{v}^T_1+\cdots+\sigma_M \pmb{u}_M \pmb{v}^T_MAM=[x~1,x~2,...,x~L]=σ1u1v1T+⋯+σMuMvMT
其中:- UM=[u1,...,uM]\pmb{U}_M=[\pmb{u}_1,...,\pmb{u}_M]UM=[u1,...,uM] 是 U=[u1,...,uN]\pmb{U}=[\pmb{u}_1,...,\pmb{u}_N]U=[u1,...,uN] 的前 M 个左奇异向量;
- VM=[v1,...,vM]\pmb{V}_M=[\pmb{v}_1,...,\pmb{v}_M]VM=[v1,...,vM] 是 V=[v1,...,vL]\pmb{V}=[\pmb{v}_1,...,\pmb{v}_L]V=[v1,...,vL] 的前 M 个右奇异向量;
- ΣM=[σ1,...,σM]\pmb{\Sigma}_M=[\pmb{\sigma}_1,...,\pmb{\sigma}_M]ΣM=[σ1,...,σM] 是 Σ\pmb{\Sigma}Σ 的前 M 个奇异值(Σ\pmb{\Sigma}Σ 中的奇异值经过了由大到小的排序,均大于0,且最小值为 σr\sigma_rσr,r 是 A 的秩);
- U\pmb{U}U、V\pmb{V}V 以及 Σ\pmb{\Sigma}Σ 是通过奇异值分解 A=UΣV\pmb{A}=\pmb{U}\pmb{\Sigma}\pmb{V}A=UΣV 得到的。
- 由此可知:
- x~i=UMci=[u1,...,uM]ci\tilde{x}_i=\pmb{U}_M \pmb{c}_i=[\pmb{u}_1,...,\pmb{u}_M]\pmb{c}_ix~i=UMci=[u1,...,uM]ci
- 定义 Eigenlanes:u1,...,uM\pmb{u}_1,...,\pmb{u}_Mu1,...,uM
- 定义 Eigenlanes 空间:由 {u1,...,uM}\{\pmb{u}_1,...,\pmb{u}_M\}{u1,...,uM} 张成的空间
- 给定车道线 x\pmb{x}x,将其映射到 Eigenlanes 空间:x~=UMc\tilde{\pmb{x}}=\pmb{U}_M \pmb{c}x~=UMc,其中 c=UMTx\pmb{c}=\pmb{U}_M^T \pmb{x}c=UMTx
在 Eigenlanes 空间生成候选车道线
在低维空间进行聚类,效果更佳。
Algorithm 1 Lane candidate generation in eigenlane space
Input: Set of training lanes {x1,x2,...,xL}\{x_1,x_2,...,x_L\}{x1,x2,...,xL}, M=#M=\#M=# of eigenlanes, K=#K=\#K=# of lane candidates
- Construct the lane matrix A and perform SVD in A=UΣV\pmb{A}=\pmb{U}\pmb{\Sigma}\pmb{V}A=UΣV;
- Transform each lane xix_ixi to cic_ici via c=UMTx\pmb{c}=\pmb{U}_M^T \pmb{x}c=UMTx;
- Apply the K-means algorithm to {c1,c2,...,cL}\{c_1,c_2,...,c_L\}{c1,c2,...,cL} to obtain K centroids c1,c2,...,cKc^1,c^2,...,c^Kc1,c2,...,cK
- Generate the lane candidate lk=UMck\pmb{l}_k=\pmb{U}_M\pmb{c}^klk=UMck by inversely transforming each centroid ck\pmb{c}^kck
Output: Set of lane candidates {l1,...,lK}\{l_1,...,l_K\}{l1,...,lK}
在 Eigenlanes 空间上,(通过最近邻)检测到 l=UMc\pmb{l}=\pmb{U}_M\pmb{c}l=UMc 之后,再用一个回归器回归出 Δc\Delta \pmb{c}Δc,这样有:
l+Δl=UM(c+Δc)\pmb{l}+\Delta\pmb{l}=\pmb{U}_M(\pmb{c}+\Delta \pmb{c}) l+Δl=UM(c+Δc)
2、SIIC-Net
整体结构
Encoder:ResNet50
Decoder:Binary Segmentation Map
2.1、SI 模块(Self-lane Identification)
预测:车道线概率、位置偏移、最顶处点的高度
输入:Squeezed Feature Map XsX_sXs、候选车道线 lkl_klk
输出:P=σ(f1(Y)),H=σ(f2(Y)),O=f3(Y)P=\sigma(f_1(Y)),\ H=\sigma(f_2(Y)),\ O=f_3(Y)P=σ(f1(Y)), H=σ(f2(Y)), O=f3(Y)
其中,Ys=[Ys1,Ys2,...,YsC2]∈RK×C2Y_s=[Y^1_s,Y^2_s,...,Y^{C_2}_s]\in \mathbb{R}^{K\times C_2}Ys=[Ys1,Ys2,...,YsC2]∈RK×C2 是沿着候选车道线 lk\pmb{l}_klk 做均值:
Ysc=1∣lk∣Σp∈lkXsc(p)Y_s^c=\frac{1}{|\pmb{l}_k|}\Sigma_{p\in \pmb{l}_k}X^c_s(p) Ysc=∣lk∣1Σp∈lkXsc(p)
fif_ifi 分别是 C2×2C_2\times 2C2×2、C2×RC_2\times RC2×R、C2×MC_2\times MC2×M 的全连接层。OkO_kOk 就是前面提到的偏移量 Δck\Delta c_kΔck
SI 模块之后,应用 NMS T 次,以选出 T 条有价值的车道线。
2.2、IC 模块(Inter-lane Correlation)
利用了车道线之间的 相关性:
- 相邻车道等间距
- 透视变换下,车道线交于 Vanishing Point
输入:Aggregated Feature Map XaX_aXa、候选车道线 lkl_klk、前段 NMS 输出的 T 条车道线;
输出:相应两条车道线对的匹配度 R=ϕ1(Ya)×ϕ2(Ya)TR=\phi_1(Y_a)\times\phi_2(Y_a)^TR=ϕ1(Ya)×ϕ2(Ya)T
其中,
- YaY_aYa 使用 XaX_aXa 计算得到,计算方式与 YsY_sYs 类似,它是 T×C1T\times C_1T×C1 的矩阵
- RRR 是 T×TT\times TT×T 的矩阵,Rij∈[−1,1]R_{ij}\in [-1,1]Rij∈[−1,1]
- ϕ1\phi_1ϕ1 与 ϕ2\phi_2ϕ2 是用卷积与 l2l_2l2 泛数实现的特征变换。
2.3、MWCS 模块
这是一种图优化技术,可见论文:《Harmonious Semantic Line Detection via Maximal Weight Clique Selection》
主要有两步操作:
- 寻找可以修正的最佳车道线 clique;
- 通过删除 y 坐标比 HviH_{v_i}Hvi 大的点,修正了每条车道线的高度;(后面不再赘述)
寻找可以修正的最佳车道线 clique
构建完全图
- G=(V,E)G=(\mathcal{V},\mathcal{E})G=(V,E)
- V={v1,v2,...,vT}\mathcal{V}=\{v_1,v_2,...,v_T\}V={v1,v2,...,vT} 是 NMS 输出的车道线
- E={(vi,vj):i≠j}\mathcal{E}=\{(v_i,v_j):i\ne j\}E={(vi,vj):i=j},每条边上有个权重 w(vi,vj)=12(Rij+Rji)w(v_i,v_j)=\frac{1}{2}(R_{ij}+R_{ji})w(vi,vj)=21(Rij+Rji)
定义匹配度
- 记 θ\thetaθ 为车道线 clique,由图节点的序号构成;
- θ\thetaθ 上的匹配度 Ecompatible(θ)E_{compatible}(\theta)Ecompatible(θ):
Ecompatible(θ)=Σi∈θΣj∈θ,j>iw(vi,vj)E_{compatible}(\theta)=\Sigma_{i\in\theta}\Sigma_{j\in\theta,j>i}w(v_i,v_j) Ecompatible(θ)=Σi∈θΣj∈θ,j>iw(vi,vj)
选 clique θ∗\theta^*θ∗
θ∗=argmaxθEcompatible(θ)\theta^*=\arg\max_\theta E_{compatible}(\theta) θ∗=argθmaxEcompatible(θ)
其中,限定 w(vi,vj)>κw(v_i,v_j)>\kappaw(vi,vj)>κ。
如果没有满足约束的 clique,则选择最大的单节点 clique:θ∗={i∗}\theta^*=\{i^*\}θ∗={i∗},其中 i∗=argmaxiPvii^*=\arg\max_i P_{v_i}i∗=argmaxiPvi
调整候选车道线
使用 U(cvi+Δcvi)\pmb{U}(\pmb{c_{v_i}}+\Delta\pmb{c_{v_i}})U(cvi+Δcvi) 调整 θ∗\theta^*θ∗ 中的车道线,其中 Δcvi\Delta\pmb{c_{v_i}}Δcvi 是 SI 模块的输出。