本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》,笔者不是自动驾驶领域的专家,只是一个在探索自动驾驶路上的小白,此系列丛书尚未阅读完,也是边阅读边总结边思考,欢迎各位小伙伴,各位大牛们在评论区给出建议,帮笔者这个小白挑出错误,谢谢!
此专栏是关于《自动驾驶汽车环境感知》书籍的笔记



2.车道线检测

  1. 车道线:用来管制和引导交通的一种标线,由标化于路面上的线条、箭头、文字、标记和轮廓标识组成;
  2. 常见的车道线检测方案:基于传统计算机视觉的检测、基于深度学习的道路特征检测、基于雷达等高精设备的车道线检测;

2.1 基于传统计算机视觉的车道线检测

  1. 传统计算机视觉车道线检测主要依赖高度定义化的手工特征提取和启发式的方法;
  2. 国内外广泛使用的检测方法:基于道路特征和道路模型两种方法;
  3. 基于道路特征:利用车道线与道路之间的物理结构差异对图像进行后续的分割和处理,突出道路特征,实现车道线检测;
  4. 基于道路模型:利用不同的道路图像模型(直线、抛物线、复合型),对模型中的参数进行估计与确定,最终和车道线进行拟合;

2.1.1 基于道路特征检测

基于道路特征检测根据提取特征不同,分为:基于颜色特征、纹理特征、多特征融合;

  1. 基于颜色特征检测

    1. 基于灰度特征检测

      1. 基于灰度特征检测:通过提取图像的灰度特征来检测道路边界和道路标识;
      2. 在车道图像中,路面与车道线交汇处的灰度值变换剧烈,利用边缘增强算子突出图像的局部边缘,定义像素的边缘强度,设置阈值方法提取边缘点;
      3. 常用的算子:Sobel算子、Prewitt算子、Log算子、Canny算子;
      4. 基于灰度特征检测结构简单,对于路面平整、车道线清晰的结构化道路尤为适用;但当光照强烈、有大量异物遮挡、道路结构复杂、车道线较为模糊时,检测效果受到很大的影响;
    2. 基于彩色特征检测
      1. 基于彩色特征检测:通过提取图像的彩色特征来检测道路边界和道路标识,涉及颜色空间的选择和分割策略选取两方面;
      2. 颜色空间:由一组数值描述图像信息的抽象模型,常用的颜色空间:RGB空间、HSI空间、CIE Lab空间;
        1. RGB空间:通过红绿蓝三原色描述图像,RGB分别代表红蓝绿的亮度值,范围为0-1;
        2. HSI空间:用色调H、饱和度S、强度I描述图像,将色调用角度值0-360°表示;
        3. CIE Lab:L代表从黑到白的亮度,取值:0-100,a代表从绿到红的颜色区间,b代表从蓝到黄的颜色区间,取值均为:-120~120;

  2. 基于纹理特征检测
    1. 基于纹理特征检测:通过对包含多个像素点的区域中的纹理强度和纹理方向进行计算,从而对车道线进行检测;
    2. 基于纹理特征检测具有较强的抗噪能力,但当光照强度改变,图像分辨率改变时,计算结果出现偏差;二维图像中提取的纹理特征与三维物体实际的纹理有一定差别,一定程度上影响检测准确度;
  3. 基于多特征融合检测

2.1.2 基于道路模型检测

  1. 直线模型
    直线模型建立在车道线为直线的假设基础上,直线模型数学表达式:
    u=k(v−h)+bu=k(v-h)+b u=k(vh)+b
    其中:u、v表示道路图像的横纵坐标,k表示斜率,b为截距,h为道路消失线在途中的纵坐标;其中:u、v表示道路图像的横纵坐标,k表示斜率,b为截距,h为道路消失线在途中的纵坐标;uvkbh线
    得到道路消失线水平位置后,只需得到kkkbbb即可确定车道线在图像中的位置;在车辆行驶速度不高,且道路弯曲曲率不大的情况下,可以有较好的识别和导航效果;
  2. 双曲线模型
    1. 基于双曲线模型的车道线检测首先运用Canny算子对道路边缘进行检测;
    2. 采用Hough变换提取道路的边界点,使用扩展的Kalman滤波进行预测跟踪来减少道路扫描范围;
    3. 通过左右车道边界参数与双曲线模型参数进行匹配,利用最小二乘法来求解模型参数;

2.2 基于深度学习的车道线检测

2.2.1 LaneNet+H-Net车道线检测

  1. LaneNet将车道线检测问题转为实例分割问题,即:每个车道线形成独立的实例,但都属于车道线这一类别;H-Net由卷积层和全连接层组成,利用转换矩阵H对同一车道线的像素点进行回归;
  2. 对于一张输入图片,LaneNet负责输出实例分割结果,每条车道线一个标识ID,H-Net输出一个转换矩阵,对车道线像素点进行修正,并对修正后的结果拟合出一个三阶多项式作为预测的车道线;
  3. LaneNet将实例分割拆分为语义分割和聚类两部分,编码器分为Embedding和Segmentation两个分支;
    1. Embedding负责对像素进行嵌入表示,训练得到嵌入向量进行聚类;
    2. Segmentation对输入的图像进行语义分割,并对像素点进行二分类,判断属于车道线还是背景;
    3. 最后将两个分支的结果结合得到最终车道线检测的结果;

2.2.2 SCNN车道线检测

CNN问题及SCNN特点:

  1. CNN具有强大的特征提取能力,但由卷积块堆叠的CNN架构没有足够充分的探索图像行和列上的空间关系的能力;
  2. CNN对于经常被遮挡的车道线识别效果不好;
  3. Spatial CNN(SCNN)将传统卷积层接层(layer-by-layer)的连接形式转为特征图中片连片卷积(slice-by-slice)的形式,使图像中的像素行和列之间可以传递信息;
  4. SCNN对于长距离连续形状的目标、大型目标及有着极强空间关系但外观线索不明显的目标,如:车道线、电线杆等具有很好的检测效果;

关于在深度网络中使用空间信息的工作:

  1. 使用循环神经网络(RNN)按每行或每列传递信息,但每个像素点只能接收来自同一行或同一列的信息;
  2. 使用长短期记忆网络(LSTM)的变体来探索语义分割中的上下文信息,但计算量大;
  3. 使用CNN和图模型,如:马尔可夫随机场(MRF)和条件随机场(CRF)结合,通过大卷积核来传递信息;
  4. SCNN在信息传递过程中计算效率比MRF和CRF高,由于使用残差进行信息传递,使训练更容易进行并适用于多种神经网络;

SCNN网络结构:

图a:MRF/CRF网络结构;图b:SCNN网络结构。

SCNN_D的处理过程:

  1. 对于C×H×WC\times{H}\times{W}C×H×W的三维张量,C、H、WC、H、WCHW分别代表通道数、高度、宽度;
  2. 先将其切分为HHH片,将第一片送入C×wC\times{w}C×w的卷积层中(www为卷积核大小);
  3. SCNN将第一片的输出加入到下一片作为输入,重复卷积,直到处理完最后一片;


MRF/CRF和SCNN信息传递对比:

  1. MRF/CRF信息传递方向上较为无序,每个像素点需要接收大量的信息,计算量大,存在大量冗余信息;
  2. SCNN信息传递是顺序的,对于行列数较高的图片,SCNN可以减少大量的计算;

SCNN和其他各种方法的检测效果对比:

2.3 基于激光雷达的车道线检测

基于激光雷达的车道线检测方法:基于反射强度信息

  1. 基于激光雷达反射强度信息形成的灰度图,或根据强度信息与高程信息配合,过滤出无效信息;然后对车道线进行拟合;
  2. 在激光雷达获取的道路环境的三维点云中,检测每一个激光层采集到的可行使区域的回波强度是否发生变化,如果发生变化,将变化点提取并进行标记;
  3. 通过对点云数据中有高程数据的点进行滤波,一定程度上确定出可行使区域,剔除一些和车道线的回波强度接近的物体;
  4. 通过对提取的车道线点云进行聚类和去噪,利用最小二乘法进行拟合,最终提取出车道线;

不同物体的回波强度:

介质 回波强度/dBz 可能的物体分类
沥青、混凝土 5~8 道路、房屋等
特性涂层 12~30 车道线
植被、金属 45~150 树木、车辆等

学习笔记15--车道线检测相关推荐

  1. 学习笔记之车道线相关记录

    一. 车道线相关的知识 &&1.标线的分类 以下分类来自于百科: 按照道路交通标线的功能划分为:指示标线.警告标线和禁止标线. 按标划方法可分为:白色虚线.白色实线.黄色虚线.黄色实线 ...

  2. ECCV2020|超快的车道线检测,代码模型已开源

    作者|cfzd 来源|https://zhuanlan.zhihu.com/p/157530787 很高兴和大家分享一下我们刚刚被 ECCV 2020 接收的新工作:一种超快速的车道线检测算法(Ult ...

  3. ECCV 2020 | 超快的车道线检测

    本文转载自知乎,已获作者授权转载. 链接:https://zhuanlan.zhihu.com/p/157530787 很高兴和大家分享一下我们刚刚被 ECCV 2020 接收的新工作:一种超快速的车 ...

  4. 3D车道线检测能否成为自动驾驶的核心?盘一盘近三年的SOTA论文!

    点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 车道线检测一直都是自动驾驶热门的研究方向,也是整个自动驾驶感知技术栈不可或缺的一环,今天汽车人就带大家盘一盘近 ...

  5. 学习笔记16--环境感知实例之车道线检测

    本系列博客包括6个专栏,分别为:<自动驾驶技术概览>.<自动驾驶汽车平台技术基础>.<自动驾驶汽车定位技术>.<自动驾驶汽车环境感知>.<自动驾驶 ...

  6. python+openCV (入门级)车道线检测 学习笔记

    文章目录 前言 一.openCV安装 二.尝试使用cv2中库函数 1.读取图片 2.图片显示 3.延时/暂停 4.保存图片 5.清楚所有窗口 三.Canny边缘检测 1.高斯滤波 2.图片转换 3.边 ...

  7. 车道线检测的学习笔记

    1 前言 我们准备开始做车道线检测的项目,搭建一个帅气的车道线检测的模型- 2 模型 使用DeepLabv3+: 3 备注 3.1 CPNet的想法还是挺不错的 CPNet指的是华科在 CVPR 20 ...

  8. 车道线检测参考学习资料

    一.GitHub: https://github.com/amusi/awesome-lane-detection(全) https://github.com/ChengZhongShen/Advan ...

  9. 【深度学习】实战教程 | 车道线检测项目实战,霍夫变换 新方法 Spatial CNN

    此文按照这样的逻辑进行撰写.分享机器学习.计算机视觉的基础知识,接着我们以一个实际的项目,带领大家自己动手实践.最后,分享更多学习资料.进阶项目实战,这部分属于我CSDN上的专栏,最后会按照顺序给出相 ...

  10. Lanenet 车道线检测网络模型学习(论文解读+官方模型)

    本文讲解的是用于车道线检测的一个网络结构叫lanenet, 转载请备注,多谢哈|! 2018.2发表出来的,文章下载地址:https://arxiv.org/abs/1802.05591 github ...

最新文章

  1. Java项目:无库版银行管理系统(java+Gui+文档)
  2. java数据结构之二叉树的定义和递归实现
  3. springmvc和tomcat原理
  4. nginx同时支持asp.net与php
  5. ie11不兼容 html编辑器,ie11兼容性视图护驾浏览网页
  6. db h2 数据类型_H2数据库函数及数据类型概述
  7. 多表查询, 聚集查询和分组查询
  8. 【BZOJ 1503】郁闷的出纳员【权值线段树】
  9. C派生matlab读取excel脚本
  10. Abbott's Revenge UVA - 816(BFS典型例题)
  11. 番外4. Python OpenCV 中鼠标事件相关处理与常见问题解决方案
  12. EfficientDeRainy:一种高效的图像去雨雾算法
  13. 一起Talk Android吧(第三百一十七回:Android中的虚拟按键)
  14. mysql只读模式_mysql 只读模式详解
  15. 快递100接口使用整理
  16. 零中频接收机频率转换图_相干光接收机的相关问题
  17. 生产型企业如何搭建进销存管理系统?低代码平台了解一下
  18. Masm for MAC安装教程+实例分析
  19. 在ubuntu18.04上安装vmware
  20. $().each和$.each()

热门文章

  1. CSR8811A12-ICXR-R双模数据传输模块 蓝牙芯片4.2
  2. linux 流程图软件有哪些,除了visio,流程图软件还有哪些?
  3. 你想要的短视频音效都在这里!最火爆最热门音效!
  4. 中台方法论及案例集合
  5. 关于Hindon的ILSVRC 2012经典论文
  6. 0xC000041D:用户回调期间遇到未经处理的异常
  7. 【Python】fastapi框架之Web部署机器学习模型
  8. Microsoft VS Code安装教程
  9. 企业级代码静态测试工具Helix QAC——关键特性
  10. libcef.dll丢失怎么办