ECCV2020超快车道线检测算法——Ultra Fast Structure-aware Deep Lane Detection论文浅读
文章目录
- 前言
- 一、深度分割的局限性
- 二、目前车道线检测的难点
- 三、超快速车道线检测算法
- 1.算法定义
- 2.如何解决速度的问题
- 3.如何解决“no-visual-clue”的问题
- 4.总体结构图
- 5.算法缺点
前言
随着智能互联、人工智能技术以及新能源技术的井喷式发展,自动驾驶技术发展的如火如荼。
车道线检测作为自动驾驶技术的重要组成部分,是实现自动驾驶的前提。因此近几年中,车道线检测任务成为了计算机视觉领域研究的热点。
对于车道线检测任务,目前主流的两种方法有:
传统图像处理的方法
深度分割的方法
早期已有很多基于传统图像处理实现的车道线检测算法,但随着大家研究的深入,车道线检测任务所应对的场景越来越多样化,逐步已经脱离了对于“白、黄色线条”这种低阶理解。
目前更多的方式是寻求对于语义上车道线存在位置的检测。深度分割方法自然比传统的图像处理方法具有更强的语义表示能力,所以现代车道线检测最主要的方法是将其视为像素级分割的问题。但深度分割处理车道线检测也具有一定的局限性。
该文章首先给大家简单介绍一下使用深度分割的局限性,其次介绍一篇ECCV2020上一篇超快车道线检测算法的设计思想。
- 原论文链接
- 代码链接
- 原文作者的知乎解答
一、深度分割的局限性
- 速度慢
因为分割是逐像素分类的,要对图像中每一个像素点进行分类。为了分割车道线要进行非常密集的计算,导致的结果就是速度比较慢。 - 局部感受野
分割的另一个问题是感受野问题。因为分割一般是全卷积得到分割结果,而卷积基本上是比较局部的,所以每个像素的感受野有限。在其他分割问题中可能问题不大,但在车道线检测中,问题就很大了。
二、目前车道线检测的难点
为什么局部感受野的问题对于车道线检测任务中,影响较大呢?这也是目前车道线检测的一大难点。
因为车道线检测目前的一大难点就是寻找语义上的线,而不是局限于表观存在的线。如下图所示:
图中车道线受光照影响和周围车辆的遮挡,已经完全识别不出车道线所在位置。而在这种严重遮挡和极端光照条件下,车道线识别主要是基于背景信息和全局信息。故对于上图这种语义线的检测,需要对全局有很好的感知才能实现良好的定位。也就是需要我们对车道线有更高级别的语义分析。
三、超快速车道线检测算法
为了解决深度分割的两个问题,也为了简单建模车道线,提出了一个全新的车道线检测算法。该论文的创新点:
利用车道线先验,设计structural loss给网络输出增加几何约束,解决上面提到的问题
在CULane和TuSimple上均取得不错结果,检测速度达300fps以上(使用的GPU是1080Ti)
1.算法定义
将车道线检测定义为寻找车道线在图中某些行位置的集合,即基于行方向上的位置选择、分类。如下图所示:
图中可以看出,Row anchors我们称之为行锚,它是预定的行位置,在每个行锚上,位置被划分为许多单元格。车道线检测就被描述为在预定义的行锚上选择某些单元格。
2.如何解决速度的问题
首先,我们知道如果想要检测一条车道线的图像大小是H * W,对于分割问题,需要处理H * W个分类问题。但是该方案是行向选择,只需要处理h个行上的分类问题,只不过每行上的分类问题是W维的。这样就把原来H * W个分类问题简化为了只需要h个分类问题,而且由于在哪些行上进行定位是可以人为设定的,因此h的大小可以按需设置,但一般h是远小于图像高度H的。
下图,展示了该方法与基于分割的车道线检测方法的比较。
图中,我们可以看出,分割算法需要进行(C+1)维的H * W个分类,该算法只需要解决(w+1)维的C * h分类问题。因此,
- 分割算法的计算代价
H * W * (C+1)
- 该算法的计算代价
C * h *(ω+1)
一般情况下,预定义的行锚数量和网格大小都远远小于图像的大小,因此该方法将计算复杂度缩减到了一个极小的范围内,解决了分割速度慢的问题,极大地提速了车道线检测算法的速度。该方法能够达到300+fps。
3.如何解决“no-visual-clue”的问题
首先,我们要明确对于没有视觉线索的问题就是意味着在目标位置没有信息。如下图所示:
从图中我们可以看出,一条车道被一辆车挡住了,但该算法仍然可以通过其他车道、道路形状甚至汽车方向的信息确定该车道的位置。所以解决无视觉线索问题的关键就是利用其他地点的信息。
本论文通过两个角度去解释该算法是如何解决“没有视觉线索”这个问题的。
- 感受野的角度
由于该算法不是分割的全卷积形式,是一般的基于全连接层的分类,所以它使用的特征是全局特征。所以,该方法在检测某一行的车道线位置时,感受野就是全图大小。那么来自图像其他位置的上下文信息可以用来解决无视觉线索的问题。
- 学习的角度
使用平滑性和刚性加入车道线的先验约束,除了分类损失外,进一步提出了两个损失函数。
1. similarity loss
是由车道是连续的这一事实推导出来的,也就是说相邻的行锚中的车道点应该彼此接近。在该公式中,车道的位置由分类向量表示。因此,通过约束分类向量在相邻行锚上的分布来实现连续性。将相邻行上分类的L1范数定义为平滑性,希望车道线位置在相邻行上是相近且平滑变化的。
2. shape loss
该损失函数侧重于车道的形状。一般来说,大多数车道都是直的,即是是弯道,由于透视效果,它的大部分仍是直的。在这项工作中,该算法使用二阶差分方程来约束车道的形状,由于车道线大多数是直线,因此二阶差分为0,所以约束其二阶差分与0的差异可以在优化过程中使得预测出的车道线更直。
最终的structural loss是为:
由于分割方法得到的是车道线的二值分割图,其结构是逐像素建模,因此几乎无法实现对上述高层语义(平滑、刚性)层级的约束,这也是该算法的另一个优点。
4.总体结构图
蓝线上是辅助分支,蓝线下是主要分支。特征提取器显示在蓝框中,分类预测显示在绿色框中,辅助分割任务显示在橙色框中。
需要注意的是,为了获取全局的上下文信息,作者在网络训练过程中加入了一个语义分割的分支,从而实现全局和局部信息的聚合,在测试阶段删除。这样,即使我们增加了额外的分割任务,该算法的运行速度也不会受到影响。
最终的total loss是:
5.算法缺点
1. structural loss多用来约束纵向的车道线几何,算法对其他方向车道线的检测能力存疑
2. 能检测的车道线数目有上限,需要人工设置(即上文提到的参数C)
ECCV2020超快车道线检测算法——Ultra Fast Structure-aware Deep Lane Detection论文浅读相关推荐
- ECCV2020超快车道线检测算法:Ultra Fast Structure-aware Deep Lane Detection
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:cfzd| 来源:知乎 https://zhuanlan.zhihu.com/p/1575307 ...
- Ultra Fast Structure-aware Deep Lane Detection论文解读
这是一篇ECCV2020的文章 文章:https://arxiv.org/abs/2004.11757 代码:GitHub - cfzd/Ultra-Fast-Lane-Detection: Ultr ...
- 基于循环特征位移聚合器的车道线检测(RESA: Recurrent Feature-Shift Aggregator for Lane Detection)
2021年的车道线检测新方法. 官方公开视频.论文.源码: https://www.bilibili.com/video/BV1664y1o7wg https://arxiv.org/abs/2008 ...
- ECCV2020 | Gen-LaneNet:百度Apollo提出两阶段的3D车道线检测算法,已开源
点击上方"3D视觉工坊",选择"星标 干货第一时间送达 这篇文章收录于ECCV2020,是百度Apollo团队发表的关于3D车道线检测的文章,针对3D-LaneNet做了 ...
- 【车道线检测】车道线检测算法汇总
文章目录 零. 概述 1. DataSet 2. 车道线检测难点 3. 数据增强 一.基于分割和辅助实例化信息的方法 1. HDMapNet: An Online HD Map Constructio ...
- 实时车道线检测算法 | LaneATT-250FPS LSTR-420FPS
车道线检测领域突然飞速发展,关注一下最新的两篇文章 一.Keep your Eyes on the Lane: Attention-guided Lane Detection 论文地址:https:/ ...
- 车道线检测算法经典编程
车道线检测算法经典编程 车道线曲线拟合算法编程 计算经过(50,50),(90,120),(70,200)三点的Catmull_Rom样条曲线. IplImage* img = cvCreateIma ...
- Transformer 又立功了!又快(420 fps)又好的车道线检测算法
点击上方↑↑↑"视学算法"关注我 来源:公众号 我爱计算机视觉 授权 分享一篇新出的论文 End-to-end Lane Shape Prediction with Transfo ...
- 详解车道线检测算法之传统图像处理
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 / 导读 / 车道线检测算法分为传统图像处理方法和深度学习方法.本文详细介绍用传统图像处理方法来解决车 ...
最新文章
- margin折叠问题
- boost源码剖析之:boost::multi_array
- 在电脑上安装Linux操作系统(ubuntu)
- 在 IntelliJ IDEA 中,如何快速将选中文件用资源管理器打开
- hazelcast入门教程_Hazelcast入门指南第7部分
- 【OFDM系列3】AWGN下基于循环前缀(CP)OFDM调制解调原理、信噪比计算及仿真(H Harada经典OFDM书籍中代码详解及更正)
- vue.js常用命令
- 服务器u8系统数据库不存在,用友u8服务器端数据库不装
- 1.4编程基础之逻辑表达式与条件分支 02 输出绝对值
- Logback 深入分析
- 答案--Java面试笔试题(3年以上)
- 好用的滚动式截图工具picpick
- AutoIt上路03-添加工具栏
- 关于神经网络中的shape问题
- 谷歌此号码无法验证解决
- 制造业OEER语言数据挖掘之相关性分析
- 华为服务器故障灯不开机_华为手机开不了机指示灯亮怎么办?
- 2020东软面试题小计(校招Java篇)
- Android Retrofit 2.0(三)从源码分析原理
- 反弹Shell命令一键生成工具
热门文章
- 经典案例分析:企业人力资源管理系统诊断
- 篇百度前员工发表的博客,在这篇长文里回忆了他离开百度的原因、他眼中的百度乱
- sharepoint搭建文档服务器,SharePoint 2013 安装和配置概述
- Android开源音频编辑工具ringdroid
- iOS 清除缓存封装
- 关闭数字健康 android 魅族,魅族Flyme数字健康,手机使用情况尽收眼底,还能限制使用...
- 【秦时明月卡通动漫壁纸图集★(∩_∩)★】
- RT-thread rt_kprintf()函数格式化输出浮点数
- unity愤怒的小鸟学习制作(一)
- 招商银行网点管理系统