首页/文章/ 详情

关于自动驾驶汽车的一切,非技术专业人员也能看懂

10月前浏览3269
"

本文是工程师Aman写给非技术人员有关自动驾驶的核心概念,向非技术专业人员解释了自动驾驶的尖端技术,语言通俗易懂,内容深入浅出,包含从“深度学习”到“计算机视觉”的所有内容。

读完本文,您将对无人驾驶汽车技术有足够的了解,能够与这些领域的工程师对话。诸如“人工神经网络”之类的词听起来不再像魔术或科幻电影中的东西。

"
作者:Aman Y. Agarwal
自动驾驶汽车的整个系统
自动驾驶汽车得以发展,离不开4个技术领域的融合。这里先对它们做简要介绍,然后进行深入探讨。
顺便说一句,我将某些东西归类为大致独立的高级“系统”,但是在实践中,这些系统都是高度互连的,没有明确定义的边界。
Computer Vision(计算机视觉)
这项技术听起来很酷,可使汽车“看到”其周围环境。这些是汽车的眼睛和耳朵。整个系统称为感知
基本上,我们使用:
  1.  相机,这是最重要的(简单的2百万像素相机可以正常工作)

  2.  雷达。它们会向周围发射无线电波,就像超声波一样,您会检测到从物体反弹并返回的无线电波

  3. 激光,虽然很酷,但如今它们非常昂贵,并且在下雨或有雾时它们不起作用。也称为“激光雷达”。您可以说它们就像雷达,但可以提供更好的图像质量,并且激光可以走得很远,因此您的视野更大。激光通常放置在汽车顶部的旋转轮中,因此它们旋转得非常快,看着周围的环境。

Google汽车顶部的激光雷达传感器,这是旋转的激光束
深度学习
这项技术可以使汽车根据通过上述计算机视觉工具收集的信息自行做出驾驶决策。这就是训练汽车“大脑”的方法。
通过在基本级别上将两者结合起来,您可以做一些有趣的事情。比如用摄像头即可检测道路上的车道线和其他车辆。
机器人技术
您可以看到所有内容,并且可以思考和制定决策。但是,如果您的大脑决策(例如:抬起左腿)无法触及腿部肌肉,那么您的腿将不会移动并且您将无法走路。同样,如果您的汽车具有“大脑”(带有深度学习软件的计算机),则该计算机需要与您的汽车零件连接才能控制汽车。简而言之,这些连接和相关功能组成了“机器人”。它使您能够做出软件决定,并使用机械来实际转动转向,按下并释放油门,制动器等。
导航和路径规划
即使获得了上述所有内容,最终您仍然需要弄清楚您的“位置”以及要去的方向。这有几个方面,例如GPS(您的导航设备,可从卫星获取位置信息)和存储的地图等。您还可以混合计算机视觉数据。还有几种方法可以进行路径规划(短距离机动)。
因此,汽车根据大脑的决策来控制转向和刹车等,这些决策基于通过摄像头,雷达和激光接收到的信息以及从导航程序接收到的方向。这样就构成了自动驾驶汽车的整个系统。
目前的自动驾驶汽车,根据汽车的独立程度和驾驶时所需的人工介入,自动驾驶汽车分为1级到5级个“级别”。哦,还有0级,这是您的旧手动车。
5级意味着汽车将100%自动驾驶。它不会有转向或刹车,因为它并不意味着要由人来驱动。这些汽车尚不存在,尖端汽车仍处于3级,最多4级。

为像我自己这样的黑猩猩解释了深度学习

假设您是野生动物园的狂热爱好者,而我是您的超级白 痴朋友。下周我要去非洲旅行。您会给我一些建议:“阿曼,远离大象。”
我问你,“什么是大象?”
您很可能会说:“您这愚蠢的家伙,大象很……好吧,没关系,这是大象的照片,这就是它的样子。远离他们。”
然后我去了野生动物园。
下周您会知道我仍然碰上大象,几乎被践踏。你问我发生了什么事。
我回答:“我不知道,我确实看到过这种大动物,但是看起来却不像您给我看的照片。
这是我之前拍摄的动物的照片……”
您:…………。
您:“好的,阿曼。对不起,我不好。我对你的大脑期望太高了。让我给您一个“作弊代码”,下次您在野生动物园中时需要遵循。如果您从各个角度看似棕色的东西,似乎有四根柱子的腿,大的拍打耳朵和管子一样的长鼻子从脸上冒出来,而且比你大,胖,那是一头大象,你需要远离。”
下个月,我将再次回到野生动物园,这次我不会遇到任何障碍,因为您的“欺诈代码”效果很好。
您是如何提出“欺诈代码”的?这是因为您已经从各个侧面看到了大象,并且选择了大象的某些特征,无论您从哪个角度观看大象,这些特征都保持不变。因此,您需要考虑很多大象的特征,这些大象是您从一生中收集的所有有关大象的数据中得出的,这有助于您形成最明显特征的心理图景。大象,并把它们作为欺骗代码送给我。意识到我不必真的“知道”大象的确切含义,我只有一个作弊代码可以帮助我识别大象。但是,该作弊代码几乎与了解大象一样有效!(而且从一个哲学观点-你真的知道什么 大象又或者我们不都只是通过类似的秘籍和判断一些思考感知世界?)。
但是为什么只给我看一张照片(您之前显示的照片)并认为足以让我理解这个主意呢?因为我(当然是个白 痴)把这张照片当作“神圣的真理”,所以我假设每只大象看起来与那张照片完全相同,并且几乎是完美的搭配。
深度学习的工作方式非常相似。
这是深度学习的基础:人工神经网络(ANN),我现在将对其进行解释。它们也称为深度神经网络。
首先,我假设您从高中就知道一些数学。你知道什么是矩阵吧?并且您可以将一个矩阵与其他矩阵相乘?从字面上看,这是我需要您为本文撰写的唯一的数学部分。但是,如果您不知道这一点,请不要感到难过!我从小就讨厌数学。无论如何,这里是一个复习:
记住什么是矩阵。
人工神经网络(ANN)确实有些花哨的东西,但我将带您踏上一步。您会看到,人脑是由许多称为“神经元”的细胞组成的网络,这是人工神经网络的灵感来源。这是纸上的样子:
ANN是一个魔术盒,它接受输入并给出输出。例如,假设您想要一个神奇的人工神经网络,该神经网络可以拍摄一张照片,并可以判断该照片是否是大象。您将照片放入包装盒,然后回答“是”或“否”。
或者,您放一张前方道路的照片,然后让ANN告诉您是应该减速还是加快速度。答案就出来了,“加速!”
它是怎么发生的?您如何创建该ANN?
简而言之,人工神经网络就像是人类大脑的简单版本。首先,您需要对数据进行训练。当您将数据提供给人工神经网络时,它会创建一个“作弊代码”,以帮助下次进行决策。(我将在稍后给出详细示例)此“欺诈代码”称为ANN的“权重”。您之前看到过“矩阵”吗?您可以说第一个矩阵[xy]矩阵是输入,第二个矩阵[uw]矩阵是权重或作弊码的集 合。当您将输入乘以权重时,您会得到一个答案。
ANN可以有很多不同的种类,并且根据您的设计方式,可以给出“是或否”的答案,或者例如可以给出特定的数字或不同数字的列表,等等。可以选择输出的类型,接收的类型以及输入的大小和复杂程度,这使得它非常灵活。您可以构建将视频作为输入,语音样本,图像或文本段落等的神经网络。当然,所有这些都将自动在计算机上转换为数字,并且会有巨大的“权重”矩阵乘以该输入,生成输出即您的答案。
但我敢肯定,您仍然不完全了解。您如何“训练”人工神经网络为您提供有意义的输出?
假设您想训练ANN来识别大象。
因此,您将创建一个新的ANN,该ANN接受某种类型的输入并给出某种类型的输出。最初,该ANN对其所要解决的问题一无所知。就像原始大象中的我一样-在向我展示大象的第一张照片之前,我不知道大象是什么。如果您问我在哪里,然后在照片中寻找大象,那我可能会随机挑选一些东西。因此,您可以说一开始,我有一些随机的废话作弊代码,对吗?但是当您向我展示一头大象并告诉我这是一头大象时,突然我调整了我的随机作弊代码,现在我有了一些关于大象是什么的想法。我的作弊代码不再是随机的,如果我从前面看到大象,我可能会选择正确的答案!因此,当我获得更多信息时,我已经更新了作弊代码。而且,我所拥有的大象的照片越多,我的作弊代码就越能给出正确的答案。我仍然不知道大象是什么,但是我已经在不同的照片中看到了足够的相关性,可以识别大象的最特殊特征并远离它们。
类似地,当您第一次创建ANN时,首先要给它分配一组随机的权重(=作弊代码)。然后,向它显示输入图像(大象的照片),并告诉它您期望的输出(回答“是”)。ANN的优点在于,如果您给它一个示例输入及其相应的输出,则它将调整其作弊代码,以便下次可以重复该正确答案。它将更改权重矩阵中的数字您提供给它的数据越多,以便能够匹配您的答案。这就是为什么,您可以从一组随机权重开始,随着时间的推移,ANN会对其进行调整,以使它们可以很好地用作作弊代码!酷吧?这就是ANN的“学习”方式。您提供的数据越多,调整权重的程度就越多,并且变得越准确。
如前所述,这是如何通过矩阵乘法实现的。该ANN的权重矩阵将具有以下值:如果将其与输入图像相乘(该图像将转换为数字),则可以获得答案。通常,不仅有一个权重矩阵,而且还有一系列矩阵,您将它们相乘。但是概念与您在下图中看到的相同:
粗糙矩阵表示
但这还不够。
请记住,人工神经网络不是很聪明-毕竟,它适用于作弊代码。如果您只给大象照片看一下,并且对每张照片都说“是”,您认为它将做什么?
会很懒惰,并假设每张照片都是大象!它将以这样的方式调整其权重(备忘代码),无论给出的照片是什么,它始终会输出“是”。这就是所谓的“ 欠佳 ”,这基本上意味着您误以为白 痴朋友很聪明。您的ANN 偏向某个特定答案。为防止这种情况,您还需要提供反答案为“否”的反例。因此,您还混合了许多示例图像,这些图像不是大象,而是狮子,母牛,人类,松鼠,皮卡丘和鳞茎龙,海马以及……(对不起,我被带走了),现在ANN将被迫更仔细地调整其作弊代码。现在,您正在提高其准确性并使其更加可靠!或者,当ANN的作弊代码仍然很懒惰,但现在它已经变得非常聪明,以至于它开始记忆时,您也可以“ 过度拟合 ”您提供的全部培训数据!当您的ANN很大且很深时,通常会发生这种情况,因此从某种意义上说,它只是开始存储您提供的所有信息。它非常擅长回答您的训练数据,但是如果给出一个从未遇到过的新示例,它就会失败。它不再像作弊代码那样工作,而是变得像图像字典一样。您可以通过减小模型的大小(随机减小一些权重)或增加数据的种类来防止这种情况。前者称为“辍学”(非常简单但非常疯狂的想法),后者称为“ 平衡数据集 ”。
您还从较早的野生动物园示例中学到了教训,现在,您将要谨慎地从许多不同的角度展示大象的其他照片,以免出现与白 痴朋友一样的错误。这就是为什么研究人员/工程师经常“ 扩大 ”他们的训练数据集以包括镜面反射或同一图像的较亮/较暗版本等,以增加其数据的多样性。这有助于确保ANN尽可能准确。您希望作弊代码超级“健壮”,以使其与真实人类一样有效,甚至更好。
到训练结束时,如果有足够的平衡数据和扩充等,您将拥有经过训练的ANN(也称为经过训练的模型),该模型可以以合理的准确性识别图像中的大象,并且还知道何时不识别大象。
“过拟合 ”是您在两段之前遇到过的一个词(=网络变得太聪明了,表现得就像它刚刚记住了您的数据一样),是深度学习术语中的一个非常普遍的术语,您现在知道它的含义了。(欠拟合问题不那么麻烦,因为它很容易诊断并且易于解决。)有人可能会说:“哦,我的模型在新数据上不能很好地工作,我想这是过拟合的”,您会说, “您是否尝试扩充培训数据?” 您将立即拥有夜晚。另一个人甚至可能会假设您自己是一名深度学习工程师!(如果他们这样做,请告诉他们“哦,不,我只是在Medium上关注Aman。”当他们问我是谁时,请假装说“哦,你不知道?他是这个领域中最酷的家伙!”)。
调整权重的过程(根据数据更新作弊代码)涉及反向传播。在训练过程中,每当您向ANN展示示例输入(例如小猫),然后告诉答案(“不,它不是大象!”)时,它都会首先尝试使用其当前的作弊代码自行编写回答。如果答案是正确的,那么就不需要调整作弊代码,对吗?惰性ANN仅在犯错时才更新其作弊代码。所以,只有当ANN的答案是错误的,它会通过调整其权重(=金手指码)的微小并再次测试重量。这种调整算法称为BACKPROPAGATION。ANN的“错误”通过权重矩阵发送波动,从而改变了许多权重值。因此,您可以说该错误会通过网络传播回来。同样,这就是为什么您始终可以始终使用随机权重创建ANN的原因,并且随着时间的推移,它将自行调整它们。
简而言之,如果您将作弊代码用于考试,并且弄错了一些答案,那么您很可能会升级该主题下一次考试的作弊代码,以提高准确性。每次考试后,根据其成绩编辑/重写作弊代码的过程称为反向传播。
现在滚动到我上面粘贴的“神经网络”的图形图像。您看到所谓的“隐藏层”吗?好吧,人工神经网络是由神经元层组成的,这些神经元带有权重作为值。它们被称为“隐藏层”,因为您不需要知道网络中的确切权重!您可以肯定地打印出这些值,但是查看一个矩阵可以毫无用处,因为矩阵可以变成数百万或数十亿个小数。这是一个作弊代码,它会根据您输入的内容进行更新,这就是您所需要知道的。
这就是为什么深度学习通常被认为是“黑匣子”系统的原因。如果您以前曾经用任何一种语言编程过,您都会习惯于为所有程序写下程序的显式指令。但是在这里,您看不到计算机为代替书面算法而自行创建的底层“作弊代码”。
回到自动驾驶汽车,假设您在特定的毫秒内从汽车周围的不同相机拍摄了照片,还拍摄了从雷达和激光雷达(激光)收集的所有数据,并将它们组合在一起,形成一个列表,使用该列表作为汽车ANN的输入。您从网络中获得的输出是一长串的转向角,油门/制动值,是否点亮大灯,是否鸣喇叭等等。这些是您可以预测的“标签”人工神经网络。
您使用人类收集的特定数据显式训练ANN的一种深度学习称为“监督学习”。对于每个数据样本,您都有数据并有标签。
因此,这里有一个示例,说明您将如何“训练”汽车的大脑。首先,您只需要自己正常驾驶汽车,但是就可以继续收集来自传感器和摄像机等的输入数据。还有一种设备,可以针对每毫秒的数据来测量您在驾驶过程中产生的转向角和节气门压力等。然后,一旦您回家,就可以对驾驶时收集的所有数据进行“训练” ANN。ANN将更新其作弊代码,以获取您的计算机视觉输入,并尝试尽可能地模仿您的驾驶决策。
这被称为行为克隆,它在原则上类似于当今大多数汽车公司正在做的事情-收集驾驶数据,并使他们的汽车成为“实践”。每次训练旅行后,赛车的决策能力都会越来越好。行为克隆仅用于系统工作流程和驱动过程的一小部分。还有很多手动调整,人工编写的说明和检查,以确保汽车不会像训练有素的人工神经网络所带领的无头鸡那样运转。

在所有其他方面都相似的情况下,驾驶数据是开发自动驾驶汽车竞赛中最大的获胜因素。

现在,您知道什么是“深度学习”及其作用。您知道什么是深层神经网络(= ANN),以及它们如何工作(权重=作弊码,反向传播=根据给定的示例测试调整权重)。您还知道应该有一个庞大且平衡的数据集,以使网络不会过拟合(在设置作弊代码时会变得懒惰或太聪明)。
恭喜你!我不骗你,这比你想像的要多!

计算机视觉

还记得《终结者》中的这一幕吗?
Schwarzenegger赤裸裸地走进一家酒吧,寻找找人从那里取衣服。当您考虑“计算机视觉”时,这一定是您想到的,并且您部分正确。
自动驾驶汽车也可以看到这样的世界。计算机视觉技术的主要目的是处理相机图像,以检测车道线,跟踪其他车辆和行人,查找道路上的任何颠簸或空洞,测量汽车与其他物体之间的距离等。
对于计算机视觉,没有一种技术或底层技术-而是通常归结为简单的图像处理。您仅受您的想象力和设计复杂算法的能力的限制,如果您精通几何,那将是另一个优点。例如,一种处理相机图像的流行方法涉及查看颜色在水平和垂直方向上变化的速度。那就是所谓的“梯度”,它可以用来寻找边缘。这是一个例子:
这些都是通过使用流行的计算机视觉功能库OpenCV的简单技术创建的。您应该了解OpenCV,因为它是为此目的最受欢迎的库。每个机器人技术或深度学习的人都知道这一点。
再以上述示例为例,您看到的图像只是矩形上1和0的表示。一个是白色,而0是黑色!您可以选择图片任何一个区域中的像素并进行播放。这就是我检测车道线并提出项目输出的方式,如本博文开头所示。
计算机视觉中用于检测物体的另一种常见技术称为立体视觉。不要被看似复杂的名字所吸引,立体视觉只是意味着用多只眼睛看东西(您一直都在做)。当您用两只眼睛看到东西时,您可以更好地估计它的距离和形状。同样,汽车在两侧使用多个摄像头,并将这些图像组合在一起,从而更真实地看到世界。
当难以看清道路时,诸如雪,雨等不利条件会如何?好吧,我们不要忘记其他两个传感器(雷达和激光)。即使任何两个传感器不能很好地工作,该系统的设计也使得第三个传感器仍然应该非常可靠(但这是一个持续的研究领域,我们还不完善)。此外,如果已经对汽车的神经网络进行了在这种条件下驾驶的培训,则汽车应该对如何做出决策有一些了解。再次,正如我之前所说,最重要的是收集足够的数据。您训练的越多,汽车的性能就越好。
我将不涉及计算机视觉的更多细节,因为它是一个非常广阔的领域。只要知道这不是科幻小说,就没有什么“神奇”的东西了。这只是利用您的想象力来播放图像。

机器人与导航

实际上,我不会在这里花费太多时间。原则上,机器人技术非常简单(您不需要花哨的想象力就可以了解发生了什么)—您基本上需要了解一种称为执行器的东西。但是,即使想像起来很简单,执行起来也很难!
一个致动器是一个装置,该装置需要一个电信号作为输入,并将其转换成一个物理动作。它并不太复杂,通常它内部只有一个电动机,该电动机根据接收到的信号值旋转一定角度。执行器有各种形状和尺寸,方向盘上有一个,油门,制动器,齿轮,发动机等上有一个。您就明白了。
对于导航,除了GPS /地图/计算机视觉技术外,您还应该了解一种称为“ 航位推算 ” 的非常酷的技术。它涉及根据您的行进速度和行驶距离来计算您当前的位置,并知道直到现在的所有转弯的历史,等等。有一个场景,他被绑架并被带到马车里被蒙住了双眼,但是当他们到达目的地后,他神奇地知道了他的真实身份。观看此场景的前几分钟,您将了解什么是“航位推算”。该系统的工作原理与福尔摩斯十分相似。
航位推测法的原理用于“定位”(估计车辆的位置),然后将该信息用于路径规划(您应该去的位置)。

好的!现在您应该对自动驾驶汽车的工作原理有个很好的了解。这是我们学到的:

  1. 深度学习-作弊代码,平衡训练数据,过度拟合等问题,为什么深度学习是“黑匣子”等。

  2. 计算机视觉-相机,雷达和激光雷达传感器,立体视觉,如何创造性地处理图像以提取许多不同类型的信息,这里有一个流行的编程库,称为OpenCV。

  3. 机器人技术-什么是执行器。

  4. 导航-您了解到,除了GPS和存储的地图等之外,汽车还使用了一种称为“航位推算”的Sherlock Holmes式技术。

所以……您现在感觉比20分钟前更加危险和令人敬畏吗?
我的目的不仅是给您信心,而且是感谢。要真正构建自动驾驶汽车,需要很多真正聪明的人来做百万种不同的事情,现在您可以更加尊重他们了。
本文完。
原创申明:本文转自网络,旨在普及自动驾驶相关的一些基础知识,如有侵权,请联系我们处理。

来源:车路慢慢
汽车Sherlock自动驾驶机器人控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-06-21
最近编辑:10月前
李慢慢
硕士 自动驾驶仿真工程师一枚
获赞 10粉丝 57文章 122课程 0
点赞
收藏
未登录
还没有评论

课程
培训
服务
行家

VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈