自动驾驶TPM技术杂谈 ———— 可行驶区域

news2024/9/21 14:51:24

文章目录

  • 介绍
  • 基于传统计算机视觉的方法
    • 基于直接特征的可行驶区域检测
      • 基于颜色的可行驶区域检测
      • 基于纹理的可行驶区域检测
      • 基于边缘的可行驶区域检测
    • 基于间接特征的可行驶区域检测
  • 基于深度学习的方法
    • 语义分割
    • 基于FCN的可行驶区域分割

介绍

 可行驶区域检测主要是为了自动驾驶提供路径规划辅助。在实际应用过程中,可行驶区域检测只要能结合高精度地图实现道路路径规划和障碍物躲避,也不一定需要提取出完整的路面可行驶区域。因此,可行驶区域检测可以实现整个路面的检测,也可以只提取出部分道路信息。

基于传统计算机视觉的方法

基于直接特征的可行驶区域检测

基于颜色的可行驶区域检测

 对于结构化或半结构化的路面,其颜色特征是非常明显的,如柏油路面,颜色均匀。在常用的RGB颜色空间,利用颜色特征分离路面和非路面相对而言较为简单。传统的基于颜色的可行驶区域检测方法还有基于高斯模型分离出背景路面和前景物体,这种方法在路面区域内车辆较少时前景与背景之间分割效果好。当前景物体多时,颜色分布范围太广,前景和背景分割成两个区域就比较难了。除此自外,根据颜色特征来提取路面的基本区域时,光照不变性方法使用最为广泛,该方法可以消除光照不均匀和遮挡产生的阴影问题。

基于纹理的可行驶区域检测

 道路路面的连续性决定路面的纹理能够基本保持一致。即便路面存在微小差异,这种一致性还是相当明显。利用这个特点,可以利用纹理特征进行可行驶区域的检测。纹理提取的最基本的方法时使用Gabor滤波器。Gabor特征对于边缘信息敏感,能够较好的提取边缘的方向。Gabor滤波器具有受光照影响较小和尺度不变性。同时,车辆行驶过程中留下的挤压和痕迹都有沿着道路方向的纹理特征,Gabor也可以很好的提取这些特征的方向。这些方向也能表达基本的路面区域特性。

基于边缘的可行驶区域检测

 对于结构化或半结构化的路面,是存在明显的道路边缘分界。提取这些道路边缘分界,可以分割出道路路面。常用的边缘检测算子有Sobel、Prewitt算子。使用算子提取边缘的核心思想是将一个待检测的像素与周围的像素关联起来,通过设定的算子的水平、竖直方向的权重,计算待检测像素的左右、上下的像素差值的和,判断待检测的像素水平与竖直的像素差异性,判断该点是否为边缘点。

基于间接特征的可行驶区域检测

 这里引入一个名词 —— 灭点。在透视变换中,视场中的平行线都会相交于一点,这个点就是灭点。标准的路面边缘存在平行直线,平行直线在图像中的交点在灭点附近。通过提取多对平行直线的交点,求取这些交点的中心位置,就可以近似的估计出灭点。对于非结构化路面,使用Gabor提取的方向进行统计估计出灭点。求出灭点后,可以使用灭点约束消除一些干扰,提取道路边缘直线。对于标准的路面,直行的路面边缘平行度高,灭点距离道路的边缘直线距离更近。对于非结构化的路面,提取到灭点后,可以使用灭点来找大概的路面边缘,快速提取一个三角形的路面可行使区域。

基于深度学习的方法

语义分割

 语义分割,就是将一幅图像根据其含义将其分成很多区域,每个区域代表着不同的类别。严格来讲,语义分割是一种像素级的分类任务,即对图像中的每一像素点给出一个分类结果,最终可输出一张稠密的预测图。这种预测极大程度上保留了原始图像的边缘信息和语义信息,有助于无人驾驶对场景的理解。
 利用神经网络进行可行驶区域检测的方法中,有一种patch-wise的方法。该方法中,以每个像素点为中心,选取固定大小的一小块区域(称为一个patch),作为神经网络的输入来预测该中心点的类别。该方法的一个重要参数就是patch的大小:patch选取太大会使计算负担加重,太小则无法得到足够的语义信息。这种方法受patch大小的影响,网络无法得到全局信息,导致最终的分割精度不高。并且每一个像素都要通过一遍网络,导致存储和计算量都很大。全卷积神经网络(Full Convolution Network,FCN)进行可行区域检测,输入变为整体图像,输出为整张图像中像素点的分类情况。

基于FCN的可行驶区域分割

 受深度学习的启发,基于CNN的分类器开始应用于语义分割任务。早期的方法利用隐式的滑动窗口的CNN完成语义分割。目前,全卷积网络采用端到端训练方法建立深度模型,完成语义分割任务。传统的CNN是将传统的特征提取过程和分类合并在一起,一般在卷积层后有全连接层,最后一个全连接层当作分类器,输出一维向量,对应可能的输出。在FCN中,用1×1的卷积代替卷积神经网络中的全连接层,其和CNN的对比如下图。
在这里插入图片描述
 在上图卷积化过程中,FCN将卷积6和卷积7分别使用两个1×1的卷积来代替,最后会生成一个7×7的热度图,大小为输入图像的1/32(假设原图大小为224,下采样5次)。这个7×7大小的热度图可以理解成输入图像的一个粗略分割图像。因此,将热度图上采样32倍可以得到和原图一样大小的分割图像。如热度图所示,虽然特征图富含语义信息,但是丢失了物体的边缘和轮廓信息。这些在分类或回归问题中不重要的底层信息,在语义分割中却显示十分重要。
 FCN中上采样使用的是反卷积的方式,为了保证上采样的优化效果,使用双线插值对其初始化。FCN可以设计为三种不同精度的网络,分别为FCN-32s、FCN-16s、FCN-8s。其中32、16、8分别代表着最后预测图上采样的倍数。因此,FCN-32s、FCN-16s、FCN-8s的精度是递增的。
   FCN-32s在最后卷积7输出层直接上采样32倍,最为简单,但是效果不好。
   FCN-16s是将上采样分为两步,先将卷积7层的输出上采样2倍,得到2×卷积7,然后将池化4层输出的特征通过一个卷积层,得到与2×卷积7一样大小的结果,其次将这两个结果加起来得到最后的总特征图,最后再上采样16倍;
   FCN-8s整体来看与FCN-16s相似,FCN-8s是将卷积7的结果上采样4倍,将池化4的结果上采样2倍,与池化3的结果相加,最后上采样8倍。
在这里插入图片描述
 从实际的情况来看,从FCN-32s到FCN-8s,各种评测指标或者可视化的视觉效果都是在稳步上升。由此可以认为融合了更多层的特征对语义分割任务是有帮助的。
在这里插入图片描述
 Kittiseg以编码器-解码器架构来完成。编码器由VGG网络的卷积层和池化层组成。提取的特征随后被分割任务的解码器使用,这些解码器实时产生它们的输出。分割解码器遵循FCN架构。给定编码器,将VGG架构中已有的全连接层转化为1×1的卷积层,以产生39×12大小的低分辨率的分割图像。其后是三个转置的卷积层进行上采样。跳转层用于从较低层提取高分辨率特。

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

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

相关文章

数据科学的定义,如果做数据科学,非计算机的你,一般来说最好还是选择R语言,图像挖掘除外

一、数据科学(Data Science) 数据科学的起源可以追溯到1962年,当时统计学家John W. Tukey在他的文章《数据分析的未来》中首次提出了数据分析作为一门独立的科学方法。1974年,计算机学家Peter Naur在《计算机方法的简明调研》中明…

shell外壳与Linux权限

🌈个人主页:Yui_ 🌈Linux专栏:Linux 🌈C语言笔记专栏:C语言笔记 🌈数据结构专栏:数据结构 文章目录 1.shell命令以及运行原理2. Linux权限的概念3.Linux权限管理3.1 文件访问者的分类…

大语言模型 LLM book 笔记(二)

第二部分 预训练 第四章 数据准备 4.1 数据来源 4.1.1 通用文本数据 网页 书籍 4.1.2 专用文本数据 多语文本 科学文本 代码 4.2 数据预处理 4.2.1 质量过滤 基于启发式规则的方法 基于语种的过滤:语言识别器筛选中英文,对于多语的维基百科由于…

高阶数据结构——LRU Cache

1.什么是LRU Cache LRU是Least Recently Used的缩写,意思是最近最少使用,它是一种Cache替换算法。 什么是Cache?狭义的Cache指的是位于CPU和主存间的快速RAM, 通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速…

制约AI发展的关键在于人机环境系统智能的失配

人工智能(AI)发展的关键挑战之一就是人机环境系统之间的智能失配。这种失配指的是人工智能系统、其操作人员和应用环境之间的协调和适配问题,通常会影响系统的有效性和安全性。以下是一些具体方面,这些方面展示了人机环境系统智能…

《企业微服务实战 · 接口鉴权思路分享》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

ES JavaApi

1.RestClient操作索引库 2.RestClient操作文档 2.1查询 2.2更新 2.3删除 2.4批量新增(bulk) 3.DSL查询 对应的api 3.0解析响应 3.1全文检索 3.2精确查询 3.3复合查询-boolQuery 构建boolQuery 3.4排序和分页 3.5高亮

浙大数据结构慕课课后题(06-图2 Saving James Bond - Easy Version)(拯救007)

题目要求: This time let us consider the situation in the movie "Live and Let Die" in which James Bond, the worlds most famous spy, was captured by a group of drug dealers. He was sent to a small piece of land at the center of a lake fi…

C++打怪小游戏

这是一款用C代码写出来的打怪游戏。 上图片👇 ![](https://i-blog.csdnimg.cn/direct/6a4497c784ff4ba7a3332bc97d433789.png 一个11岁小朋友,爆肝532行,11小时完成代码,内部14个函数,5个结构体,三连…

ffmpeg使用x11录屏

version #define FFMPEG_VERSION "6.1.1" note x11视频采集结构:AVInputFormat ff_xcbgrab_demuxer code void CFfmpegOps::CaptureVideo(const char *outFileName) {const AVInputFormat *iFmt nullptr;size_t n 0;AVFormatContext *iFmtCtx nullptr;AVDict…

三十九、大数据技术之Kafka3.x(2)

🌻🌻 目录 一、Kafka 生产者1.1 生产者消息发送流程1.1.1 发送原理1.1.2 生产者重要参数列表 1.2 异步发送API1.2.1 普通异步发送1.2.2 带回调函数的异步发送 1.3 同步发送 API1.4 生产者分区1.4.1 分区好处1.4.2 生产者发送消息的分区策略1.4.3 自定义分…

使用Leaks定位iOS内存泄漏问题并解决

使用Leaks定位iOS内存泄漏问题并解决 前言 内存泄漏问题一直是程序开发中最令人头疼的问题,特别是C/C。虽然C/C在C11之后引入了许多新特性,包括智能指针,自动类型推导等,但C中动态内存的分配和释放仍然需要程序员来显式地进行。…

Linux线程thread详解(线程池)

在我们的进程虚拟地址的代码区,对于代码中的每个函数都有对应的地址,每个函数中的每行代码都有对应的代码,并且每个函数中的每行代码的地址都是连续的。既然代码是连续的,也就意味着我们可以将我们代码分块,分成不同的…

机器学习笔记:序列到序列学习[详细解释]

介绍 本节我们使用两个循环神经网络的编码器和解码器, 并将其应用于序列到序列(sequence to sequence,seq2seq)类的学习任务。遵循编码器-解码器架构的设计原则, 循环神经网络编码器使用长度可变的序列作为…

Jeecgboot3.6.3的vue3版本的一种flowable动态增加一个用户任务节点的方法(二)前端代码实现

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。 这部分主要讲前端的功能实现 1、前端选择新增任务类型界面,点击新增节点 /*** 动态新增用户任务节点*/function handleAddTask(record: Recordable) {if (record.finishTime != null) {createMess…

在 .NET 8.0 中使用 xUnit 进行数据驱动测试

1. 前言 xUnit是一个功能强大且易于使用的单元测试框架。在.NET开发中,单元测试是非常重要的一部分,它可以帮助我们确保代码的正确性和可靠性。使用xUnit可以帮助我们编写更高效、更有效的单元测试,并提高代码质量和可维护性。 2. 特性 x…

Git-GitLab-Jenkins结合

目录 1.Git-GitLab-Jenkins结合2. 在pycharm配置git3. 实现提交代码后触发自动化测试(1)打开gitlab(2)Jenkins配置Git(3)选择需要的远程仓库 4.报告存在问题:5.也可以在Jenkins中设置定时触发&a…

OpenCV图像滤波(10)Laplacian函数的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 功能描述 计算图像的拉普拉斯值。 该函数通过使用 Sobel 运算符计算出的 x 和 y 的二阶导数之和来计算源图像的拉普拉斯值: dst Δ src ∂…

Elasticsearch:引入 Serverless 精简索引分片

作者:来自 Elastic Tanguy Leroux 在本文中,我们将介绍 Elasticsearch 的精简索引分片(thin indexing shards),这是我们为 Elastic Cloud Serverless 开发的一种新型分片,允许将 Elasticsearch 索引存储在云…

大数据技术现场工程师特色实训室解决方案

一、引言 在大数据时代背景下,数据已成为新的生产要素,驱动着各行各业的创新发展。面对这一趋势,市场对于既掌握大数据理论知识又具备实战能力的大数据技术人才的需求急剧增加。为了应对这一挑战,唯众精心设计了一套全面的大数据…