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

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

作者:
简介:本篇主要提供移动平台深度神经网络实战:原理、架构与优化pdf下载
出版社:机械工业出版社自营官方旗舰店
出版时间:2019-12
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

产品特色

编辑推荐

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

【免费视频课】作者亲授——CSDN年度精品课程

《移动平台深度学习模型剪裁与优化》


观看方式:

1、微信关注“华章计算机”

2、在后台回复关键词:移动平台



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

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

内容简介

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

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

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

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

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


作者简介

卢誉声

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


精彩书评

誉声和我结缘甚早,是一位很严谨的工程师;本书初稿曾经让我先览,此书技术深入,我也从书中学习了一些崭新技术。我身居中国台湾,非常惊喜大陆的科技出版的蓬勃和百花齐放。我们需要各式各样的书籍,需要各个专精领域的朋友分享他们的精华知识,这是读者的大福气。

——侯捷,著名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.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

精彩书摘

序  一

这是一本讲解怎么养大象,以及如何把大象装进口袋里的实战书。

深度学习的出现和应用,把许多科幻小说中预言的机器智能变成现实,也助力计算机将海量数据处理能力转化为更深层的解构、洞察和创造力,进而提供更加人性化的服务。在深度学习炸裂式发展的背后,是无数科研工作者对算法网络的不断改善和工程师们夜以继日的努力,才将这些成果转化为更多人触手可及的力量。

然而深度学习并不是一门程序语言或者一个编程框架,而是一个知识体系。对于有志进入这个领域发展的人来说,这个名词所代表的数学知识和计算机技术,以及将这些概念转化为应用所牵涉的框架和体系,恰如一只身躯庞大、威力无穷的大象。它的鼻子、耳朵、四肢、尾巴,每一处都饱含新知,每一处都值得细细琢磨。这很容易让人感觉处处都要学习,无从下手,生出畏惧心来。

这时候让一个养过大象、知道它习性的人带着一起看,自然会事半功倍。这本书的前半部分由浅入深地讲解了深度学习中的关键概念、重要知识点以及它们之间的关系,从一开始就串联起了这个知识体系的脉络,让读者先开门见大象,心中有大象。然后在每个局部以探讨学习的口吻和启发式提问将问题抽丝剥茧地层层展开,引出适合的框架,让读者不忍释卷的同时,能知其然更知其所以然。我尤其喜欢的是作者在每个知识点都能保持较小篇幅的同时,在核心知识的介绍中揉入自己的心得体会,并提供很多扩展阅读的线索,让这本实战书兼具了索引书的效用。

这本书后半部分讲的是如何把养好的大象装进口袋里—结合移动端计算环境的特点定制深度学习网络。如果说把大象装进口袋可以靠魔术师,那么在资源有限的环境中完成计算任务就得靠工程师了。作者以轻量化网络为核心,展开讨论了模型裁剪压缩的主要思路,然后演示了移动平台需要的前向引擎移植、数据处理准备和接口封装等必要的工程工作,完整地展示了一个典型项目落地的技术探索过程。贯穿其中的是在实时性、准确率、功耗和空间开销中寻找可用性平衡的种种尝试,这也是在真实工程开发中对工程师最为考验的部分。

如何将深度学习和移动端计算相结合这个主题本身也是恰逢其时。

想想50年前,阿波罗登月飞船载着人类追星逐月的梦想驶入太空,搭载的主机的RAM仅有2048字节。而现在连老人机都已经是至少4GB内存、8核CPU,不由得感慨这个时代对计算机行业独一无二的青睐—算力、存储、互联和可访问的总数据量都呈指数级发展,既极大地拓展了计算理论付诸实际应用的边界,将不可能变为可能,也助力海量运算撞开了初阶智能的一丝裂缝,让新计算形态的曙光照射进来。

作为诞生于这个最好时代的工程师,我们幸运地见证了一波又一波的技术革新及其带来的比预期更为深远的影响。这些时代高光的浪潮中,先锋们大多提前预判了行业变革点,在计算资源变得更普及、更有商业价值的前夜,抢先一步探索和准备。

在当下,我们看到了手持终端上算力和信息采集能力的飞速提升,看到了5G的呼之欲出和算力随时可及的便捷,看到了行业先驱在各自领域中提出了边缘计算、雾计算等新的概念并进行实践。这些征兆都在向我们提示一个新兴的、以广泛互联和边缘计算相结合,以深度计算为突破的新计算形态的诞生,所以当看到这本书关注的主题时,我真真是眼前一亮。

最难能可贵的是,这本书在分享深度学习知识和实战思考的同时,也将一个深度学习前行者的学习路径和理解完整地呈现在我们面前,让更多同行的人可以汲取思路,在遇到具体问题的时候举一反三,更顺利地探索出自己的实践之路。不管你是想在深度学习的海洋中搏浪遨游,还是想在算力扩散的前夜先人一步了解、布局,相信阅读此书都会不虚此行。

祝愿读到这本佳作的朋友都能够“养出自己的大象”,拥有自己的动物园。

Sam Xia

Director of Autodesk Forge Platform

2019.8.5

于10000余米高空

序  二

作为深度神经网络的经典应用,AlphaGo所带来的AI热一直持续至今。而随着深度神经网络及其在计算机视觉和其他领域应用的不断发展,人们对人工智能的发展与实践产生了越来越多的兴趣和期待,深度学习逐渐成为资本持续追逐的热点。

深度学习和其他机器学习技术的蓬勃发展得益于海量数据收集、处理等相关技术的不断发展与完善。随着数据来源越来越丰富,使用数据的平台种类与日俱增,我们处理海量数据的方式也开始从使用统一的、批处理的方式,逐渐发展到结合移动平台甚至是边缘计算设备多方收集并实时处理数据。在此背景之下,移动平台的机器学习应用便应运而生。

AIoT作为AI与IoT结合的产物,作为边缘计算和云计算的相互补充,俨然成为AI产业落地的一个重要方向。诸如人脸识别、物体检测等,深度神经网络在边缘端具有巨大价值。受限于计算资源的规模和功耗,其在边缘端的实现是一个重大挑战,这便是卢誉声撰写本书的初衷,相信他的作品能够帮助大家学习这方面的知识。

得益于作者在机器学习领域多年的经验,全书结构清晰,描述简洁精炼、通俗易懂。作者知识的广度和洞察力在书中得到充分体现,而诸如对TensorFlow Lite的裁剪和针对性优化方法等也彰显出其功力。这些都让我的试读体验非常愉悦。

对于有一定机器学习基础并想要在边缘端进行深度神经网络实践的工程师们而言,本书深入浅出,从机器学习和神经网络开始,到移动平台体系结构、数据采集、数据预处理、移动平台深度学习、移动平台框架和优化等,凝聚经验和智慧,满满的干货。除此之外,本书着眼于工程和编程实践,但不乏对算法理论和概念的阐述,将编程实战当中所涉及的核心算法由浅入深地进行推演,并在编程实现算法的基础之上阐述针对特定移动计算平台的优化方法和技巧,因此绝对是大家想要阅读和参考的一站式指南。可以说,本书是作者基于大量源码深度剖析后呕心沥血的良心之作。

即便你是神经网络或者机器学习领域的新手,也能通过作者对机器学习和深度神经网络的智慧解读,打开进入AI领域的大门,领略深度神经网络“遇见”移动平台之精妙,令人回味无穷。

邵 良

Autodesk云计算数据平台高级研发经理

前言/序言

为什么要写这本书

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

7

8 return 0;

9 }

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

这里是相关提示的文字。

读者对象

本书适合以下读者:

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

嵌入式设备软件研发人员

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

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

勘误和支持

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

致谢

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

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

卢誉声

于上海