移動平台深度神經網路實戰:原理、架構與優化

盧譽聲

立即出貨

買這商品的人也買了...

商品描述

本書精講移動平台深度學習系統所需核心算法、硬件級指令集、
系統設計與編程實戰、海量數據處理、業界流行框架裁剪與產品級性能優化策略等,深入、翔實。

深度學習基礎(第1~4章),介紹開發機器學習系統所需重要知識點,
以及開發移動平台機器學習系統算法基石,諸如人工神經網絡、
稀疏自編碼器、深度網絡、卷積神經網絡等。

移動平台深度學習基礎(第5~6章),介紹移動平台開發環境搭建、
移動平台開發基礎、ARM指令集加速技術,以及輕量級網絡的實現原理與實戰。

深入理解深度學習(第7~8章),剖析數據預處理原理與方法,
高性能實時處理系統開發,以及基於深度神經網絡的物體檢測與識別。
本篇是下一篇內容的前導與“基石”。

深入理解移動平台深度學習(第9~12章),本篇應用前述章節的框架與技術,
實現移動平台深度學習系統的實現與集成,具體涵蓋:
① 移動平台性能優化,數據採集與訓練,為開發移動平台圖像分類系統建立基礎;
② 深入剖析TensorFlow Lite代碼體系、構建原理、集成方法以及核心代碼與裁剪分析,
模型處理工具,並完成移動平台系統集成;
③ 結合實戰分析主流移動平台機器學習框架、接口,並展望未來。

作者簡介

盧譽聲

Autodesk數據平台和計算平台資深工程師,負責平台架構研發工作。
工作內容涵蓋大規模分佈式系統的服務器後端、前端以及SDK的設計與研發,
在數據處理、實時計算、分佈式系統設計與實現、性能調優、
高可用性和自動化等方面積累了豐富的經驗。
擅長C/C++、JavaScript開發,此外對Scala、Java以及移動平台等也有一定研究。
著有《移動平台深度神經網絡實戰:原理、架構與優化》、
《分佈式實時處理系統:原理架構與實現》,
並譯有《高級C/C++編譯技術》和《JavaScript編程精解(原書第2版​​)》等。

目錄大綱

序一
序二
前言
第一篇深度學習基礎
第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