首页>参考读物>计算机科学与技术>软件与程序设计

移动平台深度神经网络实战:原理、架构与优化
作者 : 卢誉声 著
出版日期 : 2019-11-13
ISBN : 978-7-111-64100-1
定价 : 129.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 496
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

整体思路是:
1、最初介绍深度学习必备的知识点,做好基础知识铺垫
2、讲解数据收集、清洗和预处理过程
3、讲解深度学习训练
4、移动端实践:性能优化、指令集优化、移动端预测框架开发(基于caffe2、mxnet或ncnn,还未定),开发App使用预测。

图书特色

业界专家联袂推荐,资深专家手把手教你开发移动平台人工智能系统解决方案
精讲移动平台深度学习系统所需核心算法、硬件级指令集、系统设计与编程实战、海量数据处理、业界流行框架裁剪与产品级性能优化策略等

图书前言

为什么要写这本书
机器学习、云计算与移动技术的兴起为计算机科学领域注入了前所未有的活力,而海量数据时代的来临更是为机器学习技术带来了新的发展契机。我们可以看到,越来越多的企业和研发机构开始在自己的产品当中加入机器智能,曾经仅仅是为了锦上添花而使用的机器学习应用,如今摇身一变,成了现代软件产品或服务的核心竞争力。通过机器学习技术,软件或服务的功能和体验得到了质的提升。比如,我们甚至可以通过启发式引擎智能地预测并调节云计算分布式系统的节点压力,以此改善服务的弹性和稳定性,这是多么美妙。而对移动平台来说,越来越多的移动终端、边缘计算设备和App开始引入人工智能技术,而且对预测实时性要求高的环境也越来越依赖于离线实时机器学习,另外移动技术的普及也让边缘计算支持机器智能成为可能。
然而,开发成熟完善的机器学习系统并不简单。不同于传统计算机软件系统开发,研发机器学习系统不仅需要掌握扎实的软件开发技术、算法原理,还需要掌握纷繁复杂的数据处理原理和实践方法。此外,机器学习系统的实际载体多种多样。一个典型的机器学习系统可以是运行在云计算平台(比如Amazon AWS)之上的实例,通过API调用的方式提供预测服务。另一种情况是,集中式提供机器学习服务固然不错,但离线机器学习计算是一项重大补充。在对实时性要求极为苛刻的生产环境中,实时的本地机器学习预测技术就显得尤为关键,如何在确保准确率的前提下,提升整体计算效率、降低系统功耗成为需要攻克的难题。在移动技术、边缘计算等技术突飞猛进的当下,研发高可靠、高效率以及低功耗的移动平台机器学习系统拥有广阔的发展愿景和市场,这既为我们创造了新的机遇,也使研发面临巨大的挑战。这是笔者撰写本书的原动力。本书着眼于移动平台之上的深度神经网络系统的研发和实战,从理论开始,抽丝剥茧地阐述、归纳和总结研发高性能计算系统的各个方面,同时辅以实战,带领读者一起掌握实际的工程落地方法。
未来已至,我们需要做好准备!
本书特色
本书是一本由浅入深详细讲解研发高性能移动平台深度学习系统的编程实战书。本书从基础机器学习知识开始讲起,涵盖设计和使用高性能分布式实时处理系统,移动平台编程,前向引擎优化和裁剪,实际的代码编写,最终实现一整套针对移动领域开发的完整机器学习解决方案。在本书中,我们将介绍一套以C++编写的高性能分布式实时处理系统Hurricane及其使用方法,供数据收集和预处理使用。在此基础上,我们会深入剖析机器学习原理和深度神经网络概念,而概念讲解伴随而来的是编程实战,本书主要使用Python来讲解基础算法,验证设想。
另外,本书采用循序渐进的方式讲解理论知识,从基础知识入手到艰涩的优化算法。相比于C/C++,Python是一门易于上手并实验友好的胶水语言,因此在讲解各类概念与算法时,我们会使用Python来验证设想。从神经网络和深度学习篇章开始,为了给工程开发学习打下坚实的基础,本书除了使用Python代码验证设想外,还使用C/C++来实现产品级的代码。
由于本书的主题是讲解如何开发实现高性能的移动平台深度学习系统,因此会花费大量篇幅讲解各种旨在提升算法速度和减小模型的小的算法与技术手段,从轻量级网络等算法模型层面改良到Neon指令集应用、权重稀疏化、半精度、权重量化等优化算法与技术实现,最终完成适用于移动平台的深度学习引擎性能增强与模型裁剪。为了完成完整的深度学习系统,我们除了要掌握基本原理外还需要掌握各类实现应用所需的工程技术。例如,在第三篇讲解与完成整个系统相关的所有技术时,还介绍了如何爬取训练用的图像数据、清理训练数据、编写训练代码等内容,并以TensorFlow Lite为例,讲解移动平台深度学习引擎框架的搭建方法,卷积层、池化层和全连接层实现与iOS(包括iPadOS)、Android等平台的互操作实现与封装方案,最终完成可以在iOS与Android上实际运行的深度学习系统。
期待读者能从本书中学到新的知识,以便对深度学习与移动平台系统开发有更加深入的认识,了解如何构建一个高性能移动平台深度学习系统。
如何阅读本书
本书从最基本的机器学习基础概念和原理开始,逐步引入研发高性能移动平台机器学习系统所需要的方方面面,抽丝剥茧地把有关机器学习和框架的问题娓娓道来。
第一篇为深度学习基础,包含第1~4章。
第1章 介绍机器学习的一些基本概念、学习方法和开发机器学习系统所需的重要知识点,由此引出开发移动平台机器学习系统的主题,带领读者进入移动平台机器学习实战领域。
第2章 进一步介绍机器学习方法、原理和算法,为理解人工神经网络打下基础。
第3章 介绍人工神经网络、基于无监督学习的稀疏自编码器以及相应的数据预处理实战。
第4章 介绍深度网络和卷积神经网络的概念以及相应的编程实战,作为移动平台实现算法的基石。
第二篇为移动平台深度学习基础,包含第5~6章。
第5章 介绍移动平台深度学习开发基础,聚焦于ARM指令集加速技术。
第6章 介绍移动平台轻量级网络的实现原理和编程实战。
第三篇为深入理解深度学习,包含第7~8章。
第7章 介绍数据预处理原理、方法,及基于高性能实时处理系统开发的PCA产品级数据预处理解决方案。
第8章 介绍模式识别和物体识别的基本概念以及经典算法,并通过深度神经网络编程实战实现AlexNet、Faster R-CNN和Retina Net。本书最后实现的移动平台示例主要是图像分类,因此本章的作用是先介绍一下前导知识。
第四篇为深入理解移动平台深度学习,包含第9~12章。
第9章 深入介绍移动平台性能优化主题,在移动平台对深度网络的速度进行优化,使移动平台系统能够高速低功耗使用模型的具体策略和方法。
第10章 介绍采集、训练数据的方法和编程实战,并通过TensorFlow完成训练与测试,最后完成整个数据采集和训练平台,为开发移动平台图像分类系统建立基础。
第11章 介绍了TensorFlow Lite的代码体系、构建原理、集成方法以及核心代码与裁剪分析,并介绍模型处理工具,完成移动平台系统集成。
第12章 介绍流行的移动平台机器学习框架和接口并辅以实战,最后总结并展望未来。
阅读前提
本书采用Ubuntu、Debian以及Windows操作系统作为基本的开发环境。此外,本书不会介绍基础的编程概念和理论。我们假定读者在阅读本书之前已经具备基本的编程技术以及一定的Python、C/C++编程经验(最后一章还需要一些Swift和Java的基本语法知识)。除此之外,数据对深度学习来说至关重要,读者还应该具备基本的实时数据处理方法和实践经验。建议读者先阅读《Python程序设计》和《C++编程思想》以了解编程的基本概念,然后阅读《高级C/C++编译技术》和《分布式实时处理系统:原理、架构与实现》来进行提高。
本书排版约定
在本书中,读者会发现针对不同信息类型的文本样式。下面是这些样式的示例和解释。
所有命令行输入和输出如下所示:
mkdir mobile-ml-learning
cd mobile-ml-learning
代码清单通常以以下格式展现:

2 #include
3
4 int main()
5 {
6 std::cout <<

上架指导

计算机/人工智能/机器学习

封底文字

誉声和我结缘甚早,是一位很严谨的工程师;本书初稿曾经让我先览,此书技术深入,我也从书中学习了一些崭新技术。我身居中国台湾,非常惊喜大陆科技出版的蓬勃和百花齐放。我们需要各式各样的书籍,需要各个专精领域的朋友分享他们的精华知识,这是读者的大福气。
—— 侯捷,著名C++技术专家
这本书全面介绍了移动平台神经网络实战的相关知识,书中既介绍了主要算法原理和模型,又介绍了相关的工程实践。在介绍了TensorFlow Lite、ARM指令集等相关知识后,本书进一步介绍了针对移动设备的模型优化,同时覆盖了NN API、Core ML两大移动平台的机器学习框架知识。
—— 顾仁民,谷歌资深软件工程师
这是第一本系统介绍深度学习模型在移动端部署的中文书籍,本书从算法和ARM硬件上的实现两个方面介绍了提高移动端部署深度学习模型性能的多种方法,并且给出了许多实用的参考用例,同时介绍了业界常用的多种移动端深度学习部署平台使用方法,是一本非常适合初学者的实用深度学习入门书籍。
—— 刘文志(风辰),华为高级技术专家
人工智能的爆发得益于硬件、软件与应用技术的进步,而向端侧迁移是人工智能发展的最新趋势,未来数以千亿、万亿计的移动硬件的嵌入式、智能化将成为主流。本书的出现恰逢其时,它主要讲解如何基于典型的ARM硬件平台开发实现高性能的深度学习系统,并针对V8体系架构裁剪实现一个适用于移动平台的深度学习框架,是一本非常实用的嵌入式人工智能开发图书。
—— 陈炜,ARM中国教育生态部总监

作者简介

卢誉声 著:暂无简介

图书目录

序一
序二
前言
第一篇 深度学习基础
第1章 向未来问好 2
1.1 机器学习即正义 2
1.1.1 照本宣科 3
1.1.2 关键概念概述 4
1.1.3 数学之美 5
1.2 机器学习的场景和任务 6
1.3 机器学习算法 8
1.3.1 分类算法 8
1.3.2 回归算法 8
1.3.3 聚类算法 8
1.3.4 关联分析算法 9
1.3.5 集成算法 9
1.3.6 强化算法 10
1.4 如何掌握机器学习 10
1.4.1 学习曲线 10
1.4.2 技术栈 11
1.5 深度学习 12
1.5.1 深度学习的贡献 12
1.5.2 深度学习框架简介 13
1.5.3 安装使用深度学习框架 16
1.5.4 深度学习进展 22
1.6 走进移动世界的深度学习 25
1.6.1 移动平台机器学习概述 25
1.6.2 难度和挑战 26
1.7 本书框架 26
1.8 本章小结 27
第2章 机器学习基础 28
2.1 机器学习的主要任务 28
2.2 贝叶斯模型 29
2.3 Logistic回归 33
2.3.1 线性回归 33
2.3.2 几率与Logit 35
2.3.3 Logistic回归 38
2.3.4 背景溯源 39
2.3.5 实现Logistic回归 42
2.4 本章小结 44
第3章 人工神经网络 45
3.1 人工神经网络简介 45
3.2 基本结构与前向传播 46
3.2.1 神经元 46
3.2.2 连接与网络 47
3.2.3 神经网络向量化 48
3.2.4 前向传播 50
3.3 反向传播算法 50
3.4 实现前向神经网络 53
3.4.1 神经网络与前向传播实现 53
3.4.2 Softmax回归 60
3.5 稀疏自编码器 61
3.5.1 引子 61
3.5.2 自编码器简介 61
3.5.3 稀疏自编码算法 63
3.6 神经网络数据预处理 64
3.6.1 去均值 64
3.6.2 归一化 65
3.7 本章小结 65
第4章 深度网络与卷积神经网络 66
4.1 深度网络 66
4.1.1 自我学习 66
4.1.2 特征学习 67
4.1.3 深度神经网络 68
4.1.4 逐层贪婪训练方法 69
4.2 卷积神经网络 70
4.2.1 全连接与部分连接网络 70
4.2.2 卷积 70
4.2.3 池化 72
4.2.4 卷积神经网络 73
4.3 卷积神经网络实现 73
4.3.1 Layer实现 74
4.3.2 Net实现 79
4.3.3 InnerProduct实现 92
4.3.4 Convolution实现 95
4.3.5 Pooling实现 101
4.3.6 定义注册头文件 109
4.4 本章小结 110
第二篇 移动平台深度学习基础
第5章 移动平台深度学习框架设计与实现 112
5.1 移动平台深度学习系统开发简介 112
5.2 ARM Linux基础开发环境 113
5.2.1 通用ARM工具链安装 114
5.2.2 Android NDK安装 114
5.2.3 树莓派工具链安装 115
5.3 TensorFlow Lite介绍 115
5.3.1 TensorFlow Lite特性 115
5.3.2 TensorFlow Lite架构 116
5.3.3 TensorFlow Lite代码结构 117
5.4 移动平台性能优化基础 118
5.4.1 ARM v8体系结构 119
5.4.2 ARM v8数据类型与寄存器 120
5.4.3 Neon指令集介绍 122
5.4.4 ARM v8内存模型 124
5.4.5 Neon指令集加速实例 127
5.5 本章小结 140
第6章 移动平台轻量级网络实战 141
6.1 适用于移动平台的轻量级网络 141
6.2 SqueezeNet 142
6.2.1 微观结构 142
6.2.2 宏观结构 142
6.2.3 核心思路 143
6.2.4 实战:用PyTorch实现SqueezeNet 144
6.3 MobileNet 153
6.4 ShuffleNet 154
6.5 MobileNet V2 155
6.5.1 MobileNet的缺陷 155
6.5.2 MobileNet V2的改进 155
6.5.3 网络结构 156
6.5.4 实战:用PyTorch实现MobileNet V2 157
6.6 本章小结 161
第三篇 深入理解深度学习
第7章 高性能数据预处理实战 164
7.1 数据预处理任务 164
7.1.1 数据清理 165
7.1.2 数据集成 165
7.1.3 数据归约 165
7.1.4 数据变换 166
7.2 数据标准化 166
7.3 PCA 167
7.3.1 PCA的现实问题 167
7.3.2 PCA的计算方法 167
7.3.3 PCA的数学理论基础 169
7.4 在Hurricane之上实现PCA 170
7.4.1 Hurricane实时处理系统 171
7.4.2 实现Hurricane Topology 172
7.4.3 实现PCA 178
7.5 本章小结 192
第8章 基于深度神经网络的物体检测与识别 193
8.1 模式识别与物体识别 193
8.1.1 模式识别 193
8.1.2 模式识别系统 194
8.1.3 传统模式识别方法 194
8.1.4 深度学习模式识别方法 197
8.2 图像分类 197
8.2.1 LeNet 197
8.2.2 AlexNet 200
8.2.3 数据抓取整理 203
8.2.4 数据预处理 204
8.2.5 数据训练 206
8.3 目标识别与物体检测 207
8.3.1 目标识别简介 207
8.3.2 R-CNN 208
8.3.3 SPP-Net 209
8.3.4 Fast R-CNN 211
8.3.5 Faster R-CNN 211
8.3.6 RetinaNet 213
8.4 检测识别实战 213
8.4.1 Faster R-CNN 214
8.4.2 RetinaNet 230
8.5 移动平台检测识别实战 237
8.5.1 移动平台系统开发思路 237
8.5.2 基于RetinaNet的检测定位实现 237
8.5.3 基于AlexNet的识别分类实现 244
8.5.4 接口设计封装 247
8.6 本章小结 258
第四篇 深入理解移动平台深度学习
第9章 深入移动平台性能优化 260
9.1 模型压缩 260
9.2 权重稀疏化 262
9.2.1 Structured Sparsity Learning 262
9.2.2 Dynamic Network Surgery 262
9.2.3 Dynamic Network Surgery实现 264
9.3 模型加速 275
9.3.1 半精度与权重量化 275
9.3.2 深度压缩 276
9.3.3 二值化网络 278
9.3.4 三值化网络 280
9.3.5 DoReFa-Net 282
9.3.6 编程实战 283
9.4 嵌入式优化 287
9.4.1 算法局限与改进 287
9.4.2 理论改进 287
9.4.3 编程实战 288
9.5 嵌入式优化代码实现 290
9.5.1 量化分析实现 290
9.5.2 层实现 302
9.5.3 量化矩阵计算 309
9.6 本章小结 313
第10章 数据采集与模型训练实战 314
10.1 收集海量数据 314
10.1.1 搜索引擎工作原理 315
10.1.2 HTTP会话 316
10.1.3 解决JavaScript渲染问题 316
10.2 图片数据爬虫实现 317
10.2.1 获取任务 318
10.2.2 解析图片 320
10.2.3 图片存储 326
10.2.4 图片去重 327
10.2.5 完成Topology 328
10.3 训练与测试 330
10.3.1 模型定义 330
10.3.2 训练 334
10.3.3 测试 342
10.3.4 封装 344
10.4 本章小结 345
第11章 移动和嵌入式平台引擎与工具实战 346
11.1 TensorFlow Lite构建 346
11.2 集成TensorFlow Lite 357
11.3 核心实现分析 358
11.3.1 解释器代码分析 358
11.3.2 图代码分析 373
11.3.3 操作符注册 381
11.3.4 操作符扩展实现 384
11.3.5 计算与优化模块 399
11.4 模型处理工具 407
11.5 本章小结 425
第12章 移动平台框架与接口实战 426
12.1 Core ML 426
12.1.1 准备数据和生成模型 427
12.1.2 App实战:引入Core ML实现 430
12.2 Android Neural Networks API 437
12.2.1 等等,Google还有一个ML Kit 437
12.2.2 NNAPI编程模型 437
12.2.3 创建网络与计算 439
12.2.4 JNI封装与调用 451
12.2.5 App实战:集成NNAPI 454
12.3 实战:实现Android图像分类器App 459
12.3.1 JNI封装 459
12.3.2 Java调用 474
12.4 未来之路 479
12.5 本章小结 480

教学资源推荐
作者: [美]德洛莉丝 M. 埃特尔(Delores M. Etter) 著
作者: [印度]K.G.斯里尼瓦沙(K.G.Srinivasa) 阿尼尔·库马尔·穆帕拉(Anil Kumar Muppalla) 著
作者: Richard C. Detmer
参考读物推荐
作者: 张路斌 著
作者: 吴茂贵 王冬 李涛 杨本法 著