描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787122437334
本书具有如下特色:
1.内容新颖实用。对于人工智能这种高端学科来说,知难行易,比较好的学习方式就是上手实践。本书将高大上的人工智能技术拉下神坛,通过不同应用场景下的实实在在的案例来实现人工智能,使读者能够更具体地感受人工智能的魅力。
2.讲解细致,通俗易懂。书中不会基于学理去探索各种AI技术的内容,没有任何数学公式的解说,不过分关注与分析各种神经网络和深度学习框架,只要跟着一步步实践起来,就能从中有所收获。
3.配套资源丰富,赠送教学视频、所有程序源代码、开发软件工具包等,方便读者学习与练习。
本书选取当下大热的AIoT(人工智能物联网)为应用场景,以NVIDIA Jetson Nano为硬件平台,系统介绍了人工智能的开发知识,重点讲解了人工智能中边缘计算技术的应用。首先介绍了NVIDIA Jetson Nano开发平台和开发环境的配置,然后通过具体的案例介绍了人工智能边缘计算在物体检测、深度学习等领域的应用。
本书适合人工智能初学者、嵌入式开发技术人员、对人工智能技术感兴趣的青少年及创客教师自学使用,同时也可用作高等院校人工智能相关专业的教材及参考书。
第1章 初识边缘AI计算 001
1.1 人工智能驱动的边缘计算 002
1.2 适配深度神经网络的众核架构 003
1.3 选择合适的人工智能学习平台 006
1.4 英伟达的“高效/易用/兼容”开发生态 009
1.5 学习边缘AI计算从Jetson上手 012
1.6 Jetson的AIoT成功案例与配套资源 015
1.7 本章小结 017
第2章 为Jetson设备安装开发环境 019
2.1 Jetpack提供完整的AIoT开发资源 019
2.2 用Jetpack安装Jetson设备 022
2.3 首次启动Jetson设备 026
2.4 远程控制Jetson设备 027
2.5 检查系统状态的基础指令 031
2.6 监控与调试Jetson设备的性能 032
2.7 配套的辅助工具 034
2.8 本章小结 036
第3章 体验Jetpack开发环境 037
3.1 CUDA并行计算的加速性能 037
3.1.1 编译CUDA samples 038
3.1.2 nbody(粒子碰撞模拟) 038
3.1.3 oceanFFT(海洋波动模拟) 040
3.1.4 smokeParticles(烟雾粒子光影模拟) 041
3.2 高阶计算机视觉开发工具包 041
3.2.1 VisionWorks工具包与范例 042
3.2.2 VPI简介 047
3.2.3 VPI简易Python范例 050
3.3 摄像头的选择与调用 053
3.3.1 GStreamer流媒体框架 054
3.3.2 V4L2 应用库 055
3.3.3 libargus 应用库 056
3.4 检测摄像头 057
3.4.1 用v4l2-ctl检测摄像头参数 057
3.4.2 用NvGstCapture启动摄像头 059
3.4.3 用gst-launch启动摄像头 060
3.5 好用的OpenCV计算机视觉库 061
3.5.1 通过UVC调用USB摄像头 062
3.5.2 通过GStreamer调用CSI摄像头 063
3.5.3 体验三种计算机视觉算法 064
3.5.4 简易的人脸定位应用 066
3.5.5 简易的眼睛定位应用 067
3.6 本章小结 068
第4章 深度学习之推理识别 070
4.1 智能视觉类三大基础应用 071
4.1.1 图像分类(image classif?ication) 071
4.1.2 物体检测(object detection) 073
4.1.3 语义分割(semantic segmentation) 074
4.2 进入Hello AI World 076
4.2.1 完整的深度神经网络(DNN)视觉库 076
4.2.2 主要功能模块 078
4.2.3 安装Hello AI World项目 079
4.3 立即体验深度学习推理效果 081
4.3.1 总体参数选项说明 082
4.3.2 imagenet成批图像的分类检测 084
4.3.3 imagenet的参数说明 086
4.3.4 detectnet物体检测指令 088
4.3.5 其他深度学习推理应用 091
4.4 用Python开发自己的深度学习推理应用 094
4.4.1 10行代码的物体识别应用 094
4.4.2 获取推理检测的信息 095
4.4.3 添加参数解析功能,扩大适用范围 097
4.5 jetson.utils视觉处理工具 100
4.5.1 videoSource()负责全部输入源处理 101
4.5.2 videoOutput() 负责全部输出处理 104
4.5.3 简单的输入/输出范例 105
4.5.4 RTP/RTSP视频流转向应用 106
4.6 本章小结 109
第5章 深度学习之模型训练 110
5.1 调试Jetson的模型训练环境 111
5.2 图像分类的模型训练 113
5.2.1 整理图像分类的数据 113
5.2.2 用train.py执行训练模型 114
5.2.3 用训练好的模型执行推理识别 117
5.2.4 从ImageNet获取图像 119
5.3 目标检测的模型训练 122
5.3.1 从Open Images获取目标检测数据 123
5.3.2 train_ssd.py参数说明 126
5.3.3 执行目标检测的模型训练 128
5.3.4 模型训练的参数与时间比较 131
5.3.5 转成ONNX格式进行推理识别测试 131
5.4 更丰富的数据集资源 134
5.4.1 VOC目录结构与标注格式 134
5.4.2 从VOC数据集提取所需要的类别 136
5.4.3 从COCO数据集抽离类别并转成VOC格式 138
5.4.4 从ImageNet数据集抽离类别并转成VOC格式 140
5.4.5 汇总多种数据集来源进行模型训练 140
5.5 对自己收集的数据进行标注 141
5.5.1 手动收集图像数据 141
5.5.2 图像标注工具 142
5.5.3 标注过程需要注意的重点 144
5.6 本章小结 146
第6章 在Jetson上执行YOLO算法 147
6.1 YOLO神经网络简史与算法演进 147
6.2 搭配YOLO算法的Darknet框架 150
6.2.1 安装Darknet框架 150
6.2.2 Darknet使用说明 152
6.2.3 执行YOLO目标检测的推理计算 154
6.3 用Darknet训练YOLO口罩识别模型 157
6.3.1 在Jetson使用YOLOv4-Tiny训练模型 158
6.3.2 整理数据集与格式转换 159
6.3.3 修改YOLOv4-Tiny网络结构文件 161
6.3.4 执行训练模型的步骤 163
6.3.5 检测口罩识别模型的效果与性能 165
6.4 调用Darknet的Python接口提取识别内容 168
6.4.1 darknet_video.py的使用方法 168
6.4.2 修改darknet_images.py获取所识别物体的信息 170
6.4.3 用darknet_video.py获取识别物件信息 172
6.5 本章小结 173
第7章 上手DeepStream智能分析工具 175
7.1 基于GStreamer框架的DeepStream 177
7.1.1 GStreamer框架简介 177
7.1.2 GStreamer通道结构的组件与衬垫 179
7.1.3 GStreamer箱柜的管理机制 180
7.2 DeepStream的运作体系 183
7.2.1 DeepStream的功能组件 183
7.2.2 DeepStream的数据流 186
7.2.3 DeepStream组件与硬件引擎之对应 189
7.3 执行DeepStream经典范例 191
7.3.1 安装DeepStream 开发套件 191
7.3.2 deepstream-app范例简介 193
7.3.3 deepstream-app配置文件与相关资源 194
7.3.4 开始deepstream-app实验 197
7.4 深入deepstream-app配置文件设置组 200
7.4.1 系统类设置组 201
7.4.2 输入源设置组 202
7.4.3 预处理设置组 205
7.4.4 智能计算设置组 206
7.4.5 信息汇总之视觉显示设置组 209
7.4.6 信息汇总之IoT传送设置组 211
7.5 deepstream-app更多应用 213
7.5.1 添加多个输入源 214
7.5.2 调整显示输出的细节 216
7.5.3 目标跟踪功能 217
7.5.4 多神经网络的组合识别 219
7.6 本章小结 221
第8章 开发DeepStream应用 223
8.1 开始DeepStream的Python应用 223
8.1.1 配置DeepStream的Python开发环境 224
8.1.2 从deepstream-test1上手 226
8.1.3 创建DeepStream应用的7步骤 228
8.2 DeepStream的输入与输出 230
8.2.1 添加USB摄像头 231
8.2.2 添加多路多类型输入源功能 233
8.2.3 动态增减数据源 235
8.2.4 添加RTSP视频流输出 236
8.3 DeepStream的智能计算插件 240
8.3.1 nvinfer推理插件的角色与工作原理 240
8.3.2 nvinfer控制参数与配置文件 242
8.3.3 nvtracker目标跟踪算法 246
8.3.4 nvtracker控制参数与配置文件 248
8.4 DeepStream的智能范例说明 249
8.4.1 deepstream-test2多神经网络组合识别 249
8.4.2 导入自定义YOLO神经网络插件 251
8.4.3 视频动态遮蔽私密信息 254
8.4.4 中文车牌号识别 257
8.4.5 善用NGC丰富的预训练模型资源 262
8.5 DeepStream的统计分析插件 263
8.5.1 nvdsanalytics插件工作流与元数据 264
8.5.2 nvdsanalytics的配置文件 266
8.5.3 执行deepstream-nvdsanalytics范例 267
8.6 性能优化基本原则 270
8.7 本章小结 271
第9章 Jetbot智能车学习系统 273
9.1 安装Jetbot操作环境 274
9.1.1 用镜像文件烧录 275
9.1.2 在Jetson用脚本安装 275
9.1.3 下载容器镜像安装(推荐) 277
9.1.4 检测环境:登录Jupyter操作界面 277
9.2 安装无线网与配置Wi-Fi连线 278
9.2.1 安装无线网卡 278
9.2.2 为Jetbot配置独立的无线连接方式 280
9.2.3 将Jetbot无线网卡设置为热点 280
9.2.4 将控制台PC无线网卡设置为热点 282
9.2.5 通过便携无线路由器协助 283
9.3 组装Jetbot智能车所需要注意的细节 284
9.3.1 非标准件的注意细节 285
9.3.2 OLED显示屏的选型与处理 287
9.3.3 TT电机的选购与测试 288
9.4 跑动Jetbot 289
9.4.1 基本运动(basic_motion) 290
9.4.2 游戏摇杆控制(teleoperation) 293
9.5 避撞功能 295
9.5.1 Jetbot环境识别原理 295
9.5.2 现场演示(live_demo) 297
9.5.3 数据采集 302
9.5.4 模型训练 304
9.6 剖析Jetson的40针引脚 304
9.6.1 分清楚GPIO与SFIO的不同 306
9.6.2 jetson-io引脚配置工具 308
9.6.3 Jetson.GPIO应用开发库 309
9.7 浅谈I2C总线与周边设备 311
9.7.1 I2C总线的特性 311
9.7.2 i2c-tools总线检测工具 312
9.7.3 Jetbot控制OLED显示屏的代码 314
9.7.4 Jetbot的控制元件与代码 315
9.8 本章小结 317
人工智能是一种计算的技术,必须依附在可执行人工智能计算的设备上,才能成为可落地的应用,而“边缘智能设备”是最具有发展前景的搭配载体,其也成为近年来最被看好的产品,于是“在边缘智能设备上开发人工智能应用”就成为最具有商业价值的新蓝海,掌握这方面的技能就能为自己创造大好的前景。
绝大部分人的困扰点在于“缺乏足够的人工智能知识,能开发智能应用吗?”
好消息是,只要找到提供完整开发生态的设备,即便是不具备人工智能技术的人,跟着本书的内容扎扎实实地操作,也有机会在两周内独立完成(如下图)性能优异的智能视频分析应用,能在所设定的区域内、跨越线内,实时统计行人、车辆的数量与行走、行驶的方向,这是一个实用价值很高的商业应用。
本书面向应用开发人员,即专注于使用场景与流程管理的工程师,对他们来说找到一种具备完整开发生态的设备至关重要,即便不了解人工智能、深度学习、神经网络这些烦琐的理论知识,也不熟悉TensorFlow、PyTorch这些框架,依旧可以轻松自如地开发出性能优异的人工智能应用,这是本书的重点。
目前在所有具备智能计算的众核(many cores)架构设备中,英伟达(NVIDIA)基于CUDA(统一计算设备架构)的开发生态是最完整的,并具备“高效/易用/兼容”三大特性,只要具备基本的计算机知识与Python编程技巧,然后跟着本书的节奏就能轻松开发出视觉类的人工智能应用,正常情况下大约能在两周内完成上图所示的高级智能视频分析应用。
本书使用英伟达Jetson系列AIoT(人工智能物联网)边缘计算设备作为学习平台,并且以性能最弱的Jetson Nano 2GB进行示范,所有内容均适用于Jetson全系列AIoT设备,包括国内很多第三方厂商所生产的设备,主要有以下3个用意。
① 低成本:包括设备的成本与配置开发环境的时间成本。
② 适用性广:体积紧凑并提供丰富的周边接口,能满足更多使用场景。
③ 商业价值大:具备根据环境因素自主决策动作的能力,能应用于飞行(无人机)、陆行(无人车)、机械手臂(机器人)等高商业价值的领域。
为了帮助读者按部就班地掌握AIoT的开发资源,本书内容分为4部分9章,主要内容如下。
(1)基础开发资源
第1章 说明深度学习的深度神经网络与众核架构的关系;
第2章 用Jetpack为Jetson设备一步到位地安装完整的开发环境;
第3章 在Jetpack开发环境中,调用各种摄像头与计算机视觉工具实现人脸、眼睛定位。
(2)深度学习入门
第4章 基于英伟达“Hello AI World”项目快速实现高性能的深度学习推理应用;
第5章 基于英伟达“Hello AI World”项目简单训练自己的深度学习模型;
第6章 在Jetson中用YOLO算法与Darknet框架,训练自己的“口罩识别”模型。
(3)智能应用开发
第7章 用deepstream-app工具配合设置文件,开发简单的视觉类智能分析应用;
第8章 用Python语言基于DeepStream套件,开发自主的视觉类智能分析应用。
(4)智能小车应用
第9章 用Jetson Nano搭建Jetbot无人车模拟系统(需要额外配件)。
科学存在知难行易的法则,最好的学习方式就是以“使用场景”作为起点,然后观察解决这个问题需要使用哪些技术,再有针对性地找到可用的技术资源,加以应用即可,这是最实际的学习流程。毕竟人工智能的发展已经超过70年,涵盖几乎整个信息领域高深的知识与技术。
读者只需要一台英伟达Jetson系列的AIoT设备,就能在两周内轻松学会前3部分(第1~8章)的内容,并且掌握深度学习的模型训练与推理识别两大板块的技术。即便读者从未学过任何神经网络的算法,不熟悉TensorFlow、PyTorch这些复杂的机器学习框架,也不会对阅读本书形成障碍。
最后的智能小车部分是很有价值的延伸应用,不过需要额外的车架、电机、控制板、供电设备的配合。提供了全部完整的执行脚本,对用户实现了零代码。用户只要组装好车体,就能非常轻松地操控无人车进行模拟任务。
通过这样的内容安排,能让读者在最短的时间内,轻松地学会开发具有实用价值的AIoT人工智能应用,快速跻身人工智能应用开发的技术人员行列。
编著者
评论
还没有评论。