车道线检测综述——【极市】方浩:车道线检测新SOTA,RESA个人笔记

2024-03-28 09:50

本文主要是介绍车道线检测综述——【极市】方浩:车道线检测新SOTA,RESA个人笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

视频链接:https://www.bilibili.com/video/BV1664y1o7wg

一、背景

车道线检测:从输入的图片中检测出车道线,图片是由车辆的前置摄像头拍摄。
在这里插入图片描述在这里插入图片描述

1.1 车道线检测在自动驾驶中如何使用

在这里插入图片描述
自动驾驶从算法的角度主要分为三个部分:环境感知、决策、执行。环境感知即通过各种传感器采集数据,用算法进行分析,再输入Planning模块,Planning模块根据自己要开往哪里并分析周围环境来规划下一步动作,动作输入到Control模块,Control模块再与硬件作交互,实现具体执行。
车道线检测的执行是在感知模块,在Planning模块被使用。
在Planning模块中使用车道线检测:

  1. 轨迹规划
  2. 行为预测
  3. 车道保持

1.2 问题定义

输入:[3×H×W]的图片
输出:N×车道线(实例、点、参数等)

1.3 主要难点

  1. 遮挡非常严重,路面上的人和车非常多,有的车道线磨损严重,有的车道线是一段一段的。
  2. 车道线又细又长,监督信号非常稀疏,正样本非常少
  3. 一般要求实时性

二、相关工作

2.1 传统方法

2.1.1 Hough变换

论文: Yu and A. K. Jain, “Lane boundary detection using a multiresolution Hough transform,” Proceedings of International Conference on Image Processing, Santa Barbara, CA, USA, 1997, pp. 748-751 vol.2, doi: 10.1109/ICIP.1997.638604
首先,将RGB彩色图变为灰度图
再做高斯模糊
再做边缘检测,得到mask点
最后再做Hough变换,找到整张图的所有直线,得到一堆参数,并不知道直线的起点与终点
在这里插入图片描述
传统算法的局限性:

  1. 若出现遮挡,直线拟合效果差
  2. 曲线车道线效果不好

2.2 深度学习方法

2.2.1 检测类方法

2.2.1.1 LanNet

论文:Towards End-to-End Lane Detection: an Instance Segmentation Approach
在这里插入图片描述
实例分割
像素嵌入+聚类
缺点:依赖于聚类,结果不稳定;起始位置不确定;效果并没有特别好。

2.2.1.2 SCNN

论文:Spatial As Deep: Spatial CNN for Traffic Scene Understanding
在这里插入图片描述
RNN——让信息在水平和竖直方向传递
语义分割+后处理

缺点:用类似RNN做信息传递,速度慢

2.2.1.3 light-weight
  1. self-attention distillation(SAD)
    论文:Learning Lightweight Lane Detection CNNs by Self Attention Distillation
    在这里插入图片描述
  2. CurveLane-NAS(5000GPU hours)
    论文:

2.2.2 新的思路

2.2.2.1 Gridding

论文:CurveLane-NAS: Unifying Lane-Sensitive Architecture Search and Adaptive Point Blending
在这里插入图片描述
将一张图片的像素做水平分割与竖直分割,将很多像素变为一个cell,相当于把整张图做了降采样,对每个cell做分类(网格化)
行分类——判断这行是否有车道线
速度很快,但因为降采样精度会下降

2.2.2.2 PolyLaneNet:Lane Estimation via Deep Polynomial Regreesion

论文:PolyLaneNet: Lane Estimation via Deep Polynomial Regression
在这里插入图片描述
假设车道线为曲线,曲线是由很多参数决定的,使用多项式去学习这些参数。
缺点:若摄像头换角度拍就不work了

2.2.2.3 Anchor-based

论文:Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection
在这里插入图片描述
强先验
处理变化的情况不太灵活

三、RESA方法

经典的语义分割不能应用于车道线检测的原因:

  1. 严重的遮挡和模糊的车道线
  2. 稀疏的监督信号(车道线又细又长,有的车道线是一段一段的)
    idea:
  3. 强形状先验(label连续)
  4. 空间依赖性,通过空间相关性大概推理车道线
    将远处的特征传过来,近处的特征传过去,或者左边传到右边,右边传到左边,来做信息增强。
    设计一个能够把空间的信息的聚合、把原始特征增强的模块。
    在这里插入图片描述
    图(a)显示了CNN的结果车道线不够完整也不够精细,但RESA可以得到精细且完整的线。
    图(b)对信息进行切片,若从左往右传递,则把每列特征作为一个slice,特征在列与列之间传递,考虑线与线之间特征的相关性;若从上往下传递,则把每行作为一个slise,特征在行与行之间传递 ,考虑近处与远处的连续性。

网络架构:
在这里插入图片描述
图(a)输入一张图片,先经过一个Encoder(VGG、retinanet等)将图片降采样到1/8特征图,再经过RESA将信息增强,最后经过Decoder做上采样到原图大小,输出两个分支,分别是segmentation和判断车道线是否存在(0和1二分类)。
图(b)和(c)是分别从两个方向对特征进行切片,对每个切片使用一层一卷积(即使用一维卷积作用于切片),每个方向要进行K次迭代。
RESA
在这里插入图片描述
上图为从右往左传递的示意图,首先把每一列进行切片,将特征变成一列一列的。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
Decoder
在这里插入图片描述
Decoder主要分为两部分,一部分主要依赖于双线性差值,可得到粗略的预测结果;另外一部分依赖于转置卷积,求精细特征。两部分的结果进行加和出结果。
Decoder的两个作用:

  1. 将通道数量除以2
  2. 上采样

四、RESA的结果和分析

CULane
在这里插入图片描述
TuSimple
在这里插入图片描述在这里插入图片描述
对比实验
在这里插入图片描述在这里插入图片描述
迭代次数
在这里插入图片描述在这里插入图片描述
上下左右传递实验
在这里插入图片描述
分析
在这里插入图片描述
RESA做了空间的特征传递,将稀疏的特征空间转换为丰富的特征空间,即设计一个模块去聚合空间信息和增强由原始的CNN提取的特征。
架构的关键因素:编码器+聚合+解码器。
Encoder可以用任何原始的CNN分类网络。

这篇关于车道线检测综述——【极市】方浩:车道线检测新SOTA,RESA个人笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

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

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

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

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

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

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

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit