一种基于道路分类特性的超快速车道检测算法

摘要:

本文介绍了一种新颖、简单但有效的车道检测公式。

车道检测是自动驾驶和高级驾驶员辅助系统 (ADAS) 的基本组成部分,在实际高阶驾驶辅助应用中,考虑车道保持、转向、限速等相关的控制问题,这种方式通常是通过受限的车辆计算资源为下游任务提供即时感知结果,车道检测算法通常会被大量、快速且高效的执行。此外,车道检测可区分和定位道路上的车道标记。

主流的车道检测方法主要将车道检测视为逐像素分割问题,该问题正在努力解决效率问题和具有挑战性的场景(例如严重遮挡和极端照明条件)。受人类感知的启发,严重遮挡和极端光照条件下的车道识别主要基于上下文和全局信息。
 

由车道检测的CornerCase引出的问题如何解?

尽管深度学习模型取得了巨大成功,但仍然存在一些重要且具有挑战性的问题需要解决。

第一个就是效率问题。以前的车道检测方法主要基于分割,这是在密集的自下而上的学习管道中制定的,因此很难实现快速计算。除了效率问题之外,另一个挑战是无视觉线索问题,因为,车道检测任务是找到车道的位置,无论车道是否在可见或不可见都希望采用一定的算法进行有效的道线检测处理,如何处理没有可见信息的严重遮挡和极端光照条件的场景是该领域的一大难点。

如下图1所示。大多数具有挑战性的场景在各种照明条件下都会被严重遮挡或扭曲,导致很少或根本没有可用于车道检测的车道视觉线索。

图片

图 1. 车道检测CornerCase(其中不同的车道用不同的颜色标记)

为了缓解如上这种遮挡问题,需要通过一定的算法追踪可能的检测线索,这类线索暗示了可视化车道线以外且至关重要的线索。例如,道路形状、汽车行驶方向趋势、车道的非遮挡端点等都可能有利于检测。为了能够使用额外的线索,扩大感受野以利用更多信息,比车道检测更可取。

这就提出了一个自然的问题:能否找到一种快速、全局的、具有较大感受野的车道检测任务公式?

出于上述动机,本文介绍了一种自上而下的稀疏公式来解决效率和无法探测到视觉道线的问题。首先,介绍了一种新颖的行锚驱动的车道表示方法。即将一条车道用一系列预定义的行锚点上的坐标来表示,如下图所示。

图片

图 2. 行锚系统示意图

由于一条车道可以用一小组关键点很好地表示在固定的稀疏行锚点系统中,因此效率问题可以通过锚驱动表示的稀疏性来解决。行锚是预定义的稀疏行位置,车道可以以基于分类的方式表示为行锚上的坐标。

其次,使用基于分类的方式来学习具有锚驱动表示的车道坐标。使用基于分类的方式能够确保使用了整个全局特征,能够确保感受野与整个输入一样大。它使网络能够更好地捕获全局和远程信息进行车道检测,并有效缓解无视觉线索的问题。

此外,在这项工作中将带有行锚的车道表示扩展到混合锚系统。行锚系统可能不适用于所有类型的车道,并且可能会导致更多定位相关的问题。

图片

图 3. 每种车道的定位精度图示

如上图 3a 和 3b 所示,(a) 显示了 CULane 数据集对车道的定义。(b)是行锚系统的车道精度。(c) 说明了柱锚系统的车道精度。可以看到,使用行锚点时,旁车道的定位精度明显低于自车道的定位精度。如果我们使用列锚点呢?在图3c中,则可以看到相反的现象,即柱锚系统对自车道的定位能力较差。也就是对于自车道来说,行锚系统可以获得更好的性能,而列锚系统则对于侧车道获得更好的性能。

根据上述观察,将这种现象定位为放大定位误差问题。这个问题使得行锚很难定位水平侧车道,同样使得列锚很难定位垂直自车道。因此,建议使用混合(行和列)锚点来分别表示不同的车道。具体来说,对自车道使用行锚,对旁车道使用列锚。这样可以缓解定位误差放大的问题,提高性能。

如上描述使用的混合锚定系统,是可以通过锚定系统上的坐标来表示车道。如何有效地学习这些坐标是另一个重要问题。

最直接的方法是使用回归。通常,回归方法适用于局部范围预测设置,并且在长期建模方面相对较弱和全球本地化。为了应对全局范围预测,建议以基于分类的方式学习车道坐标,它使用不同的类别表示不同的坐标。在这项工作中,进一步将原始分类扩展到序数分类。在序数分类中,相邻类之间具有密切的序数关系,这与原始分类不同。

在本文介绍的算法中,类别性质上是有序的(例如,第 8 类的车道坐标在空间上始终位于第 7 类的车道坐标的右侧)。序数分类的另一个属性是类空间的连续性。比如7.5级这样的非整数类是有意义的,可以看作是7级和8级之间的中间类。为了实现序数分类,提出了两个损失函数来建模类之间的序数关系,包括基本分类损失和数学期望损失。利用序数关系和连续类空间属性,可以使用数学期望代替argmax来获得预测的连续类。期望损失是为了约束预测的连续类等于真实值。通过同时限制基数损失和期望损失,可以输出具有更好的序数关系,并有利于车道的局部化。

已有的车道建模检测方法论

传统的车道检测方法通常使用低级图像处理技术来解决车道检测问题。通过使用低级图像处理,传统方法本质上以自下而上的方式工作。主要思想是通过 HSI 颜色模型和边缘提取算法等图像处理来利用视觉线索。当然,最早也有尝试使用立体视觉系统的边缘提取算法来检测车道和障碍物的。除了使用不同颜色模型和边缘提取方法的特征之外,也有学者建议利用现实世界中车道通常是平行这一先验信息使用投影几何和逆透视映射来实现车道检测。尽管许多方法尝试了不同的传统车道特征,但在复杂场景中,来自低级图像处理的语义信息仍然相对不足。基于此,将跟踪作为另一种流行的后处理解决方案,以增强检测的鲁棒性。除了跟踪之外,马尔可夫和条件随机场,以及采用学习机制(如模板匹配、决策树和支持向量机)的方法也被用作后处理方法。

随着深度学习的发展,一些基于深度神经网络的方法在车道检测方面显示出优越性。这些方法通常使用指示车道存在和位置的热图来处理车道检测任务。在这些早期尝试之后,主流方法开始将车道检测视为分割问题。例如,VPGNet这种网络提出了一种由消失点引导的多任务分割网络,用于车道和道路标记检测。为了扩大逐像素分割的感受野并提高性能,SCNN 在分割模块中采用了特殊的卷积运算。通过处理切片特征并将它们一一相加来聚合来自不同维度的信息,这类似于循环神经网络。RONELD提出了一种通过分别查找和构建直线和曲线活动车道来增强 SCNN 的方法。RESA也提出了一种类似的方法,通过循环特征转换来扩大感受野。由于分割方法的计算量很大,一些工作尝试探索用于实时应用的轻量级方法。自注意力蒸馏(SAD)则采用注意力蒸馏机制,将高层和低层的注意力分别视为训练者和被训练者。IntRA-KD还使用区域间亲和力蒸馏来提高训练网络的性能。这样,通过注意力蒸馏,浅层网络可以具有与深层网络相似的性能。CurveLane-NAS则通过引入了神经架构搜索技术来搜索为车道检测量身定制的分割网络。在 LaneAF中,这项工作提出通过基于分割的亲和力场投票来检测车道。FOLOLane提出对局部模式进行建模,并以自下而上的方式使用全局几何解码器实现全局结构的全局预测。

除了主流的分割公式外,一些工作还尝试探索其他车道检测公式。采用长短期记忆(LSTM)网络来处理车道的长线结构。同样的原理,Fast-Draw预测每个车道点的车道方向,然后依次绘制出来。车道检测问题被视为通过聚类二进制片段进行实例分割。E2E提出通过可微最小二乘拟合来检测车道,并直接预测车道的多项式系数。类似地,Polylanenet和LSTR也提出分别通过深度多项式回归和Transformer来预测车道的多项式系数。

LaneATT建议使用将图像中的线条视为锚点的对象检测管道。然后,它对密集线锚点的车道进行分类和定位。遵循利用消失点先验和对象检测管道的想法,建议使用由消失点引导的线锚。与之前作品的2D视图不同,还有许多方法尝试在3D空间中检测车道。

本文中的超快车道检测算法

与之前介绍的方法不同,本文介绍的方法是自上而下的建模方法。通过自上而下的建模,该方法自然可以更多地关注全局信息,这有利于解决无视觉线索问题。与之前的自顶向下方法相比,本文介绍的方法旨在采用行和混合锚车道表示的新车道检测公式,这可以大大降低学习难度并加快检测速度。

在本节中,将详细描述如何在超快车道中进行检测方法。首先,在所提出的混合锚系统上演示了车道的坐标表示。其次,展示了深层网络架构的设计和相应的序数分类损失。最后,实现了对车道的有效分类。

1、带锚点的车道表示

为了表示车道,引入了用于车道检测的行锚点,如图3所示。车道用行锚点上的点表示。然而,行锚系统可能会导致定位误差放大的问题,如图2所示。通过这种方式,可以进一步将行锚系统进行扩展到混合锚系统。

图片

图 4. 放大的定位误差问题的图示

蓝色区域代表没有锚定系统的理想定位误差带(网络可能出现的最小不可避免的误差,这可能是由网络的偏差、注释器引入的误差等引起的)。紫色区域显示锚定系统引入的放大误差带。可以看到,当车道和锚点之间的角度很小时,定位误差会被极大地放大。放大的定位误差问题也适用于列锚。

这个问题的原因如图4所示。假设没有任何锚系统的理想最小定位误差为ε,这可能是由网络偏差、标注错误等引起的。可以看到,行锚系统上的误差带乘以因子1sinθ。当车道和锚之间的角度θ很小时,放大系数1sinθ将趋于无穷大。例如,当车道严格水平时,不可能用行锚系统来表示车道。这个问题使得行锚很难定位更水平的车道(通常是侧车道),同样,它使得列锚很难定位更垂直的车道(通常是自车道)。相反,当车道和锚点垂直时,锚点系统引入的误差最小(在这种情况下θ=0),并且它等于理想的定位误差ε。

受上述观察的启发,建议使用混合锚来表示车道。对于不同类型的车道,使用不同的锚定系统来减少放大的定位误差。具体来说,规则是:一条车道只能分配一种锚点,并且选择与该车道更垂直的锚点类型。在实践中,像 CULane和 TuSimple这样的车道检测数据集仅注释两个自车道和两个侧车道,如图 2a 所示。这样,对自车道使用行锚,对侧车道使用列锚,混合锚系统可以缓解放大的定位误差问题。

通过混合锚点系统,我们可以将车道表示为锚点上的一系列坐标,如图 5 所示。

图片

图 5.混合锚系统的车道表示

输入图像及其注释显示在左侧。对于自车道,使用行锚来表示车道标记的位置,边车道采用柱锚。通过混合锚定系统,车道可以简单地表示为对应于四个车道的四个矩阵,如右图所示。此外,锚点的固定和共享坐标可以省略。对于不存在的位置,使用-1来表示。

假设将 Nrow 表示为行锚点的数量,将 Ncol 表示为列锚点的数量。同时,假设分配给行锚点的车道数为 Nr Lane,分配给列锚点的车道数为 Nc Lane。对于每个车道,首先分配相应的锚定系统,该锚定系统具有最小的定位误差。然后计算车道与每个锚点之间的线与线的交点,并记录交点的坐标。如果车道在某些锚点之间没有交叉点,则坐标将设置为-1。

图像中的车道可以用固定大小的目标T来表示,其中每个元素要么是车道的坐标,要么是-1,其长度为Nrow × Nr Lane + Ncol × Nc Lane。T可以分为两部分Tr和Tc,分别对应行锚和列锚上的部分,大小为Nrow × Nr。

图片

图6 混合锚点的网络架构设计

2、锚点驱动的网络设计

借助混合锚点的车道表示,设计网络的目标是通过分类来学习固定大小的目标 Tr 和 Tc。为了通过分类来学习 Tr 和 Tc,将 Tr 和 Tc 中的不同坐标映射到不同的类。假设 Tr 和 Tc 被归一化(Tr 和 Tc 的元素范围从 0 到 1 或等于 -1,即“无车道”情况),类别数为 Nr dim 和 Ncdim。映射可以写为:

图片

其中Trcls 和Tccls 为坐标的映射类标号,b·c 为取整操作,Tr cls_i,j 为Trcls 第i 行j 列的元素。这样,就可以将混合锚点上的坐标学习转化为维度分别为Nrdim和Ncdim的两个分类问题。对于无车道情况,即 Tri,j 或 Tcm,n 等于 -1,使用附加的双向分类来指示:

图片

其中Trext是坐标存在的类标号,Trext_i,j是Trext第i行j列的元素。柱锚 Tcext 的存在目标类似:

图片

通过上述推导,整个网络就是学习Trcls、Tccls、Trext 和Tcext 两个分支,分别是定位分支和存在分支。假设输入图像的深层特征为X,网络可以写为:

图片

等式4是直接展平来自主干的深层特征并将其输入分类器。其中P和E是定位和存在分支,f是分类器,flatten(·)是展平操作。相比之下,传统的分类网络使用全局平均池化(GAP)。使用 GAP 会消除空间信息并导致性能不佳。这里使用 flatten 而不是 GAP 的原因是空间信息对于基于分类的车道检测网络至关重要。P和E的输出均由两部分组成(Pr,Pc,Er和Ec),分别对应于行和列锚点。Pr和Pc的大小分别为NrLane × Nrow × Nrdim和NcLane × Ncol × Ncdim,其中Nrdim和Ncdim是行和列锚点的映射分类维度。Er和Ec的大小分别为NrLane×Nrow×2和NcLane×Ncol×2。

3、序数分类损失

正如我们在等式中看到的,一个本质属性是上述分类网络中的类具有序数关系。在分类网络中,相邻类被定义为具有紧密的顺序关系,这与传统的分类不同。为了更好地利用序数关系的先验,建议使用基本分类损失和期望损失。

图片

图 7. 建议的期望损失的图示

4、网络推理

接下来将展示如何在推理过程中获取想要的车道检测结果。以行锚点系统为例,假设 Pr i,j 和 Er i,j 是第 i 个车道和第 j 个锚点的预测。那么Pr i,j 和Er i,j 的长度分别为Nr dim 和2。车道每个位置的概率可以写为:

图片

其中P robr i,j 的长度为Nr dim。

接下来,通过预测分布的数学期望获得车道的位置。此外,不存在车道的预测将根据存在分支的预测被过滤掉:

图片

最后,对获得的位置 Loc 进行缩放以适合输入图像的大小。

总结

本文介绍了一种新颖、简单但有效的车道检测公式。与以前的方法相比,本方法将车道表示为基于锚的坐标,并且坐标以基于分类的方式学习。该公式在解决无视觉线索问题方面非常快速且有效。基于该公式,提出了一种混合锚系统,进一步扩展了之前的行锚系统,可以有效地减少定位误差。具体来说,将车道检测过程视为使用全局特征锚驱动的序数分类问题。首先,在一系列混合(行和列)锚点上表示具有稀疏坐标的车道。接着,在锚驱动表示的帮助下,将车道检测任务重新表述为序数分类问题以获取车道坐标,通过锚驱动表示显着降低了计算成本。利用序数分类公式的大感受野特性,解决了高速场景和极端场景的车道线问题。

作者 | 山丘

来源 | 焉知汽车

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/702906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB环境下基于图像处理的视网膜图像血管分割

预防糖尿病对每个人的健康至关重要,而糖尿病的早期症状在眼底视网膜血管会有所体现,如静脉血管扩张、轻度弯曲等。高血压作为常见疾病,在中国有多达2.45亿的患者。高血压的病情也会在眼底视网膜血管上有所体现,如交叉压迫征等反映…

鸿蒙开发【WebGL】简单了解

WebGL的全称为Web Graphic Library(网页图形库),主要用于交互式渲染2D图形和3D图形。目前HarmonyOS中使用的WebGL是基于OpenGL裁剪的OpenGL ES,可以在HTML5的canvas元素对象中使用,无需使用插件,支持跨平台。WebGL程序是由JavaScr…

基础复习(IDA调试器)

1.选择IDA调试后端 在顶部有一个下拉菜单,选择调试器后端位置 很多用户实际上使用的是Windows版本的IDA,该IDA可以直接调试Windows下32bit和64bit的程序 2.本地调试启动方法 载入IDA后,程序实际上在对程序内置的一个字符串进行base64解码…

ARM Cortex-X5 传言表现不佳,高功率浪涌和低多核分数影响即将推出的核心设计

ARM 的新 Cortex-X5 设计似乎遇到了问题,有新的传言称,超级核心在提高时钟速度时会经历严重的高功耗,并且当最大功率限制降低时,多核性能会下降。虽然这对高通来说可能不是问题,因为据说其 Snapdragon 8 Gen 4 采用定制…

第四套CCF信息学奥赛c++ CSP-J认证初级组 中小学信奥赛入门组初赛考前模拟冲刺题(阅读程序题)

第四套中小学信息学奥赛CSP-J考前冲刺题 二、阅读程序题 (程序输入不超过数组或字符串定义的范围&#xff0c;判断题正确填√错误填X;除特殊说明外&#xff0c;判断题 1.5分&#xff0c;选择题3分&#xff0c;共计40分) 第一题 归并排序 1 #include <iostream> 2 usi…

力扣--哈希表/滑动窗口/双指针3.无重复字符的最长子串

思路分析&#xff1a; 使用双指针 i 和 j 表示子串的起始位置和结束位置。遍历字符串 s&#xff0c;对于每个字符&#xff1a; 如果字符不在 hash 中&#xff0c;将其加入 hash&#xff0c;同时更新最长子串的长度 result。如果字符已经在 hash 中&#xff0c;说明有重复字符出…

unity发布webGL压缩方式的gzip,使用nginx作为web服务器时的配置文件

unity发布webGL压缩方式的gzip&#xff0c;使用nginx作为web服务器时的配置文件 Unity版本是&#xff1a;2021.3 nginx的版本是&#xff1a;nginx-1.25.4 Unity发布webgl时的测试 设置压缩方式是gzip nginx配置文件 worker_processes 1;events {worker_connections 102…

MATLAB练习题:计算动物能存活的天数的期望值

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 假设自然界中有一种动物&#xff0c;它每天被天敌捕食的概率均…

如何移除禁用WordPress默认小工具(附WordPress默认小工具名称)

WordPress 自带的小工具非常多&#xff0c;但是我们用到的也就那么几种&#xff0c;甚至一种都不会用到&#xff0c;所以很有必要注销&#xff08;去除&#xff09;掉一些不用的小工具。实现的方法也很简单&#xff0c;只需将以下代码&#xff0c;根据自己的情况删除需要用的小…

Pyglet综合应用|推箱子游戏地图编辑器之图片跟随鼠标

目录 推箱子游戏 升级一&#xff1a;鼠标操作 升级二&#xff1a;增加网格 升级三&#xff1a;模拟按钮 综合应用&#xff1a;地图编辑器 关卡地图洗数 推箱子游戏 本篇为之前写的博客《Pyglet综合应用&#xff5c;推箱子游戏之关卡图片载入内存》的续篇&#xff0c;内容…

MCU多核异构通信原理

摘要&#xff1a; 本文结合瑞萨RZ/G2L 多核处理器&#xff0c;给大家讲述一下多核异构设计及通信的原理。 随着电子技术的不断发展&#xff0c;以及市场需求的日益增长&#xff0c;嵌入式系统不仅要求执行复杂的控制任务&#xff0c;还需要实时地采集和处理数据。 为了满足这…

精品基于springboot的线上辅导班系统的开发与设计-课程报名

《[含文档PPT源码等]精品基于springboot的线上辅导班系统的开发与设计[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; Java——涉及技术&#xff1a; 前端使用技术&#…

再探二分法

推荐阅读 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;一&#xff09; 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;二&#xff09; 文章目录 推荐阅读二分查找题目思路解法左闭右闭式写法左闭右开式写法 二分查找 题目 给定一个…

面向面试的机器学习知识点(4)——分类模型

省流版&#xff1a; 本文介绍机器学习中的回归算法&#xff1a;逻辑回归、KNN、SVM、随机森林和XGBoost。作为机器学习的有监督学习方法&#xff0c;分类模型是最重要也是最常见的一类算法&#xff0c;在数据分析等岗位的笔试面试中都是常客&#xff0c;非常值得深入研究&…

自定义神经网络四之编写自定义神经网络

文章目录 前言神经网络组件代码整体的项目结构Tensor张量Layers层NeuralNet神经网络Loss损失函数Optim优化器data数据处理train训练 神经网络解决实际问题实际问题训练和推理代码 总结 前言 自定义神经网络一之Tensor和神经网络 自定义神经网络二之模型训练推理 自定义神经网络…

基于容器和集群技术的数据自动化采集设计和实现

目标&#xff1a;部署mysql服务容器并使用docker构建包含python爬虫脚本的容器采集数据到mysql数据库。 环境&#xff1a;Centos7、已配置Kubernetes集群及docker。 环境配置请参考以下文章&#xff1a; CentOS7搭建Kubernetes集群 Kubernetes集群信息如下(虚拟机主机名和IP…

Linux安装Mysql设置自启动失败,bugFailed to execute operation: No such file or directory

bug: [rootlocalhost mysql-5.7]# systemctl enable mysql.service Failed to execute operation: No such file or directory 出现bug原因&#xff1a; ①CentOS7的服务systemctl脚本存放在&#xff1a;/usr/lib/systemd/&#xff0c;有系统&#xff08;system&#xff09;和…

微服务基础环境搭建

一.创建父工程 用于聚合其他微服务模块 1 新建 Maven 项目 JDK8Maven 项目Web 2 项目设置 编码的选择 UTF8JDK 版本的选择 3 删除 src 目录 4 配置父级 pom.xml SpringBoot&#xff1a;模块探究之spring-boot-dependencies-CSDN博客 子模块能够依赖当前父级 pom.xml 配置 【My…

福特锐界2021plus 汽车保养手册

福特锐界2021plus汽车保养手册两页&#xff0c;零部件保养要求&#xff0c;电子版放这里方便查询&#xff1a;

QT文件IO

七、文件IO QFileDialog文件对话框 与QMessageBox一样&#xff0c;QFileDialog也继承了QDialog类&#xff0c;直接使用静态成员函数弹窗&#xff0c;弹窗的结果&#xff08;选择的文件路径&#xff09;通过函数返回值返回。 // 获取一个打开或保存的文件路径 // 参数1&#xff…