TensorFlow已經(jīng)成為機(jī)器學(xué)習(xí)的流行框架和工業(yè)屆標(biāo)準(zhǔn),早期的TensorFlow以云端和數(shù)據(jù)中心中的機(jī)器學(xué)習(xí)為主,近期的一個趨勢是,逐漸向移動端和設(shè)備端轉(zhuǎn)移。推動這個趨勢的動力包括人們對機(jī)器學(xué)習(xí)理論和認(rèn)知的提高、算法及技術(shù)的改進(jìn)、軟件和硬件性能的提高,以及專有硬件的出現(xiàn)等,更主要的是,用戶的需求和越來越豐富的場景需求。現(xiàn)在國內(nèi)移動用戶已超15億,全球移動用戶已超過51億,2019年IoT裝置數(shù)量預(yù)計將超過全球人口總數(shù)。我們相信,在未來,云端和移動端相結(jié)合的人工智能和設(shè)備端獨(dú)立的人工智能應(yīng)用會慢慢成為主流。作為TensorFlow的開發(fā)者和使用者,本書作者完整地講解了使用TensorFlow進(jìn)行端到端開發(fā)的實例和開發(fā)技巧,同時分享了如何使用開源工具進(jìn)行軟件開發(fā)的最佳工程實踐和經(jīng)驗。本書提供了全方位的視角幫助讀者開啟不同的思路,即使把本書作為一本軟件開發(fā)和工程開發(fā)的書籍來讀,也會使讀者受益匪淺。
王眾磊:TensorFlow的開發(fā)者之一,具有二十多年的留學(xué)和工作經(jīng)驗。現(xiàn)定居美國硅谷,長期從事軟件開發(fā)工作,發(fā)表國際論文及國際專利多項。曾在谷歌等多家大型國際公司及初創(chuàng)企業(yè)工作過,有豐富的國內(nèi)、國際開發(fā)及管理經(jīng)驗。近幾年以移動端開發(fā)、邊緣計算、云計算和機(jī)器學(xué)習(xí)為主,從事開發(fā)和管理工作。工作之余喜歡和家人一起去各地旅游、打高爾夫球、滑雪等。陳海波:深蘭科技DeepBlue Technology的創(chuàng)始人,南京工業(yè)大學(xué)特聘教授,清華大學(xué)—深蘭科技機(jī)器視覺聯(lián)合研究中心管理委員會主任;上海交通大學(xué)—深蘭科技人工智能聯(lián)合實驗室管理委員會主任、中南大學(xué)—深蘭科技人工智能聯(lián)合研究院專家委員會委員,致力于人工智能的基礎(chǔ)研究和應(yīng)用開發(fā),創(chuàng)建的深蘭科學(xué)院擁有人工智能研究院、科學(xué)計算研究院、生命及AI腦科學(xué)院、自動化研究院和智能汽車研究院。團(tuán)隊擁有包括CVPR、PAKDD、IEEEISI等多項國際競賽冠軍成績,在自動駕駛和整車、機(jī)器人研發(fā)及制造、生物科技、自然語言處理(語義智能)、數(shù)據(jù)挖掘等領(lǐng)域都有深度布局。
目 錄
第1章 機(jī)器學(xué)習(xí)和TensorFlow簡述 1
1.1 機(jī)器學(xué)習(xí)和TensorFlow的歷史及發(fā)展現(xiàn)狀 1
1.1.1 人工智能和機(jī)器學(xué)習(xí) 1
1.1.2 TensorFlow 3
1.1.3 TensorFlow Mobile 5
1.1.4 TensorFlow Lite 5
1.2 在移動設(shè)備上運(yùn)行機(jī)器學(xué)習(xí)的應(yīng)用 6
1.2.1 生態(tài)和現(xiàn)狀 7
1.2.2 從移動優(yōu)先到人工智能優(yōu)先 8
1.2.3 人工智能的發(fā)展 9
1.2.4 在移動設(shè)備上進(jìn)行機(jī)器學(xué)習(xí)的難點和挑戰(zhàn) 9
1.2.5 TPU 10
1.3 機(jī)器學(xué)習(xí)框架 11
1.3.1 CAFFE2 11
1.3.2 Android NNAPI 12
1.3.3 CoreML 12
1.3.4 樹莓派(Raspberry Pi) 13
第2章 構(gòu)建開發(fā)環(huán)境 14
2.1 開發(fā)主機(jī)和設(shè)備的選擇 14
2.2 在網(wǎng)絡(luò)代理環(huán)境下開發(fā) 15
2.3 集成開發(fā)環(huán)境IDE 16
2.3.1 Android Studio 16
2.3.2 Visual Studio Code 16
2.3.3 其他IDE 18
2.4 構(gòu)建工具Bazel 18
2.4.1 Bazel生成調(diào)試 19
2.4.2 Bazel Query命令 20
2.5 裝載TensorFlow 20
2.6 文檔 25
第3章 基于移動端的機(jī)器學(xué)習(xí)的開發(fā)方式和流程 26
3.1 開發(fā)方式和流程簡介 26
3.2 使用TPU進(jìn)行訓(xùn)練 28
3.3 設(shè)備端進(jìn)行機(jī)器學(xué)習(xí)訓(xùn)練 35
3.4 使用TensorFlow Serving優(yōu)化TensorFlow模型 41
3.4.1 訓(xùn)練和導(dǎo)出TensorFlow模型 42
3.4.2 使用標(biāo)準(zhǔn)TensorFlow ModelServer加載導(dǎo)出的模型 50
3.4.3 測試服務(wù)器 50
3.5 TensorFlow擴(kuò)展(Extended) 54
第4章 構(gòu)建TensorFlow Mobile 55
4.1 TensorFlow Mobile的歷史 55
4.2 TensorFlow代碼結(jié)構(gòu) 55
4.3 構(gòu)建及運(yùn)行 61
4.3.1 代碼的流程 67
4.3.2 代碼的依賴性 68
4.3.3 性能和代碼跟蹤 69
第5章 用TensorFlow Mobile構(gòu)建機(jī)器學(xué)習(xí)應(yīng)用 71
5.1 準(zhǔn)備工作 71
5.2 圖像分類(Image Classification) 74
5.2.1 應(yīng)用 74
5.2.2 模型 85
5.3 物體檢測(Object Detection) 87
5.3.1 應(yīng)用 87
5.3.2 模型 92
5.4 時尚渲染(Stylization) 95
5.4.1 應(yīng)用 95
5.4.2 模型 96
5.5 聲音識別(Speech Recognization) 96
5.5.1 應(yīng)用 96
5.5.2 模型 99
第6章 TensorFlow Lite的架構(gòu) 101
6.1 模型格式 102
6.1.1 Protocol Buffer 102
6.1.2 FlatBuffers 105
6.1.3 模型結(jié)構(gòu) 112
6.1.4 轉(zhuǎn)換器(Toco) 113
6.1.5 解析器(Interpreter) 119
6.2 底層結(jié)構(gòu)和設(shè)計 123
6.2.1 設(shè)計目標(biāo) 123
6.2.2 錯誤反饋 124
6.2.3 裝載模型 125
6.2.4 運(yùn)行模型 126
6.2.5 定制演算子(CUSTOM Ops) 128
6.2.6 定制內(nèi)核 132
6.3 工具 133
6.3.1 圖像標(biāo)注(label_image) 133
6.3.2 最小集成(Minimal) 143
6.3.3 Graphviz 143
6.3.4 模型評效 148
第7章 用TensorFlow Lite構(gòu)建機(jī)器學(xué)習(xí)應(yīng)用 151
7.1 模型設(shè)計 151
7.1.1 使用預(yù)先訓(xùn)練的模型 151
7.1.2 重新訓(xùn)練 152
7.1.3 使用瓶頸(Bottleneck) 154
7.2 開發(fā)應(yīng)用 158
7.2.1 程序接口 158
7.2.2 線程和性能 162
7.2.3 模型優(yōu)化 163
7.3 TensorFlow Lite的應(yīng)用 170
7.3.1 聲音識別 173
7.3.2 圖像識別 177
7.4 TensorFlow Lite使用GPU 178
7.4.1 GPU與CPU性能比較 178
7.4.2 開發(fā)GPU代理(Delegate) 178
7.5 訓(xùn)練模型 182
7.5.1 仿真器 183
7.5.2 構(gòu)建執(zhí)行文件 183
第8章 移動端的機(jī)器學(xué)習(xí)開發(fā) 186
8.1 其他設(shè)備的支持 186
8.1.1 在iOS上運(yùn)行TensorFlow的應(yīng)用 186
8.1.2 在樹莓派上運(yùn)行TensorFlow 189
8.2 設(shè)計和優(yōu)化模型 190
8.2.1 模型大小 191
8.2.2 運(yùn)行速度 192
8.2.3 可視化模型 196
8.2.4 線程 196
8.2.5 二進(jìn)制文件大小 197
8.2.6 重新訓(xùn)練移動數(shù)據(jù) 197
8.2.7 優(yōu)化模型加載 198
8.2.8 保護(hù)模型文件 198
8.2.9 量化計算 199
8.2.10 使用量化計算 202
8.3 設(shè)計機(jī)器學(xué)習(xí)應(yīng)用程序要點 207
第9章 TensorFlow的硬件加速 209
9.1 神經(jīng)網(wǎng)絡(luò)接口 209
9.1.1 了解Neural Networks API運(yùn)行時 210
9.1.2 Neural Networks API編程模型 211
9.1.3 NNAPI 實現(xiàn)的實例 213
9.2 硬件加速 222
9.2.1 高通網(wǎng)絡(luò)處理器 223
9.2.2 華為HiAI Engine 229
9.2.3 簡要比較 235
9.2.4 開放式神經(jīng)網(wǎng)絡(luò)交換格式 236
第10章 機(jī)器學(xué)習(xí)應(yīng)用框架 237
10.1 ML Kit 237
10.1.1 面部識別(Face Detection) 242
10.1.2 文本識別 247
10.1.3 條形碼識別 248
10.2 聯(lián)合學(xué)習(xí)(Federated Learning) 248
第11章 基于移動設(shè)備的機(jī)器學(xué)習(xí)的未來 252
11.1 TensorFlow 2.0和路線圖 252
11.1.1 更簡單的開發(fā)模型 253
11.1.2 更可靠的跨平臺的模型發(fā)布 254
11.1.3 TensorFlow Lite 254
11.1.4 TensorFlow 1.0 和TensorFlow 2.0的不同 255
11.2 人工智能的發(fā)展方向 255
11.2.1 提高人工智能的可解釋性 255
11.2.2 貢獻(xiàn)社會 256
11.2.3 改善社會 258