近期阅读的几篇关于车道线检测的论文总结。

1. 车道线检测任务需求分析

1.1 问题分析

针对车道线检测任务,需要明确的问题包括:

(1)如何对车道线建模,即用什么方式来表示车道线。

从应用的角度来说,最终需要的是车道线在世界坐标系下的方程。而神经网络更适合提取图像层面的特征,直接回归方程参数不是不可能,但限制太多。

由此,网络推理输出和最终结果之间存在一个Gap,需要相对复杂的后处理去解决。

(2)网络推理做到哪一步。

人在开车时观察车道线,会同时关注两方面信息:

  • 绘制在路面上的车道线标识本身
  • 通过车道线标识,表征的抽象的车道分隔边界线

同样,在网络结构设计时,也可以把推理目标设置为这两类:

  • 图像分割方案倾向于识别第一种信息,对每一个像素是否属于车道线标识,以及标识的类别进行判断。
  • 类图像检测方案倾向于识别第二种信息,在设定的一系列anchor中判断是否存在车道线,以及回归车道线的位置参数。

1.2 面临挑战

针对车道线检测任务,面临的挑战主要有:

(1)车道线这种细长的形态结构,需要更加强大的高低层次特征融合,来同时获取全局的空间结构关系,和细节处的定位精度。

(2)车道线的形态有很多不确定性,比如被遮挡,磨损,以及道路变化时本身的不连续性。需要网络针对这些情况有较强的推测能力。

(3)在实际应用中,车辆稳定行驶在车道中央的工况并不算关键工况,车辆的偏离或换道过程才是关键工况,此时会产生自车所在车道的切换,车道线也会发生左/右线的切换。

据此,一些提前给车道线赋值固定序号的方法,在实际使用中是有巨大缺陷的,在换道过程中会产生歧义的情况。

这种方法在刷数据集指标的时候可能效果OK,但在应用中,从网络结构设计的角度,无法应对换道这种关键工况。

2. 论文要点解读

按照arXiv上发布的时间顺序。

《Robust Lane Detection from Continuous Driving Scenes Using Deep Neural Networks》

论文链接

将车道线检测作为一个分割问题来处理,最后输出车道线前景和背景的2值分割图。

网络整体上使用了CNN+RNN的结构。

CNN的部分采用了常规的Encoder-Decoder结构。

在Encoder和Decoder之间插入ConvLSTM模块,通过ConvLSTM对Encoder部分提取的Feature-map进行处理,提取有用的隐含历史信息。如下图所示:

训练阶段,针对Tusimple数据集,将连续5帧作为输入,并在带有标注的最后一帧计算Loss。

推理阶段,连续帧图像持续输入,每一帧图像经过处理都会输出对应的推理结果。

CurveLane-NAS: Unifying Lane-Sensitive Architecture Search and Adaptive Point Blending

论文链接

参考了Dense Prediction Based(分割的思路)和 Proposal Based(检测的思路)两种车道线检测的框架,以后者为基础,采用了NAS的方法,获得了一个更适合车道线检测任务的网络结构。

网络整体上可以分为以下几个部分:

  • 特征提取及多尺度融合,在这两个阶段均引入了NAS的方法;
  • 多尺度检测输出,以充分获取大范围内的全局结构特征,以及小范围内的精确定位
  • 结果融合,采用一种叫做Adaptive Point Blending Search的方法(类似于一种NMS方法,将低层输出中位置精度回归较高的点逐步向高层输出替换,得到最后融合优化的车道线点输出)

而这篇文章还有一个重大的贡献,即发布了一个大规模的车道线检测公开数据集Curvelanes。在此之前,只有Tusimple和CULane,Curvelanes的体量跟CULane相当,场景更加多样化。

《Heatmap-based Vanishing Point boosts Lane Detection》

论文链接

网络整体上同样采用Encoder-Decoder结构,在车道线的预测Head以外,增加了一个Head,用于消失点的预测。

将消失点看做一种特殊的关键点,采用Heatmap的方式来预测。

通过这种方式,将消失点预测任务作为一种限制和引导因素,来优化车道线检测的结果。

车道线检测和消失点检测,两个任务有多种组合方式。

经试验,LD-mid-VP的结构,在CULane数据集上能够获得最好的结果。这种结构将特征提取阶段的输出和车道线预测的输出进行信息融合,再经过一些卷积层(mid部分)的处理后,输出消失点的预测结果。

从直观层面理解,人根据视觉判断消失点,也是根据车道线的位置关系,来推测消失点位置,具有一定的因果关系。因此把消失点预测任务后置,反过来也能够促进前端的车道线预测任务更好地收敛。

在此之前,还有一篇较有代表性的文章 VPGNet,同样是通过消失点来引导网络学习,以期获得更好的收敛效果。不同的是VPGNet是通过四象限分割的方式来定义消失点位置,感觉不如Heatmap的方式更加符合直觉。

Lane Detection Model Based on Spatio-Temporal Network with Double ConvGRUs

论文链接

整体思路与第一篇论文比较类似。都是Encoder+RNN+Decoder。结构如下图所示:

不同的是,它的RNN部分由两个ConvGRU组成,Front-ConvGRUMiddle-ConvGRUs

Front-ConvGRU位于Encoder部分的第二个卷积模块之后。理论依据主要是认为视觉感知和记忆之间存在联系,因此在低层特征中引入RNN模块。

此处有一点没有理解,从文中给出的结构图看,FCGRU这个模块,并没有在前后帧的时序上产生联系(对比MCGRU的画法可以发现),连接关系类似一个普通的Conv模块,只有一个输入,一个输出。

我不确定是示意图画的问题,还是此处的GRU模块有什么特殊的用法。

按论文的说法,经FCGRU处理前后的Feature-map可视化结果。车道线特征更加明显突出。

Middle-ConvGRUs位于Encoder和Decoder部分之间,作用主要是用于提取连续帧输入的时序关联信息,与前文所说的ConvLSTM是类似的。

RESA: Recurrent Feature-Shift Aggregator for Lane Detection

论文链接

网络同样基于Encoder-Decoder结构进行改进。在Encoder和Decoder部分之间,插入RESA模块,增强空间结构信息在全局的传播能力。结构如下图所示:

同样的思路可以回溯到SCNN这篇文章

同样是通过在Encoder-Decoder之间插入一个SCNN模块,来增强网络感知空间结构信息的能力。

按论文的说法,RESA模块比SCNN模块的效率要高,时间复杂度与尺度的关系为$log_2L$。

3. 总体趋势分析

总结近期车道线检测领域的论文,有如下一些发展趋势:

  • 车道线检测的应用场景具有很明显的时序信息特征,为了利用到时序信息,通常采用Encoder-RNN-Decoder这样的网络架构,利用RNN模块,对Encoder提取的Features进行进一步加工,提取连续帧带来的历史信息。

    可以参考人的视觉暂留现象,人在开车时观察车道线,能够自觉把虚线识别为一条空间上连续的线,也是利用了前后的时序信息。

  • 在全图分割的思路以外,出现了一些以目标检测的思路来处理车道线检测问题的方法。

    此处还有一篇较有代表性的文章 PINet,等读完之后进行补充。

  • 除了车道线检测本身,通过增加一些额外的相关任务,引导网络更好地学习,来获得更好的效果。

Lane-Detection 近期车道线检测论文阅读总结的更多相关文章

  1. 带你读AI论文丨LaneNet基于实体分割的端到端车道线检测

    摘要:LaneNet是一种端到端的车道线检测方法,包含 LanNet + H-Net 两个网络模型. 本文分享自华为云社区<[论文解读]LaneNet基于实体分割的端到端车道线检测>,作者 ...

  2. 【Papers】Robust Lane Detection via Expanded Self Attention 论文解读

    论文题目:Robust Lane Detection via Expanded Self Attention 链接地址:https://arxiv.org/abs/2102.07037 文章核心想要解 ...

  3. 深度学习笔记(十四)车道线检测 SCNN

    论文:Spatial As Deep: Spatial CNN for Traffic Scene Understanding 代码:https://github.com/XingangPan/SCN ...

  4. 深度学习笔记(十二)车道线检测 LaneNet

    论文:Towards End-to-End Lane Detection: an Instance Segmentation Approach 代码:https://github.com/MaybeS ...

  5. 3D车道线检测:Gen-LaneNet

    3D车道线检测:Gen-LaneNet Gen-LaneNet: A Generalized and Scalable Approach for 3D Lane Detection 论文链接:http ...

  6. opencv车道线检测

    opencv车道线检测 完成的功能 图像裁剪:通过设定图像ROI区域,拷贝图像获得裁剪图像 反透视变换:用的是老师给的视频,没有对应的变换矩阵.所以建立二维坐标,通过四点映射的方法计算矩阵,进行反透视 ...

  7. SCNN车道线检测--(SCNN)Spatial As Deep: Spatial CNN for Traffic Scene Understanding(论文解读)

    Spatial As Deep: Spatial CNN for Traffic Scene Understanding 收录:AAAI2018 (AAAI Conference on Artific ...

  8. 车道线检测LaneNet

    LaneNet LanNet Segmentation branch 完成语义分割,即判断出像素属于车道or背景 Embedding branch 完成像素的向量表示,用于后续聚类,以完成实例分割 H ...

  9. 语义分割之车道线检测Lanenet(tensorflow版)

    Lanenet 一个端到端的网络,包含Lanenet+HNet两个网络模型,其中,Lanenet完成对车道线的实例分割,HNet是一个小网络结构,负责预测变换矩阵H,使用转换矩阵H对同属一条车道线的所 ...

随机推荐

  1. Fitness - 05.23

    倒计时222天 运动40分钟,共计8组,4.2公里.拉伸10分钟. 每组跑步3分钟(6.5KM/h),走路2分钟(5.5KM/h). 终于赶在姨妈前完成第3周的跑步训练了,可喜可贺~~ 下周预计要休息 ...

  2. 万级K8s集群背后etcd稳定性及性能优化实践

    背景与挑战 随着腾讯自研上云及公有云用户的迅速增长,一方面,腾讯云容器服务TKE服务数量和核数大幅增长, 另一方面我们提供的容器服务类型(TKE托管及独立集群.EKS弹性集群.edge边缘计算集群.m ...

  3. 小程序开发-小程序tabBar不显示的原因分析

    在尝试小程序开发时,tabBar这个是个非常常见的组件,但是今天在进行开发时,设置了TabBarb并没有显示,被这个问题困扰了近半小时,现在将排查问题后所得到的经验记录下来. 首先 如果tabBar不 ...

  4. 用Maven给一个Maven工程打包,使用阿里云镜像解决mvn clean package出错的问题,使用plugin解决没有主清单属性的问题

    本来在STS里做了一个极简Maven工程,内中只有一个Main方法的Java类,然后用新装的Maven3.6.3给它打包. 结果,Maven罢工,输出如下: C:\personal\programs\ ...

  5. ZT:15 个你非了解不可的 Linux 特殊字符

    https://os.51cto.com/art/202003/611595.htm 不知道大家接触 Linux 系统有多久了,可曾了解过 Linux 中有哪些特殊的字符呢?其实啊,那些特殊字符都大有 ...

  6. LongAccumulator类的BUG——reset方法并不能保证初始值正确赋值

    LongAccumulator.reset方法并不能重置重置LongAccumulator的identity:初始值正确,使其恢复原来的初始值.当初始值为0是不会发生这个问题,而当我们设置初始值如1时 ...

  7. Apache2.4 下载和安装 - Win10

    Apache安装包已放入百度网盘,链接地址在本文最后 1.下载Windows版本的Apahce安装包 a. 访问官网,进入下载页面 https://www.apachelounge.com (apac ...

  8. linux 多进程

    Linux下的多进程编程初步 Linux下的多进程编程初步 多进程编程 1 Linux下进程的结构 2 Linux下的进程控制 21 僵尸进程 22 fork 23 exec 函数族 3 Linux下 ...

  9. spyder如何切换python虚拟环境?

    2020/5/29 在anaconda下创建了很多个python虚拟环境,现在我想使用 spyder 运行python程序, 并且使用其中某一个虚拟环境,方法如下: 首先要知道 Anaconda自带的 ...

  10. 解决spark streaming集成kafka时只能读topic的其中一个分区数据的问题

    1. 问题描述 我创建了一个名称为myTest的topic,该topic有三个分区,在我的应用中spark streaming以direct方式连接kakfa,但是发现只能消费一个分区的数据,多次更换 ...