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

相关文章

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~

poj 3068 有流量限制的最小费用网络流

题意: m条有向边连接了n个仓库,每条边都有一定费用。 将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。 求最小的费用是多少。 解析: 抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。 汇点与n - 1相连,费用为0,容量为2。 每条边之间也相连,费用为每条边的费用,容量为1。 建图完毕之后,求一条流量为2的最小费用流就行了

poj 2112 网络流+二分

题意: k台挤奶机,c头牛,每台挤奶机可以挤m头牛。 现在给出每只牛到挤奶机的距离矩阵,求最小化牛的最大路程。 解析: 最大值最小化,最小值最大化,用二分来做。 先求出两点之间的最短距离。 然后二分匹配牛到挤奶机的最大路程,匹配中的判断是在这个最大路程下,是否牛的数量达到c只。 如何求牛的数量呢,用网络流来做。 从源点到牛引一条容量为1的边,然后挤奶机到汇点引一条容量为m的边

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s