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

Gen-LaneNet论文精读总结

Gen-LaneNet: A Generalized and Scalable Approach for 3D Lane Detection

文章目录

        • Gen-LaneNet: A Generalized and Scalable Approach for 3D Lane Detection
        • 1. 本文解决问题
        • 2. 实现方法(Method)
          • 2.1 基于几何关系的anchor表示
          • 2.2 网络和训练
        • 3. Synthetic dataset & 实验(Experiments)
          • 1. Dataset -- Aopllo Synthetic dataset
          • 2. Dataset split
        • 4. 启示

Gen-LaneNet是ECCV 2020的一篇文章,其主要在3D-LaneNet的基础上进行了改进。本文依据几何关系, 在不同于3D-LaneNet的坐标系中对anchor 重新进行了表示,并证明这种表示形式的合理性以及优点,同时本文提出了一个二阶段的框架, 将图像分割和几何信息的学习解耦为两个subnetwork。本文提出了一个新的3D车道线检测的模拟数据集。

1. 本文解决问题

本文主要解决的是3D-LaneNet中存在的问题,首先本文提及3D-LaneNet在anchor的表示中使用了不正确的坐标框架,导致top-view视图中ground-truth与真实的视觉特征(top-view中的实际车道线)不匹配。其次本文提出3D-LaneNet中通过图像特征学习外参会导致学习到的几何参数会受到图像变换的影响,比如部分遮挡和天气等情况的变换。

2. 实现方法(Method)

2.1 基于几何关系的anchor表示

在本任务中由于需要使用monocular img的中间媒介进行3D lane的预测,所以获得top-view的过程可以总结如下:3D坐标系(自车坐标空间)中的点**(x,y,z)通过相机内外参数转变为img-plane (u,v),img-plane通过单映性矩阵**实现透视变换转变为top-view plane (透视变换图像) ( x ‾ , y ‾ \overline{x},\overline{y} x,y).由于这个过程中有相机参数的参与所以 ( x ‾ , y ‾ \overline{x},\overline{y} x,y)与(x,y)在理论上是不相同的。

但若要满足在自车坐标系(x,y,z)和top-view坐标系( x ‾ , y ‾ , 0 \overline{x},\overline{y},0 x,y,0)中分别取两点,使其在img-plane对应同一点(即此时top-view中的该点与实际自车坐标系点表示同一点),则根据几何关系可以得到此时相机中心与上述两点应该在同一条射线上。如下图,所以根据几何关系可以推导出:
x = x ‾ ⋅ ( 1 − z h ) y = y ‾ ⋅ ( 1 − z h ) x = \overline{x}\cdot(1-\frac{z}{h}) \\ y = \overline{y}\cdot(1-\frac{z}{h}) x=x(1hz)y=y(1hz)
所以通过透视变换图像中的坐标点可以通过几何关系得到实际的3D空间中对应的坐标点。且该几何关系具有普适性,无需对pitch,yaw,roll等相机安装角度进行假设。更为详细的推导见论文附录部分。

在这里插入图片描述

根据以上几何理论基础,Gen-LaneNet中的anchor坐标设置在透视变换图像中,这样设置可以使用透视图特征作为输入,直接通过网络进行输出同一坐标系下的预测值。而车道线在road坐标系下的x,y坐标则通过上述公式进行计算。其anchor的设置除坐标系不同外与3D-laneNet大致相同,其每个anchor可以写为 X A i = ( x t i , z t i , v t i , p t i ) t ∈ { c , l } X_A^{i}={\mathbf{(x_t^i, z_{t}^i, v_{t}^i,} p_t^{i})}_{t\in\{c,l\}} XAi=(xti,zti,vti,pti)t{c,l}. 在3D-laneNet基础上,c,l表示两种车道线的类别,v表示每个点是否可见。

P.S. 3D-LaneNet中其anchor的表示是在road坐标系下的,其先通过外参转换到road坐标系,再直接将3D坐标投影到x,y平面(即直接去掉z坐标)得到top-view中车道线的坐标点,这种做法在上下坡时,其top-view中的点与通过透视变换得到的透视图中车道线是不相符的,如图b中的蓝线就是在上坡时3D-laneNet得到的投影视图中的车道线,与实际白线是不一致的。

2.2 网络和训练

如下图,本文提出一个两阶段的模型进行3D-lane的预测。第一阶段进行图像分割,得到车道线的分割图,第二阶段使用第一阶段分割图的输出,进行透视变换转变为top-view视角分割特征图,在其上作用多层卷积得到3D-Lane坐标点的预测。

在这里插入图片描述

本文提到根据上述几何关系可以发现预测车道线的height(z)的问题可以转换成预测一个向量空间(2.1图b中黑线)使得在top-view中车道线的所有点被移动到完全平行的位置。(若是遇到不平行的车道线呢)

Indeed estimating ground truth height is conceptually equivalent to estimating a vector field such that all the points corresponding to lanes in the top-view are moved to position overall in parallelism.

这样可以认为3D-lane坐标的预测主要是编码图像中的几何关系,所以使用分割后的稀疏特征图即可,所以在第二阶段模型(本文命名为3D-GeoNet)中,直接使用分割后的输出进行坐标点的预测。这也使得坐标点的预测部分将注意力集中在几何关系,而不会受到图片中其他特征,比如天气,部分遮挡等因素的影响。理想情况下当分割部分做的足够好时,3D-GeoNet网络在理论上只使用模拟数据便可以进行训练。这也是本文将网络解耦成两部分的依据

网络的训练过程如下:首先将自车坐标系中的3D车道线的ground-truth变换到透视变换图像下,并在 Y r e f Y_{ref} Yref处与最近的anchor进行匹配。网络的loss如下,相较于3D-laneNet有几点改变。首先公式中的 x t i x_t^i xti x ^ t i \hat{x}_t^i x^ti均是在透视图坐标系下的而不是 C r o a d C_{road} Croad坐标系。其次加入了可视化向量v.

在这里插入图片描述

3. Synthetic dataset & 实验(Experiments)

1. Dataset – Aopllo Synthetic dataset

该数据集为使用Unity游戏引擎生成得虚拟数据,数据集包括三个地图场景,分别是高速公路地图(6000个sample),城市地图(1500个sample)以及居住区地图(3000个sample),同时数据集中包含每个sample对应的分割图(semantic segmentation map)和深度图(depth map),以及每个sample中3D Lane的信息。数据集中的每个sample采集自不同的位置和不同的时间(早中晚),同时采用两种等级的路标退化(lane-marker degradation)随机的相机高度(1.4~1.8m)以及随机的pitch角度(0° ~ 10°)。每个图像的内参是固定的。

车道线存在遮挡,在实际情况中前景遮挡的车道线需要进行预测,而后景遮挡的车道线舍弃。该数据集通过深度图和分割图判断遮挡类型(见原文),并对后景遮挡的车道线部分丢弃。如下图(图中黑色部分为后景,丢弃):

在这里插入图片描述

2. Dataset split

为了从不同角度验证算法的效果,GenLane中提出了几种分割数据集的方法,这在后续其他模型的实验中提供了启示作用,各分割方法如下:

  • Balanced scenes:训练集和测试集按照一比一分配整个dataset,使用大量的无偏的数据验证算法效果。
  • Rarely observed scenes: 训练集与Balanced scenes相同,但测试集只选择城市地图中包含复杂地势比如急转弯,显著海拔变换等图片。这种分割方法用来测试模型算法面对训练集出现较少图片的泛化性。
  • Scenes with visual variations: 训练分割网络时采用和Balanced scenes相同的数据,训练3D车道线自网络时在其训练数据中剔除特定时间的数据(黎明前),在测试集只使用剔除掉的这部分数据进行测试。该分割方法用来测试网络针对不同光亮变换(illumination)的检测效果。

4. 启示

  1. 本文提到的几何关系,以及针对该几何关系设计网络的思路。

  2. 本文分成两个阶段模型,只使用masks进行第二阶段3DLane的训练,这样可以很大程度上减少训练网络使用的2D车道线数据集。可以借鉴这种思路,在遇到这种问题时将模型分为两个阶段,在第二阶段只使用输入图像的部分关键特征可以极大减少第二阶段模型受原始图片中其他因素影响,因此可以减少使用大量的训练数据。

    Gen-LaneNet [13]decouples 3D lane extraction from the image features by proposing a two-stage pipeline,which al lows 3D lane estimation to be only dependent on 2D lane masks rather than the original images.This pipeline makes it possible to reduce the demand for expansive 3D lane la beling and utilize large 2D lane detection datasets to train a more robust lane feature extractor.

    ----- Reconstruct from Top View—Related work

  3. 本文以几何关系说明要得到3D坐标的z应该对那些特征进行解析,这一点可以参考,深入探讨其中理论,可以尝试以此设计网络结构。

  4. 本文主要是以3D-laneNet为baseline,在此基础上进行改进。可以学习本文做比较的方法,以及针对3D-laneNet网络设计缺陷提出解释的原因。(1. anchor与view-feature不匹配 2.end-to-end使得网络受到图像feature的影响,导致需要大量数据训练)。

  5. 本文是两阶段模型,本文的实验中体现了两阶段模型实验的一种方法。(分为两部分进行实验等)。

相关文章:

  • Spring Cloud Alibaba全家桶——微服务网关Gateway组件
  • 基于微信PC端小程序抓包方法
  • SQL Server 实现邮件发送功能(配置步骤及存储过程源码)
  • 刘禹锡最经典诗文10首,每一首都是千古名作,读懂受益一生
  • mybatisplus快速实现动态数据源切换
  • Vue-条件渲染的基本使用(v-if,v-show,v-else相关指令使用)
  • PMP项目管理认证第一节(备考阶段准备)
  • 【数据结构】TopK,堆排序, --堆的初始化与应用
  • 自然语言处理: 知识图谱的十年
  • 关于加解密、加签、验签等
  • 分布式事务问题
  • 终于解决了悬疑好多年的低版本CAD VBA不能在高版本CAD使用的问题
  • SpringBoot 项目的创建与启动
  • 百科创建:7种有效的百科词条创建技巧
  • 天狗实战SpringBoot+Vue(二)项目结构搭建(上)
  • 【EOS】Cleos基础
  • 〔开发系列〕一次关于小程序开发的深度总结
  • java多线程
  • mysql 5.6 原生Online DDL解析
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • python_bomb----数据类型总结
  • React+TypeScript入门
  • redis学习笔记(三):列表、集合、有序集合
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • XForms - 更强大的Form
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 测试如何在敏捷团队中工作?
  • 解决iview多表头动态更改列元素发生的错误
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 码农张的Bug人生 - 见面之礼
  • 微信小程序:实现悬浮返回和分享按钮
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 异步
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​520就是要宠粉,你的心头书我买单
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • ###C语言程序设计-----C语言学习(3)#
  • #{}和${}的区别?
  • #if 1...#endif
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (1)bark-ml
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (强烈推荐)移动端音视频从零到上手(下)
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (一)appium-desktop定位元素原理
  • (转载)Linux 多线程条件变量同步
  • ***原理与防范
  • .NET Framework .NET Core与 .NET 的区别
  • .NET MVC第三章、三种传值方式