猜你喜欢
深度学习嵌入式应用开发:基于RK3399Pro和RK3588

深度学习嵌入式应用开发:基于RK3399Pro和RK3588

书籍作者:王曰海 ISBN:9787111715757
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:3316
创建日期:2023-06-01 发布日期:2023-06-01
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

这是一本讲解如何基于当前主流的智能芯片RK3399Pro与RK3588进行端侧智能开发的著作,它将指导读者如何基于这两款芯片进行算法的设计与实施,瑞芯微官方推荐。
理论部分,以深度学习为主线,针对零基础的读者,不仅讲解了卷积神经网络、循环神经网络等深度神经网络的原理以及它们在计算机视觉、自然语言处理、语音识别等领域的经典算法,还讲解了深度神经网络的训练和模型优化。
实践部分,以基于RK3399Pro与RK3588两款智能芯片的端侧智能开发为主线,讲解了芯片的功能架构、开发板及其开发环境、Rock-X API组件库,以及基于它们的各种端侧智能应用开发,包括各种神经网络的开发、神经网络的运算加速等,让读者掌握深度学习模型从设计、训练、优化到端侧部署的完整流程,快速学会人工智能应用的开发。

编辑推荐
适读人群 :本书的读者对象包括深度学习的初学者以及从事人工智能的开发者。本书的内容包括深度学习基本原理和基于RK3399Pro与RK3588的深度学习实践,包含深度学习的理论知识和丰富的开

前言
近年来,人工智能如火如荼地发展,并在计算机视觉、自然语言处理等诸多应用领域取得显著成果。人工智能的发展依赖于深度学习算法、高质量大数据和高性能计算三大要素。在初始阶段,人工智能的开发和应用主要集中在云端,通常通过服务器进行算法部署。但是云侧智能存在数据安全、隐私保护等问题,服务器部署在实际应用场景中也存在成本高、便捷性差等缺点。同时,随着越来越多的开发者从事人工智能开发,构建更低成本、更便捷、更开放的人工智能开发平台和生态变得十分迫切。
因此,人们开始研究和探索能否将人工智能算法与应用部署在终端。但是终端CPU的算力和功耗指标通常无法满足人工智能应用的需求。随着人工智能芯片的研发成功,搭载人工智能芯片的嵌入式神经网络处理器(NPU)能够以低功耗进行高速运算,于是端侧智能得以迅速发展并形成一个繁荣的应用生态。端侧智能将人工智能算法和应用部署在手机、嵌入式设备等端侧设备上。相比云侧智能,使用NPU来进行人工智能运算具有更好地保护数据隐私、更低时延、便于部署、节省计算资源等优势。对于开发者来讲,端侧智能更加易于上手,成本更低,因此越来越多的开发者加入端侧智能开发队伍并合力构建其生态。英特尔、苹果等公司纷纷在端侧智能设备上发力,国内也涌现出诸如华为昇腾、瑞芯微RK3399Pro及RK3588等优秀的端侧人工智能芯片。
优秀的端侧人工智能设备,除了需要有具备强大算力的NPU外,还需要能够支持主流的深度学习框架,拥有功能丰富的开发工具和丰富的开发案例。我在科研、教学与生产中了解和使用了瑞芯微推出的高性能人工智能开发板TB-RK3399Pro和TB-RK3588X,这两个开发板集软硬件开发于一体:在硬件方面拥有同类芯片领先的、具备强大算力的NPU,同时集成了CPU、GPU、VPU、RGA等单元;在软件方面支持Caffe、TensorFlow、PyTorch等深度学习框架,同时拥有RKNN-Toolkit开发工具,支持模型转换、模型量化、算子开发、模型可视化等功能,还拥有丰富的人工智能教学案例和开源社区。
在RK3399Pro的发展和使用过程中,社区积累了丰富的案例和资源,因此我萌生了基于RK3399Pro介绍深度学习和端侧人工智能开发的想法。我注意到:市面上的深度学习图书大多侧重于介绍基本概念和原理,缺少实践和案例;而介绍端侧人工智能开发平台的图书大多类似于用户手册或实验手册,往往只告诉用户如何操作,缺乏对背后原理的讲解。因此我想结合深度学习的基本原理,基于RK3399Pro的深度学习实践,将理论和实践结合起来,写一本集算法知识、趣味性和实践于一体的图书,让深度学习的入门者、RK3399Pro的开发者深入地了解深度学习和端侧人工智能。
目录

前言
第1章 深度学习基础 1
1.1 深度学习的现实应用 2
1.1.1 计算机视觉 2
1.1.2 自然语言处理 2
1.1.3 推荐系统 3
1.1.4 语音处理 3
1.1.5 其他领域 3
1.2 回归问题和分类问题 4
1.2.1 线性回归 5
1.2.2 Softmax分类 6
1.3 梯度下降算法 8
1.3.1 优化算法概述 8
1.3.2 随机梯度下降算法 10
1.3.3 小批量梯度下降算法 13
1.3.4 Momentum梯度下降
算法 14
1.3.5 Adam优化算法 15
1.4 神经网络 16
1.4.1 神经网络的表示 16
1.4.2 激活函数及其导数 19
1.4.3 前向传播和反向传播 23
1.4.4 神经网络的梯度下降 26
1.5 本章小结 27
第2章 卷积神经网络 28
2.1 卷积基础知识 28
2.1.1 卷积操作 29
2.1.2 池化 33
2.1.3 卷积的变种 34
2.2 深度卷积神经网络 37
2.2.1 卷积神经网络的整体
结构 37
2.2.2 残差结构和1×1卷积 38
2.2.3 经典卷积网络 41
2.3 卷积神经网络的应用 44
2.3.1 图像分类 44
2.3.2 目标检测 45
2.3.3 其他应用 49
2.4 本章小结 49
第3章 循环神经网络 50
3.1 深度循环神经网络 50
3.1.1 循环神经网络概述 51
3.1.2 基于时间的反向传播 52
3.1.3 循环神经网络的长期依赖
问题 54
3.2 循环神经网络变体 55
3.2.1 长短时记忆网络 55
3.2.2 门控循环神经网络 60
3.3 序列模型和注意力机制 61
3.3.1 Seq2Seq序列模型 62
3.3.2 注意力机制 64
3.3.3 Transformer结构 69
3.4 循环神经网络的应用 74
3.4.1 自然语言处理 74
3.4.2 语音识别 84
3.4.3 唤醒词检测 87
3.5 本章小结 88
第4章 深度神经网络的训练 90
4.1 深度学习的学习策略 90
4.1.1 数据集划分和评估指标 90
4.1.2 偏差、方差和误差 94
4.1.3 神经网络的权重初始化 95
4.2 深度学习的训练技巧 96
4.2.1 梯度消失和梯度爆炸 96
4.2.2 正则化和随机失活 97
4.2.3 归一化 99
4.2.4 自适应学习率 100
4.2.5 超参数优化 101
4.3 改善模型表现 102
4.3.1 解决数据不匹配问题 102
4.3.2 迁移学习 103
4.4 动手训练神经网络 104
4.4.1 Jupyter Notebook的
使用 104
4.4.2 训练MNIST手写数字识别模型 106
4.4.3 TensorBoard的使用 112
4.5 本章小结 115
第5章 RK3399Pro芯片功能与
架构 116
5.1 RK3399Pro芯片的整体架构 116
5.2 神经网络处理单元 121
5.2.1 神经网络处理单元的
4个模块 122
5.2.2 RKNN-Toolkit开发
套件 123
5.2.3 RKNN-API开发套件 126
5.3 视频处理单元 126
5.4 图形处理加速单元 128
5.5 本章小结 128
第6章 TB-RK3399Pro开发板 130
6.1 开发板硬件环境介绍 130
6.1.1 硬件总览 130
6.1.2 硬件规格 131
6.2 开发板开发环境搭建 134
6.2.1 开发板的启动和网络
配置 134
6.2.2 终端与软件包安装 138
6.3 本章小结 144
第7章 基于TB-RK3399Pro进行卷积神经网络实战 145
7.1 TB-RK3399Pro图像采集 145
7.1.1 原理 145
7.1.2 实战 146
7.2 TB-RK3399Pro手写数字
识别 147
7.2.1 原理 147
7.2.2 实战 150
7.3 TB-RK3399Pro YOLO目标
检测 152
7.3.1 原理 153
7.3.2 实战 154
7.4 TB-RK3399Pro人脸识别 156
7.4.1 原理 156
7.4.2 实战 162
7.5 本章小结 163
第8章 TB-RK3399Pro神经网络
运算加速 165
8.1 神经网络运算加速引擎介绍 165
8.2 神经网络模型部署和推理 166
8.2.1 模型部署 167
8.2.2 模型推理 169
8.3 神经网络模型量化 170
8.4 本章小结 173
第9章 基于TB-RK3399Pro开发板进行循环神经网络实战 174
9.1 TB-RK3399Pro开发板声音
采集 174
9.1.1 必备环境安装 174
9.1.2 声音采集 175
9.2 语音识别模型介绍 176
9.2.1 特征提取 177
9.2.2 语音识别网络 180
9.2.3 评价指标 182
9.3 TB-RK3399Pro语音识别
实战 182
9.3.1 实战目的 182
9.3.2 实战数据 182
9.3.3 实战环境 183
9.3.4 实战步骤 183
9.3.5 实战结果 187
9.4 本章小结 188
第10章 基于Rock-X API的深度
学习案例 189
10.1 Rock-X SDK介绍 189
10.2 Rock-X环境部署 190
10.3 目标检测 190
10.4 车牌识别