TensorFlow 移動端機器學習實戰

王眾磊,陳海波

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

商品描述

TensorFlow已經成為機器學習的流行框架和工業屆標準,早期的TensorFlow以雲端和數據中心中的機器學習為主,近期的一個趨勢是,逐漸向移動端和設備端轉移。推動這個趨勢的動力包括人們對機器學習理論和認知的提高、算法及技術的改進、軟件和硬件性能的提高,以及專有硬件的出現等,更主要的是,用戶的需求和越來越豐富的場景需求。現在國內移動用戶已超15億,全球移動用戶已超過51億,2019年IoT裝置數量預計將超過全球人口總數。我們相信,在未來,雲端和移動端相結合的人工智能和設備端獨立的人工智能應用會慢慢成為主流。作為TensorFlow的開發者和使用者,本書作者完整地講解了使用TensorFlow進行端到端開發的實例和開發技巧,同時分享瞭如何使用開源工具進行軟件開發的最佳工程實踐和經驗。本書提供了全方位的視角幫助讀者開啟不同的思路,即使把本書作為一本軟件開發和工程開發的書籍來讀,也會使讀者受益匪淺。

作者簡介

王眾磊:TensorFlow的開發者之一,具有二十多年的留學和工作經驗。現定居美國矽谷,長期從事軟件開發工作,發表國際論文及國際專利多項。曾在谷歌等多家大型國際公司及初創企業工作過,有豐富的國內、國際開發及管理經驗。近幾年以移動端開發、邊緣計算、雲計算和機器學習為主,從事開發和管理工作。工作之餘喜歡和家人一起去各地旅遊、打高爾夫球、滑雪等。陳海波:深蘭科技DeepBlue Technology的創始人,南京工業大學特聘教授,清華大學—深蘭科技機器視覺聯合研究中心管理委員會主任;上海交通大學—深蘭科技人工智能聯合實驗室管理委員會主任、中南大學—深蘭科技人工智能聯合研究院專家委員會委員,致力於人工智能的基礎研究和應用開發,創建的深蘭科學院擁有人工智能研究院、科學計算研究院、生命及AI腦科學院、自動化研究院和智能汽車研究院。團隊擁有包括CVPR、PAKDD、IEEEISI等多項國際競賽冠軍成績,在自動駕駛和整車、機器人研發及製造、生物科技、自然語言處理(語義智能)、數據挖掘等領域都有深度佈局。
 

目錄大綱

第1章機器學習和TensorFlow簡述1
1.1機器學習和TensorFlow的歷史及發展現狀1
1.1.1人工智能和機器學習1
1.1.2 TensorFlow 3
1.1.3 TensorFlow Mobile 5
1.1.4 TensorFlow Lite 5
1.2在移動設備上運行機器學習的應用6
1.2.1生態和現狀7
1.2.2從移動優先到人工智能優先8
1.2.3人工智能的發展9
1.2.4在移動設備上進行機器學習的難點和挑戰9
1.2 .5 TPU 10
1.3機器學習框架11
1.3.1 CAFFE2 11
1.3.2 Android NNAPI 12
1.3.3 CoreML 12
1.3.4樹莓派(Raspberry Pi) 13
第2章構建開發環境14
2.1開發主機和設備的選擇14
2.2在網絡代理環境下開發15
2.3集成開發環境IDE 16
2.3.1 Android Studio 16
2.3.2 Visual Studio Code 16
2.3.3其他IDE 18
2.4構建工具Bazel 18
2.4.1 Bazel生成調試19
2.4.2 Bazel Query命令20
2.5裝載TensorFlow 20
2.6文檔25
第3章基於移動端的機器學習的開發方式和流程26
3.1開發方式和流程簡介26
3.2使用TPU進行訓練28
3.3設備端進行機器學習訓練35
3.4使用TensorFlow Serving優化TensorFlow模型41
3.4.1訓練和導出TensorFlow模型42
3.4.2使用標準TensorFlow ModelServer加載導出的模型50
3.4.3測試服務器50
3.5 TensorFlow擴展(Extended) 54
第4章構建TensorFlow Mobile 55
4.1 TensorFlow Mobile的歷史55
4.2 TensorFlow代碼結構55
4.3構建及運行61
4.3.1代碼的流程67
4.3.2代碼的依賴性68
4.3.3性能和代碼跟踪69
第5章用TensorFlow Mobile構建機器學習應用71
5.1準備工作71
5.2圖像分類(Image Classification) 74
5.2.1應用74
5.2.2模型85
5.3物體檢測(Object Detection) 87
5.3.1應用87
5.3.2模型92
5.4時尚渲染(Stylization) 95
5.4.1應用95
5.4.2模型96
5.5聲音識別(Speech Recognization) 96
5.5.1應用96
5.5.2模型99
第6章TensorFlow Lite的架構101
6.1模型格式102
6.1.1 Protocol Buffer 102
6.1.2 FlatBuffers 105
6.1.3模型結構112
6.1.4轉換器(Toco) 113
6.1.5解析器(Interpreter) 119
6.2底層結構和設計123
6.2.1設計目標123
6.2.2錯誤反饋124
6.2.3裝載模型125
6.2.4運行模型126
6.2.5定制演算子(CUSTOM Ops) 128
6.2.6定制內核132
6.3工具133
6.3.1圖像標註(label_image) 133
6.3.2最小集成(Minimal) 143
6.3.3 Graphviz 143
6.3.4模型評效148
第7章用TensorFlow Lite構建機器學習應用151
7.1模型設計151
7.1.1使用預先訓練的模型151
7.1.2重新訓練152
7.1. 3使用瓶頸(Bottleneck) 154
7.2開發應用158
7.2.1程序接口158
7.2.2線程和性能162
7.2.3模型優化163
7.3 TensorFlow Lite的應用170
7.3.1聲音識別173
7.3.2圖像識別177
7.4 TensorFlow Lite使用GPU 178
7.4.1 GPU與CPU性能比較178
7.4.2開發GPU代理(Delegate) 178
7.5訓練模型182
7.5.1仿真器183
7.5.2構建執行文件183
第8章移動端的機器學習開發186
8.1其他設備的支持186
8.1.1在iOS上運行TensorFlow的應用186
8.1.2在樹莓派上運行TensorFlow 189
8.2設計和優化模型190
8.2.1模型大小191
8.2.2運行速度192
8.2.3可視化模型196
8.2.4線程196
8.2.5二進製文件大小197
8.2.6重新訓練移動數據197
8.2.7優化模型加載198
8.2.8保護模型文件198
8.2.9量化計算199
8.2.10使用量化計算202
8.3設計機器學習應用程序要點207
第9章TensorFlow的硬件加速209
9.1神經網絡接口209
9.1.1了解Neural Networks API運行時210
9.1.2 Neural Networks API編程模型211
9.1.3 NNAPI實現的實例213
9.2硬件加速222
9.2.1高通網絡處理器223
9.2.2華為HiAI Engine 229
9.2.3簡要比較235
9.2.4開放式神經網絡交換格式236
第10章機器學習應用框架237
10.1 ML Kit 237
10.1.1面部識別(Face Detection) 242
10.1.2文本識別247
10.1.3條形碼識別248
10.2聯合學習(Federated Learning) 248
第11章基於移動設備的機器學習的未來252
11.1 TensorFlow 2.0和路線圖252
11.1.1更簡單的開發模型253
11.1.2更可靠的跨平台的模型發布254
11.1.3 TensorFlow Lite 254
11.1.4 TensorFlow 1.0和TensorFlow 2.0的不同255
11.2人工智能的發展方向255
11.2 .1提高人工智能的可解釋性255
11.2.2貢獻社會256
11.2.3改善社會258