当前位置: 首页 > 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 模块的输出。

相关文章:

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

论文:《Eigenlanes: Data-Driven Lane Descriptors for Structurally Diverse Lanes》 代码:https://github.com/dongkwonjin/Eigenlanes 核心:在 Eigenlane Space 中检测车道线 创新点 Eigenlane:数据驱动的车道描述符&#xff…...

docker run mysql -e 的环境变量 Environment Variables

例子 sudo docker run -itd --name DockerMysqlLatest3307 -p 3307:3306 -e MYSQL_ROOT_PASSWORDroot的密码 mysql:latest### root无密码 sudo docker run -itd --name Mysql57 -p 57:3306 -e MYSQL_ALLOW_EMPTY_PASSWORDroot mysql:5.7https://hub.docker.com/_/mysql?tabde…...

第17章 MongoDB 条件操作符教程

第17章 MongoDB 条件操作符教程 描述 条件操作符用于比较两个表达式并从mongoDB集合中获取数据。 在本章节中&#xff0c;咱们将讨论如何在MongoDB中使用条件操作符。 MongoDB中条件操作符有&#xff1a; (>) 大于 - $gt(<) 小于 - $lt(>) 大于等于 - $gte(< …...

电子技术——共源共栅放大器

电子技术——共源共栅放大器 之前我们提到过&#xff0c;提高基础增益单元&#xff08;共源放大器&#xff09;的一种方法是提高其 ror_oro​ 的阻值&#xff0c;之后我们学过共栅放大器作为电流缓冲器可以做到这一点&#xff0c;自然地我们就得到了终极解决方案&#xff0c;也…...

《MySQL学习》 事务隔离 与 MVCC

《MySQL学习》 事务隔离 一.事务的概念 事务保证一组数据要么全部成功要么全部失败&#xff0c;MySQL的事务基于引擎&#xff08;如InnoDB&#xff09;实现。 二.事务的隔离性与隔离级别 MySQL的标准隔离级别&#xff1a; 读未提交 &#xff1a; 一个事务还没提交时&#…...

html(二)基础标签

一 HTML中的注释 重点&#xff1a; 在哪写注释? 注释的形式? vs code和webstorm都可以通过 ctrl / 进行单行注释和取消注释 ① html中注释的形式 1) html文档中单行和多行注释是"<!-- -->" -->html2) 在html文档中,script标签…...

leetcode刷题---递归思想

leetcode刷题---递归思想&#xff09;1.1 递归介绍1.2 基本步骤1.3 代表题目1.3.1 入门题---青蛙跳1.3.2.1 初级题226.翻转二叉树112.路径总和1.3.3 中级题---汉诺塔问题1.3.4 进阶题---细胞分裂1.1 递归介绍 如果在函数中存在着调用函数本身的情况&#xff0c;这种现象就叫递…...

ThreadLocal 源码级别详解

ThreadLocal简介 稍微翻译一下&#xff1a; ThreadLocal提供线程局部变量。这些变量与正常的变量不同&#xff0c;因为每一个线程在访问ThreadLocal实例的时候&#xff08;通过其get或set方法&#xff09;都有自己的、独立初始化的变量副本。ThreadLocal实例通常是类中的私有静…...

训练营day17

110.平衡二叉树 力扣题目链接 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a;一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 返回 true 。 示…...

Nodejs原型链污染

Nodejs与JavaScript和JSON 有一些人在学习JavaScript时会分不清Nodejs和JavaScript之间的区别&#xff0c;如果没有node&#xff0c;那么我们的JavaScript代码则由浏览器中的JavaScript解析器进行解析。几乎所有的浏览器都配备了JavaScript的解析功能&#xff08;最出名的就是…...

【Vue3】element-plus中el-tree的递归处理赋值回显问题

目录一&#xff1a;先获取所有权限tree二&#xff1a;在获取所有该角色能有的权限tree三&#xff1a;递归处理勾选tree节点由于项目是从0-1开始构建的 rbac都需要重新构建对接 所以涉及到了权限管理和菜单管理 一级菜单包含多个二级菜单 若二级不全选&#xff0c;则一级显示 半…...

C语言---宏

专栏&#xff1a;C语言 个人主页&#xff1a;HaiFan. 专栏简介&#xff1a;本专栏主要更新一些C语言的基础知识&#xff0c;也会实现一些小游戏和通讯录&#xff0c;学时管理系统之类的&#xff0c;有兴趣的朋友可以关注一下。 #define预处理预定义符号define#define定义标识符…...

算法导论—路径算法总结

图算法 单源最短路径 Bellman-Ford算法&#xff1a; 顶点为V&#xff0c;边为E的图 对每条边松弛|V|-1次边权可以为负值若存在一个可以从源结点到达的权值为负值的环路&#xff0c;算法返回False时间复杂度&#xff1a;O(VE) 有向无环图单源最短路径 DAG-SHORTEST-PATHS …...

程序环境--翻译+执行

ANSI C标准下&#xff0c;有两种程序环境。 第1种是翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令。 翻译环境包括&#xff1a;预处理&#xff08;预编译&#xff09;编译汇编链接。四个步骤。 第2种是执行/运行环境&#xff0c;它用于实际执行代码。 链接…...

微信小程序内部那些事

微信小程序没有window、document&#xff0c;它更像是一个类似 Node.js 的宿主环境。因此在小程序内部不能使用 document.querySelector 这样的选择器&#xff0c;也不支持 XMLHttpRequest、location、localStorage 等浏览器 API&#xff0c;只能使用小程序自己提供的 API&…...

这是从零在独自开开发,将是副业赚钱最好的平台!

文章目录最重要的事情放前面1.前言2.简单介绍一下3.【独自开】介绍3.1 分层标准化平台架构3.2 集成第三方数字接口3.3 支持各个行业的系统定制开发4.如何在【独自开】赚钱获取收益?4.1 如何称为【独自开】开发者?最重要的事情放前面 通过平台的审核也可以得到相应的奖金&…...

Spring MVC 之获取参数(对象、JSON格式数据、URL地址参数、文件、Cookie)

文章目录1. 获取单个参数2. 获取多个参数3. 获取对象4. 后端参数重命名 RequestParam5. 接收 JSON 格式的数据 RequestBody6. 从 URL 地址中获取参数 PathVariable7. 上传文件 RequestPart8. 获取Cookie (CookieValue)/Session/header8.1 获取 Request 和 Response 对象8.2 获取…...

永磁同步电机中BEMF电阻的作用

一、电路原理图 二、原理分析 如图一我们测的是相电压&#xff0c;从理论上我们知道我们测得相电压是一个马鞍波形&#xff0c;马鞍波形中并没有隐含 转子的位置和速度信息。那么为什么我们还要有这样一个电路呢&#xff1f; 这个问题其实困惑了我好久&#xff1f;直到有一天…...

JAVA练习45-二叉树的层序遍历

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、题目二叉树的层序遍历 …...

超高精度PID调节器的特殊功能(3)——变送输出(转发)功能及其应用

摘要&#xff1a;变送输出是高级PID控制器的一项重要扩展功能&#xff0c;可用于多区控制、串级控制、比值控制和差值控制以及数据采集及记录。为展示变送输出功能的强大作用&#xff0c;本文主要针对超高精度VPC 2021系列PID控制器&#xff0c;介绍了变送输出的具体功能、参数…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...

一些实用的chrome扩展0x01

简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序&#xff0c;无论是测试应用程序、搜寻漏洞还是收集情报&#xff0c;它们都能提升工作流程。 FoxyProxy 代理管理工具&#xff0c;此扩展简化了使用代理&#xff08;如 Burp…...

密码学基础——SM4算法

博客主页&#xff1a;christine-rr-CSDN博客 ​​​​专栏主页&#xff1a;密码学 &#x1f4cc; 【今日更新】&#x1f4cc; 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 ​编辑…...