论文:《Eigenlanes: Data-Driven Lane Descriptors for Structurally Diverse Lanes》
代码:https://github.com/dongkwonjin/Eigenlanes
核心:在 Eigenlane Space 中检测车道线
用车道线在训练集中的分布来表示车道线。
在低维空间进行聚类,效果更佳。
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
- 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 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;
- 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
- 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)
Encoder:ResNet50
Decoder:Binary Segmentation Map
预测:车道线概率、位置偏移、最顶处点的高度
输入: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=∣lk∣1Σp∈lkXsc(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 条有价值的车道线。
利用了车道线之间的 相关性:
输入: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 泛数实现的特征变换。
这是一种图优化技术,可见论文:《Harmonious Semantic Line Detection via Maximal Weight Clique Selection》
主要有两步操作:
构建完全图
定义匹配度
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 模块的输出。