【论文阅读】3D-LaneNet

【论文阅读】3D-LaneNet

主要要做的事情就是 lane detection。这里提一下 BEV(Bird‘s Eye View) 感知算法,为了将 2D 图像映射到 3D 空间中,能够更准确的检测物体位置,需要 BEV 感知的结果。后续还会继续了解这方面内容。

文章提出的方法就是在图片上预测车道线。

这个方法应该是第一个非启发式的方法,是直接通过图像(单目深度估计)去学习的方法。而且它是一种基于 anchor 做匹配的方法。

首先基于”平地面假设“【假设1】,即假设当前的路面切平面为路面,可以更方便做映射。

在相机和地面的坐标(系)转换中,可以把相机的外参当作是三个——距离地面的垂直高度 H_cam,竖直和水平方向旋转角(pitch,roll)。

在这篇文章中,假设 roll 角的角度为零【假设2】,只用到了pitch角度。

已知相机高度 h 和 pitch 角度,可以求出相机坐标系 C_cam 向路面坐标系 C_road 的转换 T_c2r。这里用到的方法叫做 IPM(Inverse perspective mapping),逆透视变换。

看一下整体的网络框架:

网络是双通道的结构。

  1. image-view 通道,加入了 H_cam 和 pitch 去提取 image 特征,同时最后学习到 h 和 pitch 做逆透视变换。

  2. top-view 通道,这个视图是虚拟的,用来提取 BEV 空间的特征,最后进行车道线的预测。

  3. 连接两个通道的是 Projective transformation layer,将 image feature map 通过 IPM 转换成 BEV 空间俯视图之后,通道数不变直接和 top-view feature map 做 concate。

然后文章还用了一种基于 anchor 的匹配的方法,作为检测子。

首先,因为 车道线是在 top-view 视图下预测的,沿 x 方向均匀划分一些anchors。anchor 和 gt(ground truth)车道线要进行匹配。在这里,我们要预测的车道线 gt 一共有两种,一种是 lane centerlines(车道中心线),另一种是 lane delimiter(车道边界线)

上图中,左边和中间两列是 centerlines 的预测,右边一列是 delimiter 的预测。

然后,对于 y 方向的 Y_ref,求出 gt 与 Y_ref 的交点,将每个 gt 归属于距其最近(交点的 x 方向距离最小)的anchor。使用非极大值抑制的方法。

这里假设 gt 与 Y_ref 是会有交点的【假设3】,这会导致过短的车道线无法被检测到。

对于每个anchor,记录它匹配到的 gt。delimiter 不会相交,但是centerlines 可能会。每个 anchor 最多会匹配到两个 centerlines (即当两条 centerlines 在 Y_ref 上相交时,如图右侧)。因此对每个 anchor 需要记录三个信息*(c1,c2,d)*,其中,匹配到的左边的 gt 作为 c1。

如下图所示:

在这里插入图片描述

最终车道线预测的输出维度是: 在这里插入图片描述

3 是指有三个预测的 type(c1,c2,d);每个anchor 有 K 个点,对于每个点,预测其*(x 横向偏移,z 深度)*;还有一个当前 gt 应该匹配到该 anchor 上的置信度 p^。anchors 的个数为 N。

最后,看一下损失函数的设计:

第一项是分类置信度的 CE 损失,第二项是横向偏移 x^ 和深度 z^ 的 L1 回归损失。后两项是 image-view 预测的相机外参 H_cam 和 pitch 角度的 L1 损失。

训练的流程就是线通过相机外参和已知的相机内参,包括像素和物理距离缩放尺度等计算出 C_road 坐标系,再将 gt 车道线转换到 C_road 的平面上。最后对其最近的 anchor 进行匹配。

总的来说,这篇文章提出的车道线检测的假设条件还是过于理想,泛化性能还有待进一步的提升。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/11963.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

企业数据安全能力建设思路

在现代社会,企业数据安全已经成为一个非常重要的话题。企业数据安全能力的建设是每个企业都必须面对和解决的问题。企业数据安全能力建设思路包括以下几个方面: 1. 建立完善的安全管理制度 企业要建立完善的安全管理制度,包括信息安全政策、…

注册claude AI账号 slack工作区账号

Claude 是建立在 slack工作区的一个AI人工助手,更像是将chatgpt集成到了会议模式,一个账号实际上拥有了你的会议室和你的AI助手,你可以让你的朋友和同事进入你的房间体验。 Claude是不是openai的产物?目前还不知道,不…

phpstudy本地环境搭建图文教程

作者:Eason_LYC 悲观者预言失败,十言九中。 乐观者创造奇迹,一次即可。 一个人的价值,在于他所拥有的。可以不学无术,但不能一无所有! 技术领域:WEB安全、网络攻防 关注WEB安全、网络攻防。我的…

价值迭代求解马尔可夫决策过程

Value Iteration Algorithm 其算法思想是: 在每一个状态s下, 之迭代算法流程如下: 初始化状态价值state value,即对每个状态的价值都赋一个初始值,一般是0 计算每一个状态-动作对的 动作价值函数,通常通过创建一个二维…

迎难而上,阿里高频考点2023Java岗面试突击手册

上周我接到一位粉丝的私信说目前互联网形势实在对他太不友好,感觉自己每个技术栈都会一点,但不是完全精通。基本二面三面的时候就挂了,已经完全不知道该朝哪个方向努力了,希望可以给他一些建议和方法指导。那么,本次就…

【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

MySQL--表的使用--0409

目录 1.表的基本操作 1.1 创建表 2. 查看表结构 3.修改表 3.1 新增一列 3.2 修改列属性 3.3 修改名字 3.3.1 修改表名字 3.3.2 修改表内列名字 3.4删除 3.4.1 删除列 3.4.2 删除表 1.表的基本操作 查看自己目前在哪个数据库里面 mysql> select database(); 1.1 创…

基于PCA与LDA的数据降维实践

基于PCA与LDA的数据降维实践 描述 数据降维(Dimension Reduction)是降低数据冗余、消除噪音数据的干扰、提取有效特征、提升模型的效率和准确性的有效途径, PCA(主成分分析)和LDA(线性判别分析&#xff0…

状态错误 MSB8040,此项目需要缓解了 Spectre 漏洞的库。从 Visual Studio 安装程序(单个组件选项卡)为正在使用的任何工具集和体

“Spectre Mitigation”缓解错误 如果出现“Spectre Mitigation”这种错误,就要了解下PIPE技术:流水线技术,比如3级流水线,避免CPU空闲,不浪费时间,但是前提是没有跳转,指令都是顺序执行的&…

3.9、互斥锁(互斥量)

3.9、互斥锁(互斥量)1.互斥锁(互斥量)的介绍2. 互斥量相关操作函数3.互斥量函数的使用介绍①pthread_mutex_init②pthread_mutex_destroy③pthread_mutex_lock④pthread_mutex_trylock⑤pthread_mutex_unlock3.利用互斥锁实现线程…

王小川,才是深「爱」李彦宏的那个人?

在推出中国首个类ChatGPT产品「文心一言」后,李彦宏在接受专访时断言,中国基本不会再出一个OpenAI了,「创业公司重新做一个ChatGPT其实没有多大意义,基于大语言模型开发应用机会很大,没有必要再重新发明一遍轮子。」 听…

SPARQL endpoint with Ontop CLI部署,python使用SPARQLWrapper

Ontop CLI部署,避免踩坑0.前言1.提示2.详细部署流程3.python操作4.碎碎念0.前言 教程:Setting up an Ontop SPARQL endpoint with Ontop CLI照着教程来,不知道为啥,总是报错,后来发现,手机搜到的跟电脑不一…

pytorch 数据类型

文章目录一、tensor如何表示字符串数据类型类型判断Dimension 0Dimension 1Dimension 2Dimension 3Dimension 4mixed二、创建Tensorimport from numpyimport from listuninitialized 未初始化set default typerand/rand_like, randintfulllinspaceindex切片三、维度变换总结一、…

尚硅谷大数据技术Scala教程-笔记04【集合】

视频地址:尚硅谷大数据技术之Scala入门到精通教程(小白快速上手scala)_哔哩哔哩_bilibili 尚硅谷大数据技术Scala教程-笔记01【Scala课程简介、Scala入门、变量和数据类型、运算符、流程控制】尚硅谷大数据技术Scala教程-笔记02【函数式编程】…

交换机Access模式和Trunk模式配置演示

一.Access配置 1.创建VLAN 2.设置为接口模式,将接口划入不同VLAN 3.测试 二.Trunk配置 1. 接口VLAN配置 2.设置允许VLAN流量通过,可写all 3.测试 一.Access配置 实现VLAN10 和 VLAN20之间通信隔离 1.创建VLAN [s1]vlan 10 [s1]vlan 20[s1]vlan…

Android中的AsyncTask

近期写了一个项目,在前台刷新界面的时候需要操作数据库,进行数据操作,在UI线程更新数据会导致ANR,程序十分卡,因此用了AsyncTask进行后台数据处理。 介绍 AsyncTask是一个用于在后台线程执行异步任务并在主线程更新U…

set/multiset容器

1、set/multiset容器简介 但是 set 容器只有键值,在插入数据的时候会自动根据 键值 进行排序,所以不允许有相同的键值存在,也不能修改 set 容器元素值,会破坏 set 的数据结构。set 容器的迭代器是只读迭代器 2、set容器 API 操作…

读懂AUTOSAR :DiagnosticLogAndTrace DLT(四)-- API解析

一、周期调用的函数:Dlt_TxFunction 根据参数DltGeneralTrafficShapingSupport,决定如何去发送DLT消息。如果为TRUE,那需要参考参数DltLogChannelTrafficShapingBandwidth为每个Log通道设置发送带宽;如果为FALSE,那么…

纯虚函数和抽象类

什么时候使用纯虚函数: 某些类,在现实角度和项目实现角度,都不需要实例化(不需要创建它的对象),这个类中定义的某些成员函数,只是为了提供一个形式上的借口,准备让子类来做具体化的实现,此时,这个方法就可以定义为"纯虚函数",包含纯虚函数的类,就称为抽象类. 纯虚函…

Java入坑之集合、流与序列化

一、集合 1.1集合定义 集合概念: 保存和盛装数据的容器,将许多元素组合成一个单一单元的容器对象。集合,可用于存储/检索/操作/传输/聚合数据集合框架: 表示和操作集合的体系,包括接口、实现类,集合框架的…