自动驾驶入门:感知

news2025/7/18 8:18:26

目录

概念

感知方法

CNN

检测与分类

跟踪

分割

Apollo感知

感知设备分类


概念

我们人类天生就配备多种传感器,眼睛可以看到周围的环境,耳朵可以用来听,鼻子可以用来嗅,也有触觉传感器,甚至还有内部传感器,可以测量肌肉的偏转。通过这些传感器,我们可以感知到我们周围的环境。我们的大脑每分每秒都在进行数据处理,大脑的绝大部分都是用于感知。

现在,无人驾驶车辆也在做这些事情,只不过他们用的不是眼睛而是摄像头。但是他们也有雷达和激光雷达,它们可以帮忙测量原始距离,可以得到与周围环境物体的距离。对于每个无人驾驶汽车,它的核心竞争力之一是利用海量的传感器数据,来模仿人脑理解这个世界。谈论传感器时也会涉及到神经网络、深度学习、人工智能。

作为人类,我们可以自动识别图像中的物体,甚至可以推断这些物体之间的关系。但是对于计算机而言图像只是红、绿、蓝色值的集合。无人驾驶车有四个感知世界的核心任务:

检测——指找出物体在环境中的位置;

分类——指明确对象是什么;

跟踪——指随时间的推移观察移动物体;

语义分割——将图像中的每个像素与语义类别进行匹配如道路、汽车、天空。

将分类作为作为研究计算机视觉一般数据流程的例子。图像分类器是一种将图像作为输入,并输出标识该图像的标签的算法,例如交通标志分类器查看停车标志并识别它是停车标志、让路标志、限速标志、其他标志。分类其甚至可以识别行为,比如一个人是在走路还是在跑步。分类器有很多种,但它们都包含一系列类似的步骤。首先计算机接收类似摄像头等成像设备的输入。然后通过预处理发送每个图像,预处理对每个图像进行了标准化处理,常见的预处理包括调整图像大小、旋转图像、将图像从一个色彩空间转换为另一个色彩空间,比如从全彩到灰度,处理可帮助我们的模型更快地处理和学习图像。接下来,提取特征,特征有助于计算机理解图像,例如将汽车与自行车区分开来的一些特征,汽车通常具有更大的形状并且有四个轮子而不是两个,形状和车轮将是汽车的显著特征。最后这些特征被输入到分类模型中。此步骤使用特征来选择图像类别,例如分类器可以确定图像是否包含汽车、自行车、行人。

摄像头一般可以提供交通参与者的类型、个数等信息,但是无法直观的提供交通参与者的距离与速度。

激光雷达传感器创建环境的点云表征,提供了难以通过摄像头图像获得的信息如距离和⾼度。激光雷达传感器使⽤光线尤其是激光来测量与环境中反射该光线的物体之间的距离,激光雷达发射激光脉冲并测量物体,将每个激光脉冲反射回传感器所花费的时间。反射需要的时间越⻓,物体离传感器越远,激光雷达正是通过这种⽅式来构建世界的视觉表征。

激光雷达通过发射光脉冲来检测汽⻋周围的环境,蓝⾊点表⽰反射激光脉冲的物体,中间的⿊⾊区域是⽆⼈驾驶⻋本⾝占据的空间。由于激光雷达测量激光反射束,它收集的数据形成⼀团云或“点云”,点云中的每个点代表反射回传感器的激光束,可以告诉我们关于物体的许多信息例如其形状和表⾯纹理。这些数据提供了⾜够的对象检测、跟踪、分类信息。正如我们所看,在点云上执⾏的检测和分类结果为红点为⾏⼈,绿点表⽰其他汽⻋。激光雷达数据提供了⽤于构建世界视觉表征的⾜够空间信息,计算机视觉技术不仅可以使⽤摄像头图像进⾏对象分类,还可以使⽤点云和其他类型的空间相关数据进⾏对象分类。

感知方法

CNN

卷积神经网络CNN是一种人工神经网络,它对感知问题特别有效,CNN接受多维输入包括定义大多数传感器数据的二维和三维形状。如果使用标准神经网络对图像进行分类,则需要通过一种方法将图像连接到网络的第一层,这属于一维。标准做法是通过将图像矩阵重塑为一个矢量,并在一个大行中连接所有列,将图像“展开”为一维像素阵列。

然而这种方法打破了图像中所嵌入的空间信息,如果图像中有车轮,则车轮中的所有像素将散布在整个像素阵列中。如果将其散布在一个维度上,神经网络很难从图像中提取车轮。CNN通过维持输入像素之间的空间关系来解决这个问题,CNN通过将过滤器连续滑过图像来收集信息,每次收集信息时,只对整个图像的一小部分区域进行分析,称为卷积。

当在整个输入图像上对一个过滤器进行卷积时,将该信息与下一个卷积层相关联。例如CNN识别第一个卷积层中的基本边缘和颜色信息,然后通过在第一层上卷积新过滤器,CNN使用边缘和颜色信息来归纳更复杂的结构如车轮、车门、挡风玻璃;而另一个卷积可使用车轮、车门、挡风玻璃识别整个车辆;最后神经网络可使用这一高阶信息对车辆进行分类。

CNN根据其任务查找真正需要的特征,任务可能是图像检测、分类、分割、其他类型的目标。

检测与分类

感知任务中,首先是障碍物检测和分类,在驾驶过程中会遇到许多障碍物,静态障碍物包括墙壁、树木、杆子、建筑物;动态障碍物包括行人、自行车、汽车。计算机首先需要知道障碍物的位置,然后进行分类。在路中行驶的无人驾驶车可能会探测到许多不同的物体,汽车根据所感知的物体类型来确定路径和速度。如果感知到前方有一辆自行车,汽车可能会决定减速和变道,以便安全驶过自行车。但是如果感知到前方有另一辆车,并预测到前方车辆也将以接近限速的速度行驶,可能会保持其速度和车道。

无人驾驶中,使用什么算法来对障碍物进行检测和分类?可以先使用检测CNN来查找图像中的对象的位置,在对图像中的对象进行定位后,可以将图像发送给另一个CNN进行分类。也可以使用单一CNN体系结构对对象进行检测和分类,一种通常的做法为在单个网络体系结构的末端附加几个不同的“头”,一个头可能执行检测,另一个则可能执行分类。经典体系结构为 R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD等。

跟踪

检测完对象后,需要追踪它们追踪的意义是什么?如果我们对每个帧中的每个对象进行检测并用边界框对每个对象进行标识,那么跨帧追踪对象会带来哪些好处?首先追踪在检测失败时是至关重要的,如果你在运行检测算法时,对象被其他对象遮挡一部分则检测算法可能会失败,但追踪可以解决遮挡问题。另一个原因在于追踪可以保留身份,障碍物检测的输出为包含对象的边界框,但是对象没有与任何身份关联,单独使用对象检测时,计算机不知道一个帧中的哪些对象与下一帧中的哪些对象相对应,该任务对人类来说很简单,但对汽车来说很困难。

追踪的第一步为确认身份,通过查找特征相似度最高的对象,将在之前的帧中检测到的所有对象与在当前的帧中检测到的对象进行匹配。对象具有各种特征,可能基于颜色、基于形状,计算机视觉算法可以计算出复杂的图像特征,如局部二值模式和方向梯度直方图。当然也需要考虑连续视频帧中,两个障碍物之间的位置和速度,由于两帧之间的对象位置和速度没有太大变化,该信息也可以帮助快速找到匹配的对象。

在确定身份后,可以使用对象的位置并结合预测算法以估计在下一个时间步的速度和位置,该预测可帮助识别下一帧中的相应对象。

分割

语义分割涉及对图像的每个像素进行分类,用于尽可能详细地了解环境并确定车辆可驾驶区域。

语义分割依赖于一种特殊类型的CNN,被称为全卷积网络FCN。FCN用卷积层来替代传统CNN体系结构末端的平坦层,现在网络中的每一层都是卷积层,因此名称为“全卷积网络”。FCN提供了可在原始输入图像之上叠加的逐像素输出,必须考虑的一个复杂因素是大小。在典型的CNN中经过多次卷积之后所产生的输出比原始输入图像小得多。然而为了分割像素,输出尺寸必须与原始图像的尺寸相匹配。为了完成,可以对中间输出进行上采样处理,直到最终输出的大小与原始输出图像的大小相匹配。网络的前半部分通常被称为编码器,因为这部分网络对输入图像的特征进行了提取和编码。网络的后半部分通常被称为解码器,因为它对这些特征进行了解码并将其应用于输出

Apollo感知

Apollo 开放式软件栈可感知障碍物、交通信号灯、车道。对于三维对象检测,Apollo 在高精度地图上使用感兴趣区域ROI来重点关注相关对象。Apollo将ROI过滤器应用于点云和图像数据,以缩小搜索范围并加快感知。

然后通过检测网络馈送已过滤的点云,输出用于构建围绕对象的三维边界框。

最后使用被称为检测跟踪关联的算法来跨时间步识别单个对象,该算法先保留在每个时间步要跟踪的对象列表,然后在下一个时间步中找到每个对象的最佳匹配。

对于交通信号灯的分类,Apollo先使用高精度地图来确定前方是否存在交通信号灯。如果前方有交通信号灯,则高精度地图会返回灯的位置。后续根据位置,摄像头搜索范围,在摄像头捕获到交通信号灯图像后。Apollo使用检测网络对图像中的灯进行定位,然后从较大的图像中提取交通信号灯。将裁剪的交通灯图像提供给分类网络以确定灯颜色,如果有许多灯则系统需要选择哪些灯与其车道相关。

Apollo使用 YOLO 网络来检测车道线、动态物体其中包括车辆、卡车、骑自行车的人、行人。

在经过YOLO网络检测后,在线检测模块会并入来自其他传感器的数据对车道线预测进行调整,车道线最终被并入名为“虚拟车道”的单一数据结构中。同样也通过其他传感器的数据对YOLO网络所检测到的动态对象进行调整,以获得每个对象的类型、位置、速度、前进方向。虚拟通道和动态对象均被传递到规划与控制模块。

Apollo使用激光雷达和雷达来检测障碍物,用于融合输出的主要算法为卡尔曼滤波。卡尔曼滤 波有两个步骤:第一步为预测状态,第二步是更新测量结果。设想正在跟踪一名行人,这里的状 态表示行人的位置和速度,从已经掌握的行人状态开始,使用这些信息来执行卡尔曼滤波的第一步,即预测行人在将来的状态;下一步为误差结果更新,使用新的传感器来更新所认为的行人状态,卡尔曼滤波算法是预测和更新步骤的无限循环。

实际上有两种测量结果更新步骤:同步和异步。同步融合同时更新来自不同传感器的测量结果,而异步融合则逐个更新所收到的传感器测量结果。传感器融合可提高感知性能,因为各传感器相辅相成,融合也可以减少跟踪误差

感知设备分类

感知通常依赖于摄像头、激光雷达、雷达,如图显示了这三种传感器的优缺点。摄像头非常适用于分类,在Apollo中摄像头主要用于交通信号灯分类、车道检测。激光雷达的优势在于障碍物检测即使在夜间仍能准确地检测障碍物。雷达在探测范围和应对恶劣天气方面占优势,通过融合这三种传感器的数据可实现最佳聚合性能,被称为“传感器融合”。

激光雷达是激光探测与测量的简称,而雷达则是无线电探测与测量的简称。雷达使用无线电波,而激光雷达则使用红激光束来确定传感器和附近对象的距离。目前的激光雷达大多使用 900 纳米光波长度的光源。但部分激光雷达使用的光波长度更长,在雨雾中性能更好。当前的激光雷达使用旋转座架发射激光,扫描周边环境。激光室脉冲式的,脉冲被对象反射,然后返回一个点云,来代表这些物体。激光雷达的空间分辨率远远高于雷达。因为激光束越聚焦,垂直方向的扫描层数量就越多,因此每层的激光雷达的密度也越高。目前,激光雷达还不能直接测量对象的速度,必须使用两次或多次扫描之间的位置差来确定。激光雷达受天气和传感器清洁程度影响也很大,因此需要保持清洁。它们块头也比其他传感器更大,因此也很难安装,除非你只想在车顶安装一个大的激光扫描器。

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

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

相关文章

Android 性能优化

你会学到什么? 深入底层,全面建立性能优化知识体系; 高手思路,掌握大厂性能调优方法论; 三大模块,实战内存速度包体积优化; 玩转“黑科技”,轻松实现性能优化进阶。 作者介绍 赵…

现货黄金基本知识:黄金策略五大心法

我们经常看电视剧或小说,都会看到一些老套的情景,例如当某个人物死的时候,会讲毕生所学,或者是功夫、或者是知识,传到某一个人的手中。在现货黄金市场,也有累积了历代交易高手的“武功心法”,虽…

Bergsoft NextSuite (VCL) 不同的方式提供数据

Bergsoft NextSuite (VCL) 不同的方式提供数据 BergSoft NextSuite是一家强大的Delphi和CBuilder。NextGrid是一台易于使用的计算机,可以在设计时和设计时理解方法和技能。NextGrid有不止一个StringGrid和ListView美味的标准。NextDBGrid是基于著名NextGrid计算机的…

深入浅出PyTorch——基础知识

一、PyTorch的简介和安装 因为在学习pytorch之前就已经配置和安装好了相关的环境和软件,所以这里就不对第一章进行详细的总结,就简要总结一下: 1.1 pytorch的发展 去了Paper with code网站查看了现在pytorch的使用,远超tensor…

【机器学习】线性分类【下】经典线性分类算法

主要参考了B站UP主“shuhuai008”,包含自己的理解。 有任何的书写错误、排版错误、概念错误等,希望大家包含指正。 由于字数限制,分成两篇博客。 【机器学习】线性分类【上】广义线性模型 【机器学习】线性分类【下】经典线性分类算法 3. 线…

Spring知识点补充

1.常见的ORM框架都有哪些呢? 什么是ORM框架? 所谓的ORM框架,就是对象关系映射框架,就是让我们程序中的类里面的属性直接映射到我的数据库中的表里面的列,我们在Java中操作这个类的时候,就相当于直接操作数据…

Python避坑指南(续)

在上一篇《Python避坑指南》中,我重点给大家讲了Python可变容器数据类型中的坑。除了这些,Python还有其他一些细小方面的坑,本章为大家讲解Python中这些大家可能会忽视的细节。 文章目录链式or的坑访问字面量属性的坑is的坑GIL全局锁的坑多数…

建模杂谈系列177 APIFunc继续实践-比对研究

说明 在最终的实用上,我还是选择了Kettle。主要还是因为考虑未来公司的部署和使用上有比较全的文档,也比较有说服力。所以有时候也挺有趣的: 1 其实APIFunc要好得多,但是(刚做完原型验证)并不能取得大部分人的信任2 有一些方法对于有一定基础的人来说很方便,但是对于更…

剑指offer试题整理1

1、定义一个空的类型,里面没有任何成员变量和成员函数。对该类型求sizeof,得到的结果是什么? 答案:1. 为什么不是0? 空类型的示例中不包含任何信息,本来求siezof应该是0,但是当我们声明改类型的实列是时…

Zookeeper的数据模型和节点类型

数据模型: 树形结构 zk维护的数据主要有:客户端的会话(session)状态及数据节点(dataNode)信息。 zk在内存中构造了个DataTree的数据结构,维护着path到dataNode的映射以及dataNode间的树状层级关…

asp.net+sqlserver团购网站c#

数据需求分析 该网站的主要功能主要体现在对各种信息的添加、修改、删除和查询的操作上,包括会员信息、公司管理信息、订单信息、产品信息、团购管理信息等,各部分的信息之间又有着内在联系,因此总结出如下需求: (1&am…

使去中心化媒体网络相关联的NFT元数据标准

1. 概述 (社交)媒体网络的力量日益强大。我们需要分散这种力量,使网络更加透明。 由于网络效应,新媒体网络和能够与现有网络竞争的去中心化替代方案很难吸引广大公众。 我们建议,与其创建新的协议,将每个平台的内容隔离起来&…

录屏怎么录,这2个方法不容错过!

​我们都知道在电脑使用频率越来越高的现在,无论是生活中还是工作中,有时可能会因为一些需要,使用到录屏的功能。最近,有不少的小伙伴前来询问小编,录屏怎么录?其实答案很简单,接下来小编分享的…

手机号码认证什么价格?手机号码认证怎样申请?

手机号码认证基于通话场景(呼入,呼出)的指定号码,来电展示企业号码专门名称,可提高电话号码辨识度,防止错误标记,提升品牌曝光度、接听率,低成本提升目标顾客接听率。 手机号码认证如何收费呢?…

【附源码】Python计算机毕业设计图书销售网站

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

数据结构和算法 IV

数据结构和算法 IV 面试题 冒泡排序 排序算法 原理机制: 相邻元素两两比较,大的/小的往后排,一轮比较结束,最大值出现在最大下标处.会比较多轮 代码实现 public static void main(String[] args) {int[] ary {23,12,7,0,67,9,11};for (int i0;i<ary.length-1;i){ //i…

MySQL高频面试题

1. drop&#xff0c;delete和truncate删除数据的区别&#xff1f; delete 语句执行删除是每次从表中删除一行&#xff0c;并且同时将改行的删除操作作为事务记录在日志中保存以便进行回滚。 truncate 则是一次从表中删除所有的数据并不把单独的删除操作记录计入日志&#xff0c…

详述分布式事务Seata TCC空回滚/幂等/悬挂问题、解决方案(seata1.5.1如何解决?)

文章目录一、前言二、问题介绍、seata1.5.1版本之前的解决方案1、空回滚出现原因解决措施事务控制记录表try()、cancel()中获取xid、branch_id2、幂等出现原因解决措施事务控制记录表3、悬挂出现原因解决措施4、总述最终的事务控制记录表三、seata1.5.1版本起官方提供的解决措施…

[附源码]java毕业设计基于Java烟支信息管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

前端框架 网络请求 Fetch Axios

目录 一、Fetch请求的使用 1、 Fetch官网 2、基本案例 二、跨域请求解决 三、Axios的使用 1、Axios官网 2、基本使用 推荐使用Axios更方便&#xff01; 一、Fetch请求的使用 1、 Fetch官网 使用 Fetch - Web API 接口参考 | MDN 2、基本案例 二、跨域请求解决 &…