车道线检测-Eigenlanes 论文学习笔记

论文:《Eigenlanes: Data-Driven Lane Descriptors for Structurally Diverse Lanes》

代码:https://github.com/dongkwonjin/Eigenlanes

核心:在 Eigenlane Space 中检测车道线

创新点
  • Eigenlane:数据驱动的车道描述符,在特征车道空间中紧凑地表示结构多样化的车道;
  • SIIC-Net:高效地检测和回归特征车道空间中的道路车道;
  • SDLane数据集:比现有数据集更真实地表示真实驾驶环境中结构多样化和复杂的车道;

0、结构

车道线检测-Eigenlanes 论文学习笔记_第1张图片

1、Eigenlanes

用车道线在训练集中的分布来表示车道线。

  • 车道线: x = [ x 1 , x 2 , . . . , x N ] T \pmb{x}=[x_1,x_2,...,x_N]^T x=[x1,x2,...,xN]T (横坐标)
  • 车道线矩阵: A = [ x 1 , x 2 , . . . , x L ] \pmb{A}=[\pmb{x}_1,\pmb{x}_2,...,\pmb{x}_L] A=[x1,x2,...,xL](训练集中的所有车道线)
  • 使用 Frobenius 泛数 ∣ ∣ A − A M ∣ ∣ F ||\pmb{A}-\pmb{A}_M||_F ∣∣AAMF ,其在被最小化时, A \pmb{A} A 的最佳 M M M 阶逼近为:
    A M = [ x ~ 1 , x ~ 2 , . . . , x ~ L ] = σ 1 u 1 v 1 T + ⋯ + σ M u M v M T \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_M AM=[x~1,x~2,...,x~L]=σ1u1v1T++σMuMvMT
    其中:
    • U M = [ u 1 , . . . , u M ] \pmb{U}_M=[\pmb{u}_1,...,\pmb{u}_M] UM=[u1,...,uM] U = [ u 1 , . . . , u N ] \pmb{U}=[\pmb{u}_1,...,\pmb{u}_N] U=[u1,...,uN] 的前 M 个左奇异向量;
    • V M = [ v 1 , . . . , v M ] \pmb{V}_M=[\pmb{v}_1,...,\pmb{v}_M] VM=[v1,...,vM] V = [ v 1 , . . . , v L ] \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 = U M c i = [ u 1 , . . . , u M ] c i \tilde{x}_i=\pmb{U}_M \pmb{c}_i=[\pmb{u}_1,...,\pmb{u}_M]\pmb{c}_i x~i=UMci=[u1,...,uM]ci
      • 定义 Eigenlanes u 1 , . . . , u M \pmb{u}_1,...,\pmb{u}_M u1,...,uM
      • 定义 Eigenlanes 空间:由 { u 1 , . . . , u M } \{\pmb{u}_1,...,\pmb{u}_M\} {u1,...,uM} 张成的空间
  • 给定车道线 x \pmb{x} x,将其映射到 Eigenlanes 空间: x ~ = U M c \tilde{\pmb{x}}=\pmb{U}_M \pmb{c} x~=UMc,其中 c = U M T x \pmb{c}=\pmb{U}_M^T \pmb{x} c=UMTx

在 Eigenlanes 空间生成候选车道线

在低维空间进行聚类,效果更佳。

车道线检测-Eigenlanes 论文学习笔记_第2张图片

Algorithm 1 Lane candidate generation in eigenlane space
Input: Set of training lanes { x 1 , x 2 , . . . , x L } \{x_1,x_2,...,x_L\} {x1,x2,...,xL}, M = # M=\# M=# of eigenlanes, K = # K=\# K=# of lane candidates

  1. Construct the lane matrix A and perform SVD in A = U Σ V \pmb{A}=\pmb{U}\pmb{\Sigma}\pmb{V} A=UΣV;
  2. Transform each lane x i x_i xi to c i c_i ci via c = U M T x \pmb{c}=\pmb{U}_M^T \pmb{x} c=UMTx;
  3. Apply the K-means algorithm to { c 1 , c 2 , . . . , c L } \{c_1,c_2,...,c_L\} {c1,c2,...,cL} to obtain K centroids c 1 , c 2 , . . . , c K c^1,c^2,...,c^K c1,c2,...,cK
  4. Generate the lane candidate l k = U M c k \pmb{l}_k=\pmb{U}_M\pmb{c}^k lk=UMck by inversely transforming each centroid c k \pmb{c}^k ck

Output: Set of lane candidates { l 1 , . . . , l K } \{l_1,...,l_K\} {l1,...,lK}

在 Eigenlanes 空间上,(通过最近邻)检测到 l = U M c \pmb{l}=\pmb{U}_M\pmb{c} l=UMc 之后,再用一个回归器回归出 Δ c \Delta \pmb{c} Δc,这样有:

l + Δ l = U M ( c + Δ c ) \pmb{l}+\Delta\pmb{l}=\pmb{U}_M(\pmb{c}+\Delta \pmb{c}) l+Δl=UM(c+Δc)
车道线检测-Eigenlanes 论文学习笔记_第3张图片
车道线检测-Eigenlanes 论文学习笔记_第4张图片

2、SIIC-Net

整体结构

车道线检测-Eigenlanes 论文学习笔记_第5张图片

Encoder:ResNet50

Decoder:Binary Segmentation Map

2.1、SI 模块(Self-lane Identification)

预测:车道线概率、位置偏移、最顶处点的高度

输入:Squeezed Feature Map X s X_s Xs、候选车道线 l k l_k lk

输出 P = σ ( f 1 ( Y ) ) ,   H = σ ( f 2 ( Y ) ) ,   O = f 3 ( Y ) P=\sigma(f_1(Y)),\ H=\sigma(f_2(Y)),\ O=f_3(Y) P=σ(f1(Y)), H=σ(f2(Y)), O=f3(Y)

其中, Y s = [ Y s 1 , Y s 2 , . . . , Y s C 2 ] ∈ R K × C 2 Y_s=[Y^1_s,Y^2_s,...,Y^{C_2}_s]\in \mathbb{R}^{K\times C_2} Ys=[Ys1,Ys2,...,YsC2]RK×C2 是沿着候选车道线 l k \pmb{l}_k lk 做均值:

Y s c = 1 ∣ l k ∣ Σ p ∈ l k X s c ( p ) Y_s^c=\frac{1}{|\pmb{l}_k|}\Sigma_{p\in \pmb{l}_k}X^c_s(p) Ysc=lk1ΣplkXsc(p)

f i f_i fi 分别是 C 2 × 2 C_2\times 2 C2×2 C 2 × R C_2\times R C2×R C 2 × M C_2\times M C2×M 的全连接层。 O k O_k Ok 就是前面提到的偏移量 Δ c k \Delta c_k Δck

SI 模块之后,应用 NMS T 次,以选出 T 条有价值的车道线。

2.2、IC 模块(Inter-lane Correlation)

利用了车道线之间的 相关性

  1. 相邻车道等间距
  2. 透视变换下,车道线交于 Vanishing Point

输入:Aggregated Feature Map X a X_a Xa、候选车道线 l k l_k lk、前段 NMS 输出的 T 条车道线;

输出:相应两条车道线对的匹配度 R = ϕ 1 ( Y a ) × ϕ 2 ( Y a ) T R=\phi_1(Y_a)\times\phi_2(Y_a)^T R=ϕ1(Ya)×ϕ2(Ya)T

其中,

  • Y a Y_a Ya 使用 X a X_a Xa 计算得到,计算方式与 Y s Y_s Ys 类似,它是 T × C 1 T\times C_1 T×C1 的矩阵
  • R R R T × T T\times T T×T 的矩阵, R i j ∈ [ − 1 , 1 ] R_{ij}\in [-1,1] Rij[1,1]
  • ϕ 1 \phi_1 ϕ1 ϕ 2 \phi_2 ϕ2 是用卷积与 l 2 l_2 l2 泛数实现的特征变换。

2.3、MWCS 模块

这是一种图优化技术,可见论文:《Harmonious Semantic Line Detection via Maximal Weight Clique Selection》

主要有两步操作:

  1. 寻找可以修正的最佳车道线 clique;
  2. 通过删除 y 坐标比 H v i H_{v_i} Hvi 大的点,修正了每条车道线的高度;(后面不再赘述
寻找可以修正的最佳车道线 clique

构建完全图

  • G = ( V , E ) G=(\mathcal{V},\mathcal{E}) G=(V,E)
  • V = { v 1 , v 2 , . . . , v T } \mathcal{V}=\{v_1,v_2,...,v_T\} V={v1,v2,...,vT} 是 NMS 输出的车道线
  • E = { ( v i , v j ) : i ≠ j } \mathcal{E}=\{(v_i,v_j):i\ne j\} E={(vi,vj):i=j},每条边上有个权重 w ( v i , v j ) = 1 2 ( R i j + R j i ) w(v_i,v_j)=\frac{1}{2}(R_{ij}+R_{ji}) w(vi,vj)=21(Rij+Rji)

定义匹配度

  • θ \theta θ 为车道线 clique,由图节点的序号构成;
  • θ \theta θ 上的匹配度 E c o m p a t i b l e ( θ ) E_{compatible}(\theta) Ecompatible(θ)

E c o m p a t i b l e ( θ ) = Σ i ∈ θ Σ j ∈ θ , j > i w ( v i , v j ) 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^* θ

θ ∗ = arg ⁡ max ⁡ θ E c o m p a t i b l e ( θ ) \theta^*=\arg\max_\theta E_{compatible}(\theta) θ=argθmaxEcompatible(θ)

其中,限定 w ( v i , v j ) > κ w(v_i,v_j)>\kappa w(vi,vj)>κ

如果没有满足约束的 clique,则选择最大的单节点 clique: θ ∗ = { i ∗ } \theta^*=\{i^*\} θ={i},其中 i ∗ = arg ⁡ max ⁡ i P v i i^*=\arg\max_i P_{v_i} i=argmaxiPvi

调整候选车道线

使用 U ( c v i + Δ c v i ) \pmb{U}(\pmb{c_{v_i}}+\Delta\pmb{c_{v_i}}) U(cvi+Δcvi) 调整 θ ∗ \theta^* θ 中的车道线,其中 Δ c v i \Delta\pmb{c_{v_i}} Δcvi 是 SI 模块的输出。

你可能感兴趣的:(目标检测,CV,深度学习,学习,车道线检测)