书籍作者:任建峰 | ISBN:9787121436437 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:2424 |
创建日期:2023-04-14 | 发布日期:2023-04-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
目前自动驾驶的一个发展趋势就是智能化。随着人工智能的飞速发展以及各种新型传感器的涌现,汽车智能化形成趋势,辅助驾驶功能的渗透率越来越高。这些功能的实现需要借助于摄像头、雷达、激光雷达等新增的传感器数据,其中视频处理需要大量并行计算。然而,传统CPU算力不足,而DSP擅长图像处理,对于深度学习却缺乏足够的性能。尽管GPU擅长训练,但它过于耗电,影响汽车的性能。因此,本书着眼于未来,认为定制化的ASIC必将成为主流。本书以自动驾驶的芯片设计为最终目标,来论述设计一个面向未来的自动驾驶SoC芯片的学术支撑和工程实践。
本书共13章。其中第1章主要介绍自动驾驶目前遇到的挑战和研究方向。第2~6章重点讲述环境感知以及规划控制方面的算法设计;第7~10章重点讲述深度学习模型的优化和深度学习芯片的设计;第11章和第12章重点讲述具有安全功能的自动驾驶软件架构设计;第13章介绍5G车联网。
本书适合有志于从事自动驾驶方面的大学本科生、研究生以及工程技术人员阅读。
任建峰,博士,目前就职于谷歌公司,从事计算影像学、自动驾驶方面芯片算法研发工作,在高通、华为海思工作多年,发表论文40多篇,拥有30多项美国专利。
余成文博士, 深圳市鱼儿科技有限公司CEO,在华为技术公司国内外无线解决方案团队任职近10年,共发表论文20余篇,专利30多项。鱼儿科技致力于丰富人类智能生活的信念与愿景。
蒋立源教授,西北工业大学计算机学院退休教授。1992年获得国务院政府特殊津贴专家待遇。
详细介绍自动驾驶算法、软件和芯片设计各个环节
凝聚作者10余年高通、华为、谷歌的理论和实战经验
本书每个章节都能挖掘出潜在的自动驾驶产品和服务
高通技术副总裁×纽励科技CEO×佐治亚大学教授海内外工业界、学术界专家齐荐
前言
目前汽车发展的趋势是智能化、电动化以及共享化。随着对自动驾驶汽车的需求不断增加,越来越多的大型企业以及一些创业公司,投入了大量的人力和资源到自动驾驶这个产业中。作为未来自动驾驶的心脏,自动驾驶芯片的设计必须作为其核心技术,得到充分的投入和发展。我从2012年开始接触汽车辅助驾驶项目,主要从事辅助驾驶、影像、计算机视觉算法和芯片设计的相关工作,对这个行业的发展有一定的理解。这些年来的芯片行业经验告诉我们,芯片的设计涉及对算法的深入理解、严格的硬件开发流程、相对成熟的软件架构设计,以及对工程流程的严格执行和管理。
本书共13章。第1章主要介绍自动驾驶目前遇到的挑战和研究方向。第2~6章主要介绍自动驾驶的算法设计部分。要开发一款自动驾驶芯片,首先应该对自动驾驶的算法,如物体检测、多传感器融合等进行充分的调研,做大量的仿真实验,用来覆盖更多的场景。其中第2~4章主要介绍自动驾驶方面的几个算法。当然,涉及自动驾驶的算法有很多,远远不止这些,本书只能起到抛砖引玉的作用,希望读者能阅读大量的最新技术文章,做大量的实验,用来确保自己开发的算法具有一定的鲁棒性和准确性。第5章主要介绍高清地图的开发,目前很多创业公司的业务主要集中在高清地图的生成上。自动驾驶的技术水平还处于“按图索骥”的状态,如何快速、准确地生成高清地图也是目前的一个商机。开发出了自动驾驶算法,那么如何测试这些算法呢?第6章主要介绍一些开源的仿真器,用来测试、评估自动驾驶算法。
第7~10章是关于芯片的内容。有了成熟、相对稳定的算法,如何将其部署到汽车里面?一种方法是利用现成的商用芯片。目前一些大型半导体芯片企业,比如德州仪器、英伟达以及高通等公司,都提供了商业级别的SoC芯片,用来支撑汽车辅助驾驶或者自动驾驶的应用。其中第7章重点介绍一些商用芯片如何支撑自动驾驶的算法实现。目前很多自动驾驶算法都是基于深度学习开发的,因此模型优化是一个非常重要的课题。第8章介绍目前存在的一些模型压缩算法。第9章和第10章重点介绍如何开发深度学习的专用加速芯片,以及如何开发SoC的自动驾驶芯片。同时,我认为,适用于自动驾驶的图像传感器处理芯片和自动驾驶专用的深度学习加速器芯片,是目前存在的机会。本书也将介绍一些硬件的开源代码,比如NVDLA,有兴趣的读者可以参考。
第11章和第12章是关于自动驾驶软件架构设计的内容。要开发一款芯片,必须配备成熟的软件架构以及一些开发工具,以使开发人员更好地使用芯片。其中第11章主要介绍目前在自动驾驶领域涌现出来的一些操作系统。第12章主要介绍一些基于安全功能的软件开发架构和流程。
第13章简要介绍如何将5G用于车联网来提高自动驾驶的体验。
对于每个部分,有兴趣的读者也可以从本书中挖掘潜在的科研项目和产品。比如,对算法感兴趣的读者,可以开发多传感器的融合算法(第2章和第3章);对高清地图感兴趣的读者,可以了解高清地图是如何建立的(第5章),目前硅谷很多创业公司都在开发定制高清地图;如果有了很好的自动驾驶算法,则也可以利用模型压缩的软件方法(第8章),直接在英伟达、高通、德州仪器的自动驾驶平台上实现其产品的原型(第7章)。对硬件开发感兴趣的读者,可以参考深度学习芯片的设计(第9章)以及自动驾驶SoC芯片的设计(第10章)。特别是开源的NVDLA,做硬件设计的读者,可以参考此开源代码来设计定制的ASIC芯片。关于自动驾驶芯片的ASIC,我认为开发数字影像处理芯片以及自动驾驶专有的深度学习芯片是一个不错的方向。特别是数字影像处理芯片的设计,如何满足HDR以及快速运动的物体是一个很大的挑战,但也是一个机遇。对软件开发有兴趣的读者,可以参考软件架构设计(第12章),如何在开源代码的基础上开发属于自己的自动驾驶软件产品,这和以前的软件开发不同,需要考虑安全性能。当然,本书参考了大量的开源代码和文献,历时半年完成,其中耗费了作者大量的时间和精力。后续希望有兴趣的投资人给予一些赞助,利用作者多年的半导体开发管理经验,招聘几个工程师,把这些开源代码串起来,形成一本更具实战性的教科书,或者开发出一些更具适用性的产品。
本书的一个重要特点是结合最新发表的学术论文和开源代码,详细论述了自动驾驶芯片设计的大致过程。不但有理论基础,还有很多开源代码,为读者提供大量的实战经验,锻炼动手能力。另外,芯片设计涉及多个不同部门、不同领域的人才的合作和交流,因此,严格的流程管理、规范的代码管理、合格的文档输出,还有有效的部门沟通,在项目实施过程中都非常重要。但是,比较遗憾的是,我没有办法把这些多年的半导体开发经验写到本书里。
编写本书,旨在期望大学本科生、研究生甚至博士生能够从本书中获得一点启发,能够以严谨的学术态度充分论证每一个算法,脚踏实地地设计自动驾驶芯片,为中国的自动驾驶芯片的开发做出一点贡献。
编写本书,要感谢我的老师,西北工业大学计算机学院的蒋立源教授,没有他的鼓励和审稿,这本书是不可能写出来的。我利用工作之余,历时很长时间才完成本书的初稿,其中蒋老师也花费了大量的精力帮我通篇修改。他现在虽是耄耋老人,比我年长四十多岁,但这并不妨碍我们之间的友谊,从2002年上了蒋老师的一门“计算的数学理论”课后,我们就成了“忘年交”。从西北工业大学校园长凳上的长谈,到西北工业大学巴国布衣的餐厅,我们亦师亦友,讨论生活、学业,蒋老师鼓励我留学美国。自从我来美国后,我们中断了十四年的联系,这里要向蒋老师说声对不起,恳请您原谅。自从2019年恢复联系以来,我们就成了无话不说的知心朋友,蒋老师一直鼓励我为母校做些贡献,但我自知愚笨,才疏学浅,只能期望和老师合作编写一本书,见证我们的师生情谊。如果本书对读者有一点帮助,我将颇感欣慰。
由于水平有限,书中谬误及不当之处在所难免,希望大家给予批评指正。
第1章 自动驾驶芯片的挑战 1
1.1 自动驾驶科技界现状 1
1.2 自动驾驶设计的挑战 2
1.2.1 功能约束 3
1.2.2 可预测性约束 3
1.2.3 存储限制 4
1.2.4 热量约束 4
1.2.5 功率约束 5
1.3 自动驾驶系统算法设计 5
1.3.1 感知 6
1.3.2 决策 7
1.3.3 控制 8
1.3.4 安全验证与测试 9
1.4 自动驾驶系统计算平台 10
1.4.1 GPU 11
1.4.2 DSP 11
1.4.3 FPGA 11
1.4.4 ASIC 12
参考文献 12
第2章 3D物体检测 14
2.1 传感器 15
2.1.1 摄像机 15
2.1.2 激光雷达 15
2.2 数据集 16
2.3 3D物体检测方法 17
2.3.1 基于单目图像的检测方法 18
2.3.2 基于点云的检测方法 19
2.3.3 基于融合的检测方法 22
2.4 实战项目:3D物体检测 24
2.4.1 算法概述 25
2.4.2 点云预处理 26
2.4.3 网络结构 28
2.4.4 欧拉区域提议 28
2.4.5 锚盒设计 29
2.4.6 复角度回归 30
2.4.7 损失函数的构建 30
2.4.8 实验结果 31
2.4.9 训练细节 31
2.4.10 鸟瞰检测 32
2.4.11 3D对象检测 32
2.5 未来研究展望 33
参考文献 33
第3章 车道检测 37
3.1 传统图像处理 38
3.2 实例:基于霍夫变换的车道检测 39
3.2.1 霍夫变换 40
3.2.2 OpenCV车道检测 41
3.3 实例:RANSAC算法及直线拟合 42
3.3.1 算法思路 43
3.3.2 用Python实现直线拟合 43
3.4 基于深度学习 45
3.5 多传感器集成方案 47
3.6 车道检测系统评估标准 49
3.6.1 车道检测系统性能的影响因素 49
3.6.2 离线评估 50
3.6.3 在线评估 51
3.6.4 评估指标 52
3.7 实战项目:车道检测 53
3.7.1 概述 53
3.7.2 车道点实例网络 53
3.7.3 调整大小层 54
3.7.4 相同瓶颈层 55
3.7.5 下采样瓶颈层和上采样瓶颈层 56
3.7.6 损失函数 58
3.7.7 后处理方法 61
3.7.8 实验结果 62
3.7.9 测试部分 62
参考文献 63
第4章 运动规划和控制 68
4.1 概述 68
4.2 传统自动驾驶的规划和决策层 69
4.2.1 路径规划 70
4.2.2 实例:路径规划Dijkstra算法 71
4.2.3 实例:路径规划A*算法 75
4.2.4 行为决策 77
4.2.5 运动规划 77
4.2.6 实例:运动规划 78
4.2.7 车辆控制 84
4.2.8 实例:模型预测控制 84
4.2.9 实例:PID控制 89
4.3 集成感知和规划 90
实战项目:NVIDIA的端到端自动驾驶 92
4.4 交互行为感知和规划 94
4.4.1 合作与互动 95
4.4.2 博弈论方法 95
4.4.3 概率方法 96
4.4.4 部分可观察的马尔可夫决策过程 96
4.4.5 基于学习的方法 97
参考文献 98
第5章 定位与建图 102
5.1 SLAM问题 103
5.1.1 基于滤波器的SLAM方法 104
5.1.2 基于优化的SLAM方法 108
5.2 自主驾驶的局限性 109
5.2.1 问题的提出 109
5.2.2 避免或减少漂移的影响 109
5.2.3 自动驾驶SLAM的评估标准 110
5.3 自动驾驶中的SLAM 111
5.3.1 重新定位和回环检测 111
5.3.2 先前构建的地图中的定位 113
5.3.3 建立和使用未来地图 115
5.3.4 利用当前地图资源 116
5.4 自动驾驶中的地图表示 117
5.4.1 公制地图模型 117
5.4.2 语义地图模型 120
参考文献 122
第6章 自动驾驶仿真器 128
6.1 最新的仿真器 129
6.1.1 AirSim 129
6.1.2 Apollo 129
6.1.3 CARLA 130
6.1.4 Udacity AV Simulator 131
6.1.5 Deep Traf?c 132
6.2 仿真器实战:CARLA 132
6.2.1 仿真引擎 132
6.2.2 使用CARLA评估自动驾驶方法 133
参考文献 135
第7章 自动驾驶芯片 136
7.1 Mobileye EyeQ 137
7.2 NVIDIA 138
7.2.1 NVIDIA DRIVE AGX开发者套件 138
7.2.2 NVIDIA DRIVE软件 138
7.3 TI Jacinto TDAx 141
7.4 实战项目:360°环景系统与自动停车系统 142
7.4.1 自动停车与停车辅助系统 143
7.4.2 使用Jacinto TDA4VM处理器系列应对环视和自动停车的挑战 144
7.4.3 Jacinto TDA4VM SoC 145
7.5 Qualcomm 147
7.6 NXP 148
7.7 Xilinx Zynq-7000 148
7.8 Synopsys 149
第8章 深度学习模型优化 151
8.1 模型压缩和加速 152
8.1.1 参数修剪和共享 153
8.1.2 低秩分解 155
8.1.3 转移/紧凑卷积滤波器 156
8.1.4 知识蒸馏 159
8.2 AI模型效率工具包 159
8.2.1 大规模节能AI 160
8.2.2 通过合作推进AI模型效率的研究 161
8.3 未来研究展望 161
参考文献 162
第9章 深度学习芯片设计 166
9.1 概述 167
9.2 在CPU和GPU平台上加速内核计算 167
9.3 中科院计算所的深度学习芯片系列 168
9.3.1 卷积神经网络简介 168
9.3.2 DaDianNao 170
9.3.3 ShiDianNao 171
9.3.4 寒武纪Cambricon-X 172
9.4 麻省理工学院的Eyeriss系列 172
9.4.1 卷积神经网络基本知识 172
9.4.2 Eyeriss 173
9.4.3 Eyeriss v2 174
9.5 谷歌的TPU芯片 177
9.5.1 TPU v1 177
9.5.2 TPU指令集 178
9.5.3 TPU的心脏:脉动阵列 179
9.5.4 TPU v2/v3 180
9.5.5 软件架构 180
9.6 近内存计算 181
9.6.1 DRAM 181
9.6.2 SRAM 182
9.6.3 非易失性电阻存储器 182
9.6.4 传感器 183
9.7 DNN硬件的指标 183
参考文献 184
第10章 自动驾驶SoC设计 186
10.1 自动驾驶SoC设计流程 186
10.2 TI的Jacinto SoC平台 187
10.3 Jacinto 7处理器的功能安全特性 190
10.3.1 功能安全 190
10.3.2 软件功能安全 191
10.3.3 安全应用部署 192
10.4 具有DNN和ISP的符合安全标准的多核SoC设计 194
10.4.1 ADAS图像识别SoC 194
10.4.2 DNN加速器 195
10.4.3 具有安全BIST控制器的ISP 196
10.5 实例:NVIDIA深度学习加速器 197
10.5.1 NVDLA介绍 198
10.5.2 FireSim 199
10.5.3 NVDLA集成 199
10.5.4 性能分析 200
参考文献 200
第11章 自动驾驶操作系统 202
11.1 概述 202
11.2 开源自动驾驶操作系统 204
11.2.1 Linux RTOS 204
11.2.2 ROS中间件 205
11.3 使用开源软件开发自动驾驶技术的公司 206
11.3.1 百度 206
11.3.2 宝马 207
11.3.3 Voyage 208
11.3.4 Tier IV 208
11.3.5 PolySync 209
11.3.6 Perrone Robotics 210
11.4 汽车硬实时操作系统和框架 211
11.4.1 BlackBerry QNX 211
11.4.2 EB robinos和EB corbos 212
11.4.3 Integrity RTOS 213
11.4.4 NVIDIA DriveWorks SDK 213
11.5 总结 214
第12章 自动驾驶软件架构 215
12.1 概述 215
12.2 基于ISO 26262的软件开发 216
12.2.1 ISO 26262简介 216
12.2.2 Synopsys软件产品组合 216
12.2.3 ASIL 218
12.2.4 软件架构设计 218
12.2.5 软件单元设计与实现 219
12.2.6 软件单元测试 219
12.3 基于SAE J3016的组件架构设计 220
12.3.1 功能组件 221
12.3.2 AUTOSAR 224
12.4 自动驾驶汽车的架构设计与实现 225
12.4.1 硬件框架 226
12.4.2 软件系统架构 227
12.4.3 数据传输模块 229
12.4.4 自动驾驶测试报告 229
参考文献 229
第13章 5G C-V2X简介 230
13.1 移动车联网 230
13.2 C-V2X如何改变驾驶 231
13.2.1 避免碰撞 231
13.2.2 车队行驶 232
13.2.3 协作驾驶 232
13.2.4 队列警告 232
13.2.5 保护弱势道路使用者 232
13.2.6 支持应急服务 233
13.2.7 危险提前警告 233
13.2.8 越来越多的自动驾驶 233
13.3 C-V2X的优势 233
13.4 C-V2X的工作原理 235
13.4.1 直接通信 235
13.4.2 网络通信 235
13.4.3 5G如何改变C-V2X 236
13.5 C-V2X部署计划 236
13.5.1 中国引领潮流 236
13.5.2 澳大利亚――改善道路安全 237
13.5.3 美国――增长势头 237
13.5.4 欧洲――广泛支持 238
13.6 总结 238
算法部分有点浅,作为从零到一比较合适
2022-07-06 12:08:44
基本来说比较内容较少,适合相对入门的读友
2022-07-03 09:47:13