ECCV2020 | 300+FPS!超快的结构感知车道检测新网络

2024-06-21 08:32

本文主要是介绍ECCV2020 | 300+FPS!超快的结构感知车道检测新网络,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方蓝字,获得更多精彩内容

精彩内容

浙大提出:超快速结构感知的车道线检测网络 ,在速度和准确性方面综合表现出色!
轻量级版本速度高达300+ FPS!
论文链接:
https://arxiv.org/abs/2004.11757
代码刚开源:
https://github.com/cfzd/Ultra-Fast-Lane-Detection
作者团队:浙江大学(李玺团队)

1

摘要


从上图可以看出,车道线检测要面临很多的难题,比如车辆的遮挡、各种复杂光线的影响,甚至有时候根本看不到车道线。

车道线检测方法通常被视为像素分割的问题。受人类感知的启发,在严重遮挡和极端光照条件下对车道线的识别主要基于上下文和全局信息。基于这种观察,本文提出了一种新颖,简单而有效的方法,我们将车道线检测过程视为使用全局特征的基于行(row-based)的选择问题,使用全局特征在图像的预定义行中选择车道的位置,而不是基于局部接受域分割车道的每个像素,这大大降低了计算成本。在全局特征上使用较大的感受野,还可以处理具有挑战性的场景。

此外,基于该公式,还提出了结构损失,以对通道结构进行显式建模。在两个车道线检测基准数据集上的大量实验表明,这种方法可以在速度和准确性方面达到最先进的性能。轻量级版本甚至可以以相同的分辨率每秒获得300+帧,这至少比以前的最新方法快4倍。

2

创新及贡献


本文的主要贡献是提出一个车道线识别的新公式,根据该公式有了以下几方面的贡献:

  • 提出了一种新颖、简单、有效的车道检测算法,该算法主要针对快速行驶和无视觉线索的问题。与深度分割方法相比,本文方法是选择车道的位置,而不是分割每个像素,并在不同的维度上工作,速度飞快。此外,使用全局特征进行预测,比分割公式具有更大的接受域。通过这种方式,没有视觉线索的问题也可以被广告掩盖。(参下图)

  • 在此基础上,提出了一种利用车道先验信息的结构损失。据知,这是首次尝试在深车道检测方法中明确优化这类信息。

  • 所提出的方法在具有挑战性的CU Lane数据集上,在准确性和速度方面都达到了最先进的性能。我们的方法的轻量级版本甚至可以达到300+ FPS,在相同的分辨率下,性能也相当,这至少比以前最先进的方法快4倍。

在右边的部分,详细显示了一行的选择。行锚是预定义的行位置,我们的公式定义为水平地选择每个行锚。在图像的右侧,引入了一个背景网格单元来表示该行中没有车道。

3

具体思路

3.1 车道检测新公式

本文提出将车道检测问题转化为基于全局图像特征的行选择方法。换句话说,是使用全局特性在每个预定义行上选择车道的正确位置。在本文构建的公式中,车道被描述为一系列位于预先定义的行上的水平位置,即,行锚。

为了表示位置,第一步是网格化。在每个行锚上,位置被划分为许多单元格。通过这种方式,车道的检测可以描述为在预定义的行锚上选择特定的单元格,如图3(a)所示。

假设最大车道数为C,行锚数为h,网格单元数为w,假设X为全局图像特征,fij为用于选择第i车道上车道位置的分类器,第j行锚。则车道预测可表示为:

假设Ti,j是正确位置的一个独热标签。则我们的公式优化为:

由式(1)可以看出,我们的方法是根据全局特征来预测每个行锚上所有位置的概率分布,然后根据概率分布来选择正确的位置。

  • 如何解决高速度的问题

通过图3可以看出,本文的公式比传统的分割要简单。

假设图像大小为H×W。一般来说,预定义的行锚和网格大小的数量远少于一个图像的大小,也就是说,h《h和w《w。这样,原始的分割需要进行h×w、 是C+1维的分类,而我们公式只需要解决C×h分类,是(w+1)维。通过这种方式,可以减少很大的计算规模,例如,使用的常见设置CULanedataset,理想的计算成本的方法是1.7×10^4的flops,一个用于分割的是9.2×10^5flops。计算成本大大降低,因此可以达到非常快的速度。

  • 如何解决无视觉线索的问题

从感受野的角度来看,本文公式具有整个图像的感受野,远远大于分割方法。背景信息和来自图像其他位置的信息可以用来解决无视觉线索的问题。从学习的角度来看,基于我们的公式,利用结构损失也可以学习到车道形状、方向等先验信息,参考3.2节。这样,无视觉线索的问题就可以在我们的公式中得到解决。

另一个显著的优点是,这种公式以基于行的方式对车道位置进行建模,使得有机会明确地建立不同行的关系。原有的由低水平的像素级建模和高水平的车道长线结构造成的语义鸿沟可以得到缓解。

3.2 车道线结构损失 structural-loss

第一个是由车道是连续的事实推导出来的,也就是说,相邻行锚的车道点应该相互靠近。在本文的公式中,车道的位置由一个分类向量表示。通过约束分类向量在相邻行锚上的分布来实现连续特性。这样,相似度损失函数可以为:

另一个结构损失函数关注车道的形状。为了考虑形状,需要计算每排锚上的车道位置。直观的想法是通过寻找最大响应峰,从分类预测中获得位置。在这项工作中,使用二阶差分方程来约束车道的形状,可以写成:

其中:

最终,整体结构损失可以表示为:

3.3 特征聚合 Feature aggregation

损失设计主要关注车道之间的相互关系。在本节中,我们提出了一种辅助的特征聚合方法,该方法主要关注全局上下文和局部特征的聚合。提出了一种利用多尺度特征对局部特征进行建模的辅助分割任务。这里使用交叉熵作为辅助分割损失。这样,我们方法的整体损失可以写成:

整个结构可以参考下图:

辅助分支显示在上半部分,只有在训练时才有效。特征提取器显示在蓝色框中。基于分类的预测和辅助分割任务分别显示在绿色和橙色框中。对每个行锚进行分组分类。

4

实验及结果

4.1 数据集

4.2 消融实验

分别使用25、50、100和200个单元格来分割图像,结果如下所示:

定位方法的有效性:

本文模型的有效性:

TUSimple数据集:

CULane数据集:

可视化效果:

请长按或扫描二维码关注本公众号

喜欢的话,请给我个在看吧

这篇关于ECCV2020 | 300+FPS!超快的结构感知车道检测新网络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1080716

相关文章

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多