猜你喜欢
移动平台深度神经网络实战:原理、架构与优化

移动平台深度神经网络实战:原理、架构与优化

书籍作者:卢誉声 ISBN:9787111641001
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:3648
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
下载地址
内容简介

本书精讲移动平台深度学习系统所需核心算法、硬件级指令集、系统设计与编程实战、海量数据处理、业界流行框架裁剪与产品级性能优化策略等,深入、翔实。

深度学习基础(第1~4章),介绍开发机器学习系统所需重要知识点,以及开发移动平台机器学习系统算法基石,诸如人工神经网络、稀疏自编码器、深度网络、卷积神经网络等。

移动平台深度学习基础(第5~6章),介绍移动平台开发环境搭建、移动平台开发基础、ARM指令集加速技术,以及轻量级网络的实现原理与实战。

深入理解深度学习(第7~8章),剖析数据预处理原理与方法,高性能实时处理系统开发,以及基于深度神经网络的物体检测与识别。本篇是下一篇内容的前导与“基石”。

深入理解移动平台深度学习(第9~12章),本篇应用前述章节的框架与技术,实现移动平台深度学习系统的实现与集成,具体涵盖:① 移动平台性能优化,数据采集与训练,为开发移动平台图像分类系统建立基础;② 深入剖析TensorFlow Lite代码体系、构建原理、集成方法以及核心代码与裁剪分析,模型处理工具,并完成移动平台系统集成;③ 结合实战分析主流移动平台机器学习框架、接口,并展望未来。


作者简介

卢誉声

Autodesk数据平台和计算平台资深工程师,负责平台架构研发工作。工作内容涵盖大规模分布式系统的服务器后端、前端以及SDK的设计与研发,在数据处理、实时计算、分布式系统设计与实现、性能调优、高可用性和自动化等方面积累了丰富的经验。擅长C/C++、JavaScript开发,此外对Scala、Java以及移动平台等也有一定研究。著有《移动平台深度神经网络实战:原理、架构与优化》、《分布式实时处理系统:原理架构与实现》,并译有《高级C/C++编译技术》和《JavaScript编程精解(原书第2版)》等。


编辑推荐
适读人群 :1.移动平台应用程序研发人员;2.嵌入式设备软件研发人员;3.大数据/机器学习架构师、研发人员;4.智能系统架构设计与开发工作者;5.高性能计算研发人员;6.高等院校与科研院所师生;

(1)业界专家联袂推荐,资深专家手把手教你开发移动平台人工智能系统;

(2)精讲移动平台深度学习系统所需核心算法、硬件级指令集、系统设计与编程实战、海量数据处理、业界流行框架裁剪与产品级性能优化策略等。

《移动平台深度神经网络实战:原理、架构与优化》电子书免费下载

pdf下载 txt下载 epub下载 mobi下载 azw3下载

前言

为什么要写这本书

机器学习、云计算与移动技术的兴起为计算机科学领域注入了前所未有的活力,而海量数据时代的来临更是为机器学习技术带来了新的发展契机。我们可以看到,越来越多的企业和研发机构开始在自己的产品当中加入机器智能,曾经仅仅是为了锦上添花而使用的机器学习应用,如今摇身一变,成了现代软件产品或服务的核心竞争力。通过机器学习技术,软件或服务的功能和体验得到了质的提升。比如,我们甚至可以通过启发式引擎智能地预测并调节云计算分布式系统的节点压力,以此改善服务的弹性和稳定性,这是多么美妙。而对移动平台来说,越来越多的移动终端、边缘计算设备和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

7

8 return 0;

9 }

在正文当中,我们可能会用以下方式拓展所讲解的内容:

这里是相关提示的文字。

读者对象

本书适合以下读者:

移动平台应用程序研发人员

嵌入式设备软件研发人员

智能系统架构设计与开发工作者。

对于研发人员来说,本书是一本系统学习和掌握深度学习原理及深入剖析移动平台开发机器学习系统的指南。对于架构师来说,本书是一本移动平台机器学习系统架构设计的实战书。读者可以深入理解移动平台机器学习系统的内部构造以及重要组成部分,并自己设计、优化和改进系统的层次。同时,本书适合初学者学习机器学习实战技术,掌握开发机器学习系统当中惯用的编程技巧。

勘误和支持

虽然笔者在编写本书的过程中经过反复审校,全力确保本书内容的准确性,但错误在所难免。书中难免可能会出现一些错误或不准确的描述,恳请读者批评指正。书中所涉及的所有源代码及工程都可以从华章官网(www.hzbook.com)或GitHub(https://github.com/samblg/book-mobile-ml)下载,这些项目都是开源项目。现在我怀着期盼和忐忑的心情,将这本拙作呈献给大家,我渴望得到您的认可,更渴望和您成为朋友,如果您有任何问题和建议,请与我联系(电子邮件:[email protected]),期待能够得到您的真挚反馈。

致谢

在创作本书的过程中,我得到了很多人的帮助,这里必须要一一感谢,聊表寸心(排名不分先后):顾仁民、侯捷、鲁昌华、彭垚、邵良、夏臻新、于俊、彭敏、旷天亮、徐立冰、风辰、陈炜、俞欢、Eddie Ruan、龙俊彤、石莲、徐航、曾玉明、李佳和钱曙光。感谢我在Autodesk的同事和Cisco Systems的朋友。特别是我的良师益友金柳颀,感谢你在技术问题上的严谨精神。还要感谢机械工业出版社的高婧雅编辑对我的信任。

谨以此书献给我最亲爱的家人与朋友,你们是我奋斗路上坚强的后盾。

卢誉声

于上海

目录

序一

序二

前言

第一篇 深度学习基础

第1章 向未来问好 2

1.1 机器学习即正义 2

1.1.1 照本宣科 3

1.1.2 关键概念概述 4

1.1.3 数学之美 5

1.2 机器学习的场景和任务 6

1.3 机器学习算法 8

1.4 如何掌握机器学习 10

1.4.1 学习曲线 10

1.4.2 技术栈 11

1.5 深度学习 12

1.6 走进移动世界的深度学习 25

1.7 本书框架 26

1.8 本章小结 27

第2章 机器学习基础 28

2.1 机器学习的主要任务 28

2.2 贝叶斯模型 29

2.3 Logistic回归 33

2.4 本章小结 44

第3章 人工神经网络 45

3.1 人工神经网络简介 45

3.2 基本结构与前向传播 46

3.3 反向传播算法 50

3.4 实现前向神经网络 53

3.5 稀疏自编码器 61

3.6 神经网络数据预处理 64

3.7 本章小结 65

第4章 深度网络与卷积神经网络 66

4.1 深度网络 66

4.2 卷积神经网络 70

4.3 卷积神经网络实现 73

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.2 数据标准化 166

7.3 PCA 167

7.4 在Hurricane之上实现PCA 170

7.5 本章小结 192

第8章 基于深度神经网络的物体检测与识别 193

8.1 模式识别与物体识别 193

8.2 图像分类 197

8.3 目标识别与物体检测 207

8.4 检测识别实战 213

8.5 移动平台检测识别实战 237

8.6 本章小结 258

第四篇 深入理解移动平台深度学习

第9章 深入移动平台性能优化 260

9.1 模型压缩 260

9.2 权重稀疏化 262

9.3 模型加速 275

9.4 嵌入式优化 287

9.5 嵌入式优化代码实现 290

9.6 本章小结 313

第10章 数据采集与模型训练实战 314

10.1 收集海量数据 314

10.2 图片数据爬虫实现 317

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.4 模型处理工具 407

11.5 本章小结 425

第12章 移动平台框架与接口实战 426

12.1 Core ML 426

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

短评

现在移动端应用深度学习技术的趋势太明显了,大势所趋啊。买来这本书读了一下,对我帮助比较大,主要是因为对知识体系的梳理方面恰到好处,而且结合实例代码,这一点我很喜欢。

2019-12-06

这本书对模型优化主题进行了深入探讨,我正好需要这方面的指南,正好看到就买了。

2019-12-12

一直在找结合移动和神经网络的书,终于有了,初步翻了下,由浅入深,层层递减,有理论有实践,是我要的书。

2019-12-06

公司的产品准备在移动设备上落地,发现了这本书,实在是及时雨,对知识的覆盖和编程实用性方面都可圈可点,对我帮助很大。

2019-12-06

好书,推荐,学习了,这是一本值得学习的书

2019-12-12

标签
好书,值得一读,AI,计算机-机器学习,深度学习,专业书
产品特色