当前位置: 首页 > news >正文

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

论文:《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∣∣AAMF ,其在被最小化时,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}UV\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
      • 定义 Eigenlanesu1,...,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

  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 xix_ixi to cic_ici via c=UMTx\pmb{c}=\pmb{U}_M^T \pmb{x}c=UMTx;
  3. 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
  4. 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=lk1ΣplkXsc(p)

fif_ifi 分别是 C2×2C_2\times 2C2×2C2×RC_2\times RC2×RC2×MC_2\times MC2×M 的全连接层。OkO_kOk 就是前面提到的偏移量 Δck\Delta c_kΔck

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

2.2、IC 模块(Inter-lane Correlation)

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

  1. 相邻车道等间距
  2. 透视变换下,车道线交于 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 的矩阵
  • RRRT×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》

主要有两步操作:

  1. 寻找可以修正的最佳车道线 clique;
  2. 通过删除 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^*θ

θ∗=arg⁡max⁡θ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∗=arg⁡max⁡iPvii^*=\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 模块的输出。

http://www.lryc.cn/news/874.html

相关文章:

  • docker run mysql -e 的环境变量 Environment Variables
  • 第17章 MongoDB 条件操作符教程
  • 电子技术——共源共栅放大器
  • 《MySQL学习》 事务隔离 与 MVCC
  • html(二)基础标签
  • leetcode刷题---递归思想
  • ThreadLocal 源码级别详解
  • 训练营day17
  • Nodejs原型链污染
  • 【Vue3】element-plus中el-tree的递归处理赋值回显问题
  • C语言---宏
  • 算法导论—路径算法总结
  • 程序环境--翻译+执行
  • 微信小程序内部那些事
  • 这是从零在独自开开发,将是副业赚钱最好的平台!
  • Spring MVC 之获取参数(对象、JSON格式数据、URL地址参数、文件、Cookie)
  • 永磁同步电机中BEMF电阻的作用
  • JAVA练习45-二叉树的层序遍历
  • 超高精度PID调节器的特殊功能(3)——变送输出(转发)功能及其应用
  • 【C++】nullptr C++中的空指针(C++11)
  • 笔试题-2023-大疆-数字IC设计【纯净题目版】
  • Python dict字典方法完全攻略(全)
  • 用“AI“挑选一件智慧礼物
  • 【Spark分布式内存计算框架——Spark Core】4. RDD函数(下) 重分区函数、聚合函数
  • 智能工厂自动化设备如何将数据采集到物联网云平台上
  • SpringBoot整合Mybatis的核心原理
  • 滴滴一面:order by 调优10倍,思路是啥?
  • Vue框架学习篇(五)
  • (蓝桥杯 刷题全集)【备战(蓝桥杯)算法竞赛-第1天(基础算法-上 专题)】( 从头开始重新做题,记录备战竞赛路上的每一道题 )距离蓝桥杯还有75天
  • C++——继承那些事儿你真的知道吗?