在感知部分的课程中,我们将首先介绍计算机视觉的基本应用领域;再进一步了解机器学习、神经网络和卷积神经网络的基础知识;随后我们将讨论感知模块在无人车中的具体任务;最后了解 Apollo 感知模块的体系结构和传感器融合的相关内容。
上节课,我们学习了计算机视觉的基本应用领域,这节课我们将重点了解机器学习、神经网络和卷积神经网络的基础知识。
机器学习
机器学习是使用特殊算法来训练计算机并从数据中学习的计算机科学领域。通常情况下,这种学习结果存放在一种被称为“模型”的数据结构中。事实上,“模型”只是一种可用于理解和预测世界的数据结构。
机器学习诞生于20世纪60年代,但随着计算机硬件的不断改进,在过去的20年中才越来越受欢迎。例如,金融公司现在正通过机器学习来对汇率和证券交易进行预测,零售企业使用机器学习来预测需求,医生甚至使用机器学习来辅助医疗诊断。
机器学习应用:金融公司、零售企业、医生
机器学习涉及使用数据和相关的真值标记来进行模型训练。例如,可能会显示车辆和行人的计算机图像,以及告诉计算机图像的对应标签,我们会让计算机学习如何更好地区分两类图像,这类机器学习也被称为监督式学习,因为模型利用了人类创造的真值标记。
监督式学习
设想一个类似的学习过程,但该过程使用了没有真值标记的车辆与行人图像。在这种方法中,我们会让计算机自行决定哪些图像相似、哪些图像不同,这被称为无监督学习。
无监督学习
这里我们不提供真值标记,而是通过分析输入的数据(在这种情况下为摄像头图像),计算机凭借自行学习找到区别。
另一种方法被称为“半监督式”学习,它将监督学习和无监督学习的特点结合在一起,该方法使用少量的标记数据和大量的未标记数据来训练模型。
强化学习是另一种机器学习。强化学习涉及允许模型通过尝试许多不同的方法来解决问题,然后衡量哪种方法最为成功,计算机将尝试许多不同的解决方案,最终使其方法与环境相适应。
例如,在模拟器中强化学习智能体可训练汽车进行右转,智能体将在初始位置发动车辆,然后进行实验性驾驶,以多种不同的方向和行驶速度,如果汽车实际完成了右转,智能体会提高奖励(即得分),这是针对导致成功结果的初始操作。
起初,汽车可能无法找到执行转弯的方法,然而就像人类那样汽车最终会从一些成功的右转经验中学习,最后学会如何完成任务。
神经网络
人工神经网络用于无人驾驶车受到构成人类神经系统的生物神经元启发,生物神经元通过相互连接,构成了神经元网络或神经网络,通过类似的方式我们可以将人工神经元层连接起来以创建用于机器学习的人工神经网络。
人工神经网络是通过数据来学习复杂模式的工具。神经网络由大量的神经元组成,正如人体神经系统的神经元那样,人工神经元负责传递和处理信息,也可以对这些神经元进行训练,你可以将这些图像识别为车辆,无论它们是黑是白,或大或小,你甚至可能不知道自己如何知道它们是车辆,也许是某些特征触发了你的反应,如车轮、车灯和车窗。
人工神经网络具有相似的运作方式,通过密集训练,计算机可以辨别汽车、行人、交通信号灯和电线杆。
我们不是总能理解计算机如何做出这样的辨别,但它们学习了用于执行任务的模型,只是我们可能很直观地理解该数学模型。当看到该图像时,你的大脑如何工作?大脑可能会将图像分为几部分,然后识别特征,如车轮、车窗和颜色,然后大脑将使用这些特征对图像进行检测和分类。
例如,在确定图像是否为汽车时,大脑可能不会认为颜色是关键特征,因为汽车有多种颜色,所以大脑会将更多权重放在其他特征上,并降低颜色的重要性。
同样的,神经网络也会从图像中提取许多特征,但这些特征可能是我们人类无法描述或甚至无法理解的特征。
但我们最终不需要理解,计算机将调整这些特征的权重以完成神经网络的最终任务,这就是深层神经网络的思维方式。
反向传播算法
前面我们已经讨论过神经网络如何从数据中“学习”,那么你可能想知道这种学习如何发生。学习有时称为训练,它由三部循环组成:前馈、误差测定和反向传播。
首先随机分配初始权重,即人工神经元的值,通过神经网络来馈送每个图像,产生输出值,这被称为前馈。
下一步为误差测定。误差是真值标记与前馈过程所产生输出之间的偏差。
最后一步是反向传播,通过神经网络反向发送误差,此过程类似前馈过程,只是以相反方向进行。每个人工神经元都对其值进行微调,这是基于通过神经网络后向传播的误差。
所有这些独立调整的结果,可生成更准确的网络。
一个训练周期包括前馈、误差测定和反向传播还远远不够。为了训练网络,通常需要数千个这样的周期,但最终结果应该是模型能够通过新数据做出准确预测。
卷积神经网络
卷积神经网络(CNN)是一种人工神经网络,它对感知问题特别有效。CNN 接受多维输入,包括定义大多数传感器数据的二维和三维形状。如果使用标准神经网络对图像进行分类,则需要通过一种方法将图像连接到网络的第一层,这属于一维。标准做法是通过将图像矩阵重塑为一个矢量,并在一个大行中连接所有列,将图像“展开”为一维的像素阵列。
然而,这种方法打破了图像中所嵌入的空间信息。如果图像中有车轮,则车轮中的所有像素将散布在整个像素阵列中。这些像素以二维码方式连接形成车轮,如果我们将其散布在一个维度上,神经网络很难从图像中提取车轮。
CNN 通过维持输入像素之间的空间关系来解决这个问题。具体来说,CNN 通过将过滤器连续滑过图像来收集信息,每次收集信息时,只对图像的一小部分区域进行分析,这个过程被称为“卷积”。当我们在整个输入图像上对一个过滤器进行“卷积”时,我们将该信息与下一个卷积层相关联。
例如,CNN 可以识别第一个卷积层中的基本边缘和颜色信息,然后通过在第一层上卷积新过滤器,CNN 可以使用边缘和颜色信息来归纳更复杂的结构,如车轮、车门和挡风玻璃;而另一个卷积可使用车轮、车门和挡风玻璃识别整个车辆;最后,神经网络可使用这一高阶信息对车辆进行分类。
人们通常不太清楚 CNN 如何解读图像,CNN 有时会侧重于图像中令人惊讶的部分,但这也是深度学习的神奇之处,CNN 根据其任务查找真正需要的特征,任务可能是图像检测、分类、分割或其他类型的目标。
掌握了以上有关于机器学习、神经网络、反向传播算法以及卷积神经网络的基础知识,大家有什么学习心得呢?欢迎在下方留言区热烈讨论~
下节课我们将深入了解感知模块在无人车中的具体任务。
【转自Apollo阿波罗智能驾驶】
【推荐阅读】
无人驾驶技术课——感知(1)
添加极客助手微信,加入技术交流群
长按,扫码,关注公众号