自动驾驶异构计算能力及CNN算法研究毕业论文
2020-03-10 19:33:13
摘 要
自动驾驶是传统汽车产业和新一代信息技术结合的产物,是信息化时代到来所必然产生的结果。在信息技术日益发达地情况下,传统的汽车已逐渐不能满足人们的生活需要,人们趋向于更加便捷更加智能的生活。而无人驾驶技术是一门多学科交叉而成的新技术,涉及到通信技术,计算机技术,车辆工程技术以及数学学科等多们学科技术。本文主要针对无人驾驶系统中的硬件计算平台进行研究,了解常用的几种异构计算技术,并分析各自的优劣;同时本文还对CUDA,一种GPU并行通用计算平台展开了详细地介绍,分析了CPU-GPU异构计算平台相对于传统CPU集群的优势,同时对如何进行CUDA程序优化展开了详细地描述。最后对无人驾驶系统的环境感知部分所要用到的CNN算法进行了深入的研究,了解到了卷积神经网络在计算机视觉领域的广泛应用以及该技术在环境感知部分发挥的重要作用;同时利用CNN算法完成了基于MNIST数据库的手写数字识别的实验。
关键词:自动驾驶,异构计算,CUDA,CNN,手写数字识别
Abstract
Autopilot is a product of the combination of the traditional automotive industry and the new generation of information technology. It is the result of the arrival of the information age. With the development of information technology, traditional cars have gradually failed to meet people's needs. People tend to be more convenient and smarter lives. Driverless technology is a multidisciplinary new technology, involving communication technology, computer technology, vehicle engineering technology and mathematics disciplines and many other subjects. This paper focuses on the research of hardware computing platforms in unmanned systems, understanding several commonly used heterogeneous computing technologies, and analyzing their advantages and disadvantages. At the same time, this article also presents a detailed introduction to CUDA, a GPU parallel general computing platform. This paper analyzes the advantages of CPU-GPU heterogeneous computing platform over traditional CPU clusters, and describes in detail how to perform CUDA program optimization. Finally, the CNN algorithm used in the environment-sensing part of the unmanned system is studied in depth. It is understood that the convolutional neural network is widely used in the field of computer vision and the technology plays an important role in the perception of the environment. At the same time, CNN is used. The algorithm completed the experiment of handwritten digit recognition based on the MNIST database.
Keywords:Autopilot, heterogeneous computing, CUDA, CNN, handwriting recognition
目 录
摘要 I
Abstract II
目 录 3
第1章 绪论 1
1.1自动驾驶汽车的发展历程 1
1.2研究现状 2
1.2.1自动驾驶异构计算平台的现状及发展 3
1.2.2人工神经网络的发展及现状 3
1.2.3卷积神经网络的发展及现状 4
1.3研究内容及主要工作 5
1.4本章小结 5
第2章 自动驾驶异构计算平台 7
2.1异构计算 7
2.1.1异构计算的概述 7
2.1.2异构计算的研究现状 7
2.2几种常见的异构计算平台 8
2.2.1基于CPU-GPU架构的异构计算平台 8
2.2.2基于CPU-FPGA架构的异构计算平台 9
2.2.3基于ASIC的异构计算平台 9
2.2本章小结 10
第3章 基于CPU—GPU异构模型的CUDA计算平台 11
3.1 CPU—GPU异构计算模型 11
3.1.1CPU和GPU的介绍及硬件结构的比较 11
3.2 CUDA简介 12
3.2.1 CUDA理论基础 12
3.2.1 CUDA的应用 14
3.3 基于CUDA模型的GPU硬件体系结构 14
3.4 基于CUDA的编程模型 16
3.4.1 线程组织 17
3.4.2 存储结构 18
3.4.3 编程模型 19
3.5本章小结 20
第4章 CUDA程序的性能优化 21
4.1影响计算性能的因素 21
4.1.1 访存延迟 21
4.1.2 负载分配 22
4.1.2 同步开销 22
4.2访存优化 23
4.2.1存储器间数据传输的优化 23
4.2.2全局存储器的联合访问 24
4.2.3利用共享存储器进行合并 25
4.3指令流的优化 26
4.3.1 指令性能和和延迟 26
4.3.2避免控制流分支 27
4.4本章小结 28
第5章 人工神经网络和卷积神经网络 29
5.1人工神经网络 30
5.1.1神经感知元模型 30
5.1.2感知机与多层网络 31
5.1.3 误差逆传播算法 32
5.2卷积神经网络 35
5.2.1卷积神经网络的结构 36
5.2.2卷积神经网络的特点 37
5.3本章小结 38
第6章 基于卷积神经网络的手写数字识别 39
6.1手写数字识别的概述 39
6.2手写数字识别的流程 39
6.3MNIST手写数字数据库的简介 39
6.4基于CNN的手写数字识别 40
6.4.1基于MLP的手写数字识别 40
6.4.2基于CNN的手写数字识别算法 41
6.4.3基于CNN改进的手写数字识别算法 42
6.5本章小结 43
第7章 结论 44
7.1全文总结 44
7.2展望 44
参考文献 46
致谢 48
第1章 绪论
1.1自动驾驶汽车的发展历程
近几年来,随着人工智能领域不断地发展壮大,自动驾驶技术逐渐进入人们的视野,受到了越来越广泛的关注,全自动无人驾驶的序幕已经拉开。自动驾驶技术是指在没有人类干预的情况下,车辆自身通过传感器、摄像头等环境感知部件感知周边环境并自身做出决策实时改变驾驶行为来完成驾驶任务的驾智能驶技术。实际上,在汽车问世不久之后,发明者们就开始研究自动驾驶汽车。1925年,发明家弗朗西斯胡迪纳就展示了一辆无线电控制的汽车,这辆车在没有人控制方向盘的情况下在曼哈顿的街道上行驶。当时的《纽约时报》是这样描述当时的场景的—— “就好像一只幽灵的手在方向盘上”。在之后的1969年,人工智能的创始人之一的约翰麦卡锡在一篇名为“电脑控制汽车”的文章中描述了与现代自动驾驶汽车类似的想法,自此自动驾驶技术进入发展的萌芽期。再到20世纪90年代,卡梅隆大学的Dean Pomerleau发表了一篇描述了神经网络如何让自动驾驶汽车能够实时从公路获取原始图像来实现和输出方向控制的博士论文以及之后他和他的同事在公路上试驾了他们的无人驾驶汽车,实现了“不用手驾驶横跨美国”的任务,成为了自动驾驶技术一座新的里程碑。随后,在21世纪初期,DARPA挑战赛的失败让人觉得自动驾驶汽车似乎离我们还很遥远。但自动泊车系统的诞生表明传感器和自动驾驶技术正在接近实现我们现实世界中的场景。从2009年开始,谷歌开始开发无人驾驶汽车项目——Waymo。几年后谷歌便宣布其无人驾驶汽车在电脑控制下总共行驶了30万英里,并且未发生一起事故。在2014年,谷歌展示自己的无人驾驶汽车的模型,与传统汽车相比,该模型去掉了方向盘、刹车和油门踏板,标志着无人驾驶汽车100%的实现。至2016年年底,谷歌所有无人驾驶汽车加起来已经行驶了超过200万英里。2013年,包括通用汽车、福特、奔驰、宝马在内的大型汽车公司都在研发自己公司的自动驾驶汽车技术。自动驾驶汽车的发展已经是大势所趋,全球各大汽车公司已纷纷加入无人驾驶汽车研发的行列,除此之外一些大型互联网公司也纷纷加入到无人驾驶汽车的研发当中,如从最早的Google公司的Waymo的一枝独秀,到之后的Uber、苹果的无人车计划以及国内的百度Apollo计划等,无人驾驶汽车的研究现如今已经进入到百花齐放的阶段。虽然无人驾驶汽车的研发正进行的如火如荼,但无人驾驶汽车导致的死亡事件也一次次地将无人驾驶技术推到舆论漩涡的中心。从最早的特斯拉Model S撞到一辆牵引式挂车导致特斯拉车主死亡到最近Uber无人车的判断失误导致一名名叫赫茨伯格的车主的死亡,无人驾驶技术在飞速发展的同时也给人们带了关于无人驾驶汽车在人道主义上的思考。虽然在实现真正的无人驾驶的路途是遥远的,道路是坎坷崎岖的,但我坚信自动驾驶汽车的未来的是美好的,并且其真实存在于我们的生活当中。
1.2研究现状
无人驾驶系统是一个复杂的系统,系统主要由三部分组成:算法端、Client端和云端[1]。其中算法端包括面向传感、感知和决策等关键步骤的算法;Client端包括机器人操作系统及硬件平台;云端包括数据存储、模拟、高精度地图绘制及深度学习模型训练。其中硬件平台包括传感器平台、计算平台和控制平台,而计算平台则是无人驾驶这个复杂系统的大脑。随着人工智能以及无人驾驶等计算密集型领域的高兴起,传统的CPU处理器的计算能力已经满足不了开发者们的需要。在后摩尔时代,异构计算被认为是现阶段解决此计算鸿沟的关键技术。目前 “CPU GPU”以及“CPU FPGA” 是最受业界关注的异构计算平台。它们具有比传统CPU并行计算更高效率和更低延迟的计算性能优势。面对如此巨大的市场,科技行业大量企业投入了大量的资金和人力,异构编程的开发标准也在逐渐成熟。目前,在全球范围内大量的科技公司投入到人工智能芯片的研发当中,其中以NVIDIA、Intel等为代表的传统芯片公司仍走在世界的前列,但也不乏类似Google这样的软件公司研发出了自己的AI芯片——TPU;当然,其中也不乏“中国芯”的存在,如华为的手机AI芯片麒麟970以及中科寒武纪的智能芯片也走在世界的前列。
异构计算技术适合处理高度密集型的计算任务,这就使得无人驾驶汽车在高速行驶中能够对周围环境的物体及时感知并迅速做出判断。而无人驾驶系统的感知系统部分需要对输入的图像信息或者激光雷达3D点云信息做出迅速的处理和判断,这一部分涉及到计算机视觉(Computer Vision)的知识,而现如今CNN(卷积神经网络)在计算机视觉领域发挥着重要的作用。卷积神经网络(Convolution Neural Network,CNN)是一种适合使用子在连续值输入信号上的深度神经网络,比如音频数据、图像以及视频数据。由于卷积神经网络的结构是仿照生物视觉神经系统构建的,针对生物视觉神经系统的特点对深度神经网络的模型进行了改进,所以它非常适合计算机视觉领域的研究。2012年,在ImageNet图像识别竞赛中,基于CNN的ALexNet结构以95%的识别准确率夺得了冠军,打破了当时的世界纪录,从此计算机视觉领域发生了天翻地覆的变化,各种视觉任务都放弃了传统方法,利用卷积神经网络构建新的网络模型,例如VGGNet[2],ResNet[3]等。CNN在无人驾驶技术的环境感知部分发挥着重要的作用。
1.2.1自动驾驶异构计算平台的现状及发展
当传感器接收到环境感知信息之后,数据就会被传到计算平台,由不同的芯片进行计算。因此,计算平台的设计直接影响到无人驾驶系统的实时性及鲁棒性。
目前针对无人驾驶的计算解决方案主要有以下几种:基于GPU的计算解决方案,基于DSP的解决方案,基于FPGA的解决方案,基于ASIC的解决方案等几种主要解决方案。在机器学习快速发展的推动下,GPU目前在深度学习芯片市场非常受欢迎,很多汽车生产商也在使用GPU作为传感器芯片发展无人驾驶汽车,GPU大有成为主流的趋势。DSP(Digital Singnal Processor)又名数字信号处理器,采用的是哈佛设计,即地址总线和数据总线分开的设计方案,允许取出指令和执行指令完全重叠,大大提高了微处理器的速度。而FPGA作为GPU在算法加速上强有力的竞争者,FPGA硬件配置最灵活,具有低能耗、高性能及可编程等特性,十分适合感知计算。而且FPGA相对于GPU价格更便宜,并且具有明显的性能和能耗优势。但对于大多数程序员来说,FPGA的开发是具有一定难度的,因为开发FPGA需要用到硬件描述语言,要用到硬件的知识。ASIC (Application Specific Integrated Circuits,专用集成电路)是指应特定用户要求或特定电子系统的需要而设计、制造的集成电路。ASIC可以看成是固化的FPGA,但ASIC开发成本较高,一次性成本远高于FPGA;但是性能远高于FPGA,比较适合于大规模生产。
除了上述几种比较主流的无人驾驶计算解决方案,还有一些基于其他芯片的解决方案。如:谷歌TPU芯片,相比于GPU更适合训练,TPU更适合做训练后的分析决策;其TPU也是AlphaGo战胜李世石的“秘密武器”,它使得机器学习类深度神经网络模型在每瓦特性能上优于传统硬件,但TPU仅特定的机器学习应用中起辅助作用,所以依旧少不了CPU和GPU的硬件支持。
1.2.2人工神经网络的发展及现状
人工神经网络(Artificial Neural Network,ANN)是对生物神经网络进行模拟仿真的一种网络,它是一种由大量的相互连接的神经元构成的自适应非线性动态网络模型。1943年,MP模型的出现具有开创性的历史意义,它是由McCulloch和Pitts提出的基于神经元的一种数学模型。MP模型的出现为人工神经网络的发展提供了理论依据。1958年, Perceptron感知机模型的提出建立了第一个真正的人工神经网络模型,之后Rosenblatt等人又提出了一种带有隐层的三层感知机模型,这是神经网络发展的基础。但在1969年,M.Minskyamp;S.Papert发表了《Perceptron》一书,从数学的角度分析了F.Rosenblatt的单层感知器,以一个异或运算的例子批判了人工神经网络,智能系统如何从环境中自主学习的问题实际上并没有很好解决,人工神经网络的发展从此进入了一段漫长的低谷期。在1982至1986几年的时间里,美国物理学家Hopfield提出了具有联想记忆的反馈互联网络,即Hopfield网络,首次引用能量函数的概念来分析动态网络,这就从多层前馈网络和反馈网络两方面掀起了人工神经网络全球性的研究热潮。在1986年,Rumelhart等人提出了并行分布处理理论,并且在此基础之上又分析了用于非线性转移函数的多层前馈网络,解决了感知器模型无法解决的线性不可分的问题,而且提出了相对比较成熟的权值重新调整的算法。BP算法在推动人工神经网络蓬勃发展的同时也成为了最受关注的算法之一。
除了多层前馈神经网络之外,还有许多其他的人工神经网络也得到了广泛的应用,比如:Hopfield网络,自适应共振理论网络(ART),径向基函数网络,循环神经网络,对传神经网络,Kohonen网络等,这些神经网络各自有各自的优点,适用于不同的情况,例如循环神经网络RNN适用于回归序列模型而卷积神经网络CNN更适合于做图像处理相关的问题。经过了长时间的不断的发展,人工神经网络在预测、函数近似、模式分类、语音识别等应用领域取得了让世人瞩目的成就。
1.2.3卷积神经网络的发展及现状
卷积神经网络(Convolutional Neural Network,CNN)是深度信念网络的一种,CNN中的神经单元对于一定覆盖范围内的数据单元有着良好的反应,对于大型图像处理有出色表现。20世纪60年代,Hubel等科学家通过对猫视觉皮层细胞的研究,提出了感受野这一概念;到了80年代,Fukushima在感受野概念的基础之上进而提出了神经认知机的概念,这一模型可以看做是CNN实现的先例。1990年,LeCun等人发表了重要的文章建立了CNN现代框架的论文,以及在后来对其进行的改进。他们研发了一种多层人工神经网络,名为LeNet-5[4],这种网络可以对手写数字进行分类。CNN能够通过极少的预处理过程而直接从原始像素中识别视觉层面的规律,这也是它在图像识别领域应用如此广泛的原因。然而,由于受到计算机硬件条件的限制导致计算机的能力跟不上,并且最初神经网络缺乏大规模的训练数据,LeNet-5在处理一些复杂问题时候的表现并不理想。随后又出现了一些在图像处理中表现比较优秀的算法网络,如ImageNet,GoogleNet等。
卷积神经网络中间层间的紧密联系和空间信息使得其适合于处理图像相关的问题,它能够自动地从图像中提取其一些相关特性。卷积神经网络被广泛应用到人脸检测、车牌识别、障碍物检测等各个领域,不仅如此卷积神经网络甚至可以将视频信息中的连续帧作为输入数据,通过引入时间维度上的数据,实现视频当中人物动作的识别。
1.3研究内容及主要工作
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示: