Apollo自动驾驶入门课程第④讲 — 感知(上)

目录

1. 感知的概述

2. 计算机视觉

3. 摄像头图像

4. LiDAR图像

5. 机器学习

6. 神经网络

7. 反向滤波法


本文转自微信公众号:Apollo开发者社区 原创: 阿波君 Apollo开发者社区 8月23日

上一篇文章中,我们发布了无人驾驶技术的 定位篇(点击阅读)。很多开发者结合定位篇与Apollo平台的视频,对定位系统已经有了自己的见解,提出了有趣的问题。也希望更多的开发者能够参与到Apollo的平台中去,在学习交流的同时丰富这个平台。

本周我们将介绍感知,了解车辆如何利用感知元件感知周围环境,了解不同的感知任务,例如分类、检测和分割,并学习对感知而言至关重要的卷积神经网络。

在开车时,我们用眼睛来判断速度、车道位置、转弯位置。在无人驾驶中,情况类似,只不过需要使用静态摄像头和其他传感器来感知环境,使用大量计算机视觉技术。


视频链接为:Apollo自动驾驶入门课程Sebastran感知_腾讯视频

1. 感知的概述

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

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

2. 计算机视觉

作为人类,我们可以自动识别图像中的物体,甚至可以推断这些物体之间的关系。但是对于计算机而言图像只是红、绿、蓝色值的集合。无人驾驶车有四个感知世界的核心任务:检测——指找出物体在环境中的位置;分类——指明确对象是什么;跟踪——指随时间的推移观察移动物体;语义分割——将图像中的每个像素与语义类别进行匹配如道路、汽车、天空。

将分类作为研究计算机视觉一般数据流程的例子。图像分类器是一种将图像作为输入,并输出标识该图像的标签的算法,例如交通标志分类器查看停车标志并识别它停车标志、让路标志、限速标志还是其它标志。分类器甚至可以识别行为,比如一个人是在走路还是在跑步。

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

为了完成这些视觉任务,需要建立模型,模型是帮助计算机了解图像内容的工具。

3. 摄像头图像

不论计算机在执行什么识别任务,通常在开始时将摄像头图像作为输入。

摄像头图像是最常见的计算机视觉数据,以这张汽车照片为例,让我们看看计算机如何认为这实际上是一辆汽车的图像。从计算机的角度来看,图像只是一个二维网格被称为矩阵,矩阵中的每个单元格都包含一个值,数字图像全部由像素组成,其中包含非常小的颜色或强度单位,我们可以对其中的数字做出非常多的处理。通常这些数字网格是许多图像处理技术的基础,多数颜色和形状转换都只是通过对图像进行数学运算以及逐一像素进行更改来完成。

以上是我们讲一个图像分解为二维灰度像素值网络,彩色照片是相似的,但是更复杂一些。

彩色图像被构建为值的三维立方体,每个立方体都有高度、宽度和深度,深度为颜色通道数量。大多数彩色图像以三种颜色组合表示红色、绿色。蓝色,称为RGB图像。对于RGB图像来说,深度值是3,因此可用立方体来表示。

4. LiDAR图像

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

激光雷达通过发射光脉冲来检测汽车周围的环境,蓝色点表示反射激光脉冲的物体,中间的黑色区域是无人驾驶车本身占据的空间。由于激光雷达测量激光反射束,它收集的数据形成一团云或“点云”,点云中的每个点代表反射回传感器的激光束,可以告诉我们关于物体的许多信息例如其形状和表面纹理。这些数据提供了足够的对象检测、跟踪、分类信息。正如我们所看,在点云上执行的检测和分类结果为红点为行人,绿点表示其他汽车。

激光雷达数据提供了用于构建世界视觉表征的足够空间信息,计算机视觉技术不仅可以使用摄像头图像进行对象分类,还可以使用点云和其他类型的空间相关数据进行对象分类。

5. 机器学习

机器学习是使用特殊算法来训练计算机从数据中学习的计算机科学领域。通常,这种学习结果存放在一种被称为“模型”的数据结构中,有很多种模型,事实上“模型”只是一种可用于理解和预测世界的数据结构。机械学习诞生于20世界60年代,但随着计算机的改进,在过去的20年终才真正的越来越受到欢迎。

机器学习涉及使用数据和相关的真值标记来进行模型训练,例如可能会显示车辆和行人的计算机图像以及告诉计算机哪个是哪个的标签。我们让计算机学习如何最好地区分两类图像,这类机器学习也成为监督式学习,因为模型利用了人类创造的真值标记。

可以假想一个类似的学习过程,但这次使用的是没有真值标记的车辆与行人图像,让计算机自行决定哪些图像相似、哪些图像不同,这被称为无监督学习。不提供真值标记,而是通过分析输入的数据,计算机凭借自行学习找到区别。

半监督式学习是将监督学习和无监督学习的特点结合在一起,该方法使用少量的标记数据和大量的未标记数据来训练模型。

强化学习是另一种机器学习,强化学习涉及允许模型通过尝试许多不同的方法来解决问题,然后衡量哪种方法最为成功,计算机将尝试许多不同的解决方案,最终使其许多方法与环境相适应。

例如在模拟器中,强化学习智能体可训练汽车进行右转,智能体将在初试位置发动车辆,然后以多种不同的方向和速度进行实验性驾驶,如果车辆实际完成了右转,智能体会提高奖励即得分。

起初车辆可能无法找到执行转弯的方法,然而就像人类那样,车辆最终会从一些成功右转经验中学习,最终学会如何完成任务。

6. 神经网络

人工神经网络用于无人驾驶,受到构成人类神经系统的生物神经元启发,生物神经元通过相互连接构成了神经元网络或神经网络,通过类似的方式将人工神经元层连接起来以创建用于机器学习的人工神经网络。

人工神经网络是通过数据来学习复杂模式的工具,神经网络由大量的神经元组成,人工神经元负责传递和处理信息,也可以对这些神经元进行训练。可以将这些图像识别为车辆,无论它们是黑是白、或大或小,你甚至可能不知道自己如何知道它们是车辆,也许是某些特征触发了你的反应,如车轮、车灯、车窗。人工神经网络具有类似的运作方式。人工神经网络通过密集训练,计算机可以辨别汽车、行人、交通信号灯、电线杆。它们学习了用于执行任务的模型,只是我们可能很难直观地理解该数学模型。

当看到该图像时,你的大脑如何工作?你的大脑可能会将图像分为几部分然后识别特征如车轮、车窗、颜色,然后大脑将使用这些特征对图像进行检测和分类。

例如在确定图像是否为车辆时,大脑可能不会认为颜色是关键特征。因为汽车有多种颜色,所以大脑会将更多权重放在其他特征上并降低颜色的重要性。

同样,神经网络也会从图像中提取许多特征,但这些特征可能是我们人类无法描述或甚至无法理解的特征。但我们最终并不需要理解,计算机将调整这些特征的权重,以完成神经网络的最终任务。

7. 反向滤波法

学习有时称为训练,由三步循环组成——前瞻、误差测定、反向传播

首先随机分配初试权重即人工神经元的值,通过神经网络来馈送每个图像产生输出值,这被称为前馈。

继续开车可以发现,有些点右边只有一棵树,也可以排除。

下一步为误差测定,误差是真是标记与前馈过程所产生输出之间的偏差。

最后一步是反向传播,通过神经网络反向发送误差,此过程类似前馈过程,只是以相反方向进行。

每个人工神经元都对其值进行微调,这是基于通过神经网络后向传播的误差,可生成更准确的网络。一个训练周期:

包括前馈、误差测定、反向传播还远远不够。为了训练网络,通常需要数千个这样的周期,最终结果应该是模型能够根据新数据做出准确预测。

更多详细课程内容,大家可以登陆官网继续学习!

也可以添加社区小助手(Apollodev)为好友,回复“课程学习”进群与其他开发者共同交流学习。  

自课程上线以来,浏览量已超10万,已帮助全球97个国家约 7000 名学员入门自动驾驶与 Apollo 开源平台,其中37%为海外学员,本门课程已成为优达学城 (Udacity) 近期获得关注度最高的免费课程之一。

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

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

相关文章

三种经典的洗牌算法

参考原文链接:https://blog.csdn.net/qq_25026989/article/details/89512769 问题描述:洗牌算法是将原来的数组进行打散,使原数组的某个数在打散后的数组中的每个位置上等概率的出现。 主要有3中经典的洗牌算法: 1.抽牌&#x…

【数据库实验课堂】实验一:数据库的管理

实验一:数据库的管理 1、假设SQL Server服务已启动,并以Administrator身份登录计算机(文件名称自定);请分别使用Management界面方式和T-SQL语句实现以下操作: 1) 要求在本地磁盘D创建一个学生-课程数据库…

网络编程懒人入门(二):快速理解网络通信协议(下篇)

转自即时通讯网:http://www.52im.net/ 原作者:阮一峰(ruanyifeng.com),本文由即时通讯网重新整理发布,感谢原作者的无私分享。 1、前言 本文上篇《网络编程懒人入门(一):快速理解网络通信协议&#xff0…

为什么说逻辑回归LR是线性分类器?

问题描述:为什么说逻辑回归LR是非常典型的线性分类器? 首先,我们要弄明白区分线性与非线性分类器的标准是什么?是决策边界(Decision Boundary) 以二分类(LR可以用于多分类)为例进行…

【数据库实验课堂】实验二 使用SQL Server管理数据表

实验二 使用SQL Server管理数据表: 1、请在指定数据库内完成以下内容: 1) 依据数据表的结构创建相对应的数据表,表结构如下所示; **学生信息表(student)**字段名称 字段类型及长度 说明 备注 S…

5, Data Augmentation

Intro 这是深度学习第5课 在本课程结束时,您将能够使用数据增强。 这个技巧让你看起来拥有的数据远远超过实际拥有的数据,从而产生更好的模型。 Lesson [1] from IPython.display import YouTubeVideo YouTubeVideo(ypt_BAotCLo, width800, height45…

朴素贝叶斯算法注意事项(有待完善)

1.朴素贝叶斯算法的优缺点总结: 优点: 朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率;分类速度快,准确度高;对缺失数据不太敏感,算法简单,常用于文本分类(如新闻…

网络编程懒人入门(三):快速理解TCP协议一篇就够

转自即时通讯网:http://www.52im.net/ 原作者:阮一峰(ruanyifeng.com),本文由即时通讯网重新整理发布,感谢原作者的无私分享。 1、前言 本系列文章的前两篇《网络编程懒人入门(一):快速理解网络通信协议…

【数据库实验课堂】实验三:管理SQL Server表数据

以课本指定的数据库为例,并依据数据表的结构创建相对应的数据表(student、course、sc),请分别使用Management Stuio界面方式及T-SQL 语句实现进行以下操作: 向各个数据表中插入如下记录: 学生信息表&#…

分类问题的模型评估指标总结

在分类任务下,预测结果(Predicted Condition)与正确标记(True Condition)之间存在四中不同的组合,构成混淆矩阵(可适用于多分类),通常有这几种主要模型评估指标:精确率(查的准)、召回率(查的全对正样本的区分能力)、F1值(反映模型…

6. A Deeper Understanding of Deep Learning

Intro 这是深度学习第6课。 在本课程结束时,您将了解随机梯度下降和反向传播如何用在深度学习模型中设置权重。 这些主题很复杂,但许多专家认为它们是深度学习中最重要的思想。 Lesson [1] from IPython.display import YouTubeVideo YouTubeVideo(…

JetBrains - IDEA 常用快捷键汇总

【常规】 CtrlShift Enter,语句完成“!”,否定完成,输入表达式时按 “!”键CtrlE,最近的文件CtrlShiftE,最近更改的文件ShiftClick,可以关闭文件Ctrl[ OR ],可以跑到大…

nltk安装punkt等语料库时报SSL错误完美解决方案及离线安装方法

nltk是NLP领域中一个比较通用的国际分词工具,但是使用时往往依赖语料库数据包,需要安装到本地,以下介绍在线安装和离线安装两种方式: (ps:对NLP感兴趣的朋友可以相互学习,我的微信号&#xff1…

7. Deep Learning From Scratch

Intro 这是深度学习第7课。 到目前为止,您构建的模型依赖于预先训练的模型。 但它们不是许多用例的理想解决方案。 在本课程中,您将学习如何构建全新的模型。 Lesson [1] from IPython.display import YouTubeVideo YouTubeVideo(YbNE3zhtsoo, widt…

【POJ - 3126】Prime Path(bfs)

题干: 给你两个四位的素数a,b。 a可以改变某一位上的数字变成c,但只有当c也是四位的素数时才能进行这种改变。 请你计算a最少经过多少次上述变换才能变成b。 例如:1033 -> 8179 1033 1733 3733 3739 3779 8779 8179 最…

最实用的Git命令总结:新建本地分支、远程分支、关联和取消关联分支、清除本地和远程分支、合并分支、版本还原、tag命令、中文乱码解决方案、如何fork一个分支和修改后发起合并请求

1.常用命令git、tag整理 1、新建分支本地分支 git branch <branch-name>远程分支 git push origin <branch-name>:<new-branch-name> 2、删除分支本地分支 git branch -d <branch-name> 或 git branch -D <branch-name>远程分支 git push o…

8. Dropout and Strides For Larger Models

Intro 这是深度学习第8课。 本科结束后&#xff0c;你将会理解并知道如何使用&#xff1a; Stride lengths来快速建立模型并减少内存消耗&#xff1b;Dropout 来对抗过拟合&#xff1b; 这两个技术在大型模型中很有用。 Lesson [1] from IPython.display import YouTubeV…

【POJ - 2255】Tree Recovery (给定树的先序中序,输出后序)

题干&#xff1a; Input The input will contain one or more test cases. Each test case consists of one line containing two strings preord and inord, representing the preorder traversal and inorder traversal of a binary tree. Both strings consist of unique…

Java基础部分快速复习(以前复习的时候放在自己的新浪博客上)

工作后Java基本没有用到&#xff0c;有时候自己也会把基础过一遍&#xff0c;下面的链接是以前重温的时候整理的Java基础最核心部分的知识点和代码示例放在自己的新浪博客上&#xff0c;如果以后有需要&#xff0c;直接从这里进入&#xff0c;可以快速复习&#xff0c;节省时间…

0.Overview——Deep Learning

本文为Kaggle Learn的Deep Learning课程的中文翻译。原链接为&#xff1a;https://www.kaggle.com/learn/deep-learning 1. Intro to Deep Learning and Computer Vision A quick overview of how models work on images 2. Building Models from Convolutions Scale up fr…