在數(shù)字化時代,嵌入式人工智能系統(tǒng)和深度學(xué)習(xí)等技術(shù)變得越來越重要。在嵌入式平臺上進行深度學(xué)習(xí)推理時會受到計算能力、存儲空間、能耗等資源限制的挑戰(zhàn)。本書從深度學(xué)習(xí)模型在資源受限的硬件平臺上部署的角度,介紹嵌入式AI系統(tǒng)的基本概念、需求、挑戰(zhàn),以及其軟硬件解決方案。 本書共分為7章。第1章介紹了邊緣計算; 第2章介紹了嵌入式AI系統(tǒng)的基本概念及其面臨的需求與挑戰(zhàn); 第3章介紹了嵌入式AI系統(tǒng)的硬件解決方案; 第4~6章介紹了嵌入式AI系統(tǒng)的軟件解決方案,包括DNN模型的構(gòu)建及實現(xiàn)、輕量級DNN模型的構(gòu)建、模型輕量化方法及實現(xiàn); 第7章介紹了DNN模型的硬件部署。本書提供了基于Python語言和Torch API的大量代碼解析,并針對Intel系列和NVIDIA系列芯片的硬件部署分別進行介紹。 本書適合作為高等院校計算機專業(yè)、軟件工程專業(yè)的教材,也可供對深度學(xué)習(xí)、計算機視覺、嵌入式AI系統(tǒng)等感興趣的開發(fā)人員、廣大科技工作者和研究人員參考。
全球正在進入數(shù)字化新時代,以云計算、大數(shù)據(jù)、人工智能與物聯(lián)網(wǎng)為代表的數(shù)字技術(shù)已經(jīng)快速發(fā)展。數(shù)字化時代的到來使得深度學(xué)習(xí)和嵌入式人工智能技術(shù)變得越來越重要。嵌入式人工智能是指設(shè)備可以在不依賴于互聯(lián)網(wǎng)且不通過云端數(shù)據(jù)中心的情況下進行智能計算,利用本地的計算資源來實現(xiàn)深度學(xué)習(xí)模型的推理。嵌入式人工智能可以完成實時的環(huán)境感知、人機交互和決策控制。然而,在嵌入式平臺上進行深度學(xué)習(xí)推理時,由于算力、能耗、存儲空間等方面的限制,人工智能系統(tǒng)在推理環(huán)節(jié)會遇到許多挑戰(zhàn)。本書旨在介紹深度學(xué)習(xí)模型如何在嵌入式平臺上完成部署,包括軟硬件兩個方面。本書介紹的內(nèi)容有邊緣計算、人工智能計算芯片、常用的深度卷積神經(jīng)網(wǎng)絡(luò)模型、輕量級深度卷積神經(jīng)網(wǎng)絡(luò)、深度學(xué)習(xí)模型輕量化的方法以及深度學(xué)習(xí)模型的硬件部署。
本書采用結(jié)構(gòu)性思維,提供多張框圖,使整書脈絡(luò)清晰、環(huán)環(huán)相扣,讀者可以快速把握本書的結(jié)構(gòu)脈絡(luò)并關(guān)注細節(jié)。另外,書中采用大量生動的圖表來說明枯燥的理論,并引用大量的實驗結(jié)果比較不同方法之間的性能差異,這些都可以讓一本枯燥的技術(shù)書籍更加易于理解。作者從大量的科研論文中尋找相關(guān)資料,并將論文中看起來比較枯燥的公式、圖、表變得更有趣、易懂。同時,本書采用簡潔、平實并且有趣的方式來敘述,采用結(jié)構(gòu)圖、原理圖來表達比較復(fù)雜的理論或公式。本書可以幫助讀者快速建立起知識體系。
本書提供了可運行的代碼示例,注釋清晰、詳細,配備視頻教程,并附有相關(guān)注釋,為讀者打造全方位的學(xué)習(xí)體驗,使讀者在建立知識體系的同時掌握算法設(shè)計、模型壓縮以及模型部署的方法。近年來,作者在承擔(dān)40余項與人工智能系統(tǒng)研發(fā)相關(guān)的科研項目,并成功研制多款計算機視覺產(chǎn)品的過程中,深刻感受到在深度學(xué)習(xí)模型部署方面可用于系統(tǒng)性學(xué)習(xí)的相關(guān)資料非常有限。作者在查閱大量英文論文、產(chǎn)品說明書、Facebook官網(wǎng)、NVIDIA官網(wǎng)、Intel官網(wǎng)及相關(guān)博文等的基礎(chǔ)上,完成了本書的撰寫,希望為人工智能從業(yè)人員、初學(xué)者,以及希望系統(tǒng)性開始人工智能領(lǐng)域?qū)W習(xí)的朋友提供幫助。
感謝北京交通大學(xué)的同事和學(xué)生們的積極參與,感謝你們針對本書理論內(nèi)容和實踐代碼提出的寶貴建議、意見和測試反饋,讓本書內(nèi)容更顯精彩。
第1章邊緣計算
1.1云計算與邊緣計算
1.2邊緣計算的挑戰(zhàn)
1.2.1DNN模型設(shè)計
1.2.2DNN模型輕量化
1.2.3硬件優(yōu)化部署
1.3云邊端任務(wù)協(xié)作
1.4本章小結(jié)
1.5習(xí)題
第2章嵌入式AI系統(tǒng)
2.1嵌入式AI系統(tǒng)的概念
2.2嵌入式AI系統(tǒng)的硬件結(jié)構(gòu)
2.3嵌入式AI系統(tǒng)的軟件結(jié)構(gòu)
2.3.1驅(qū)動層
2.3.2操作系統(tǒng)層
2.3.3中間件層
2.3.4應(yīng)用層
2.4嵌入式深度學(xué)習(xí)技術(shù)
2.5嵌入式AI系統(tǒng)的應(yīng)用
2.5.1車載輔助駕駛系統(tǒng)
2.5.2無人機智能巡檢系統(tǒng)
2.5.3VR設(shè)備
2.6嵌入式AI系統(tǒng)的需求與挑戰(zhàn)
2.7本章小結(jié)
2.8習(xí)題
深度學(xué)習(xí)框架及系統(tǒng)部署實戰(zhàn)(微課視頻版)
目錄
第3章嵌入式AI系統(tǒng)的硬件解決方案
3.1通用類芯片GPU
3.2半定制化芯片F(xiàn)PGA
3.3全定制化芯片ASIC
3.4類腦芯片
3.5對四大類型AI芯片的總結(jié)與展望
3.5.1對AI芯片的總結(jié)
3.5.2對AI芯片的展望
3.6本章小結(jié)
3.7習(xí)題
第4章深度卷積神經(jīng)網(wǎng)絡(luò)(DCNN)模型的構(gòu)建及實現(xiàn)
4.1神經(jīng)網(wǎng)絡(luò)的概念及發(fā)展歷史
4.1.1神經(jīng)元的結(jié)構(gòu)
4.1.2感知機
4.1.3BP算法
4.1.4神經(jīng)網(wǎng)絡(luò)的發(fā)展歷史
4.2深度卷積神經(jīng)網(wǎng)絡(luò)(DCNN)
4.2.1深度學(xué)習(xí)的概念
4.2.2DCNN的概念
4.2.3DCNN的構(gòu)成
4.2.4DCNN的訓(xùn)練
4.3幾種常用的DNN模型結(jié)構(gòu)
4.3.1AlexNet
4.3.2VGG
4.3.3GoogLeNet
4.3.4ResNet
4.3.5網(wǎng)絡(luò)模型對比
4.3.6遷移學(xué)習(xí)
4.4圖像識別項目實戰(zhàn)
4.5本章小結(jié)
4.6習(xí)題
第5章輕量級DCNN模型
5.1MobileNet系列
5.1.1MobileNet V1
5.1.2MobileNet V2
5.1.3MobileNet V3
5.2ShuffleNet系列
5.2.1ShuffleNet V1
5.2.2ShuffleNet V2
5.3輕量級DCNN模型對比
5.4項目實戰(zhàn)
5.4.1MobileNet V3模型構(gòu)建
5.4.2ShuffleNet V2模型構(gòu)建
5.5本章小結(jié)
5.6習(xí)題
第6章深度學(xué)習(xí)模型輕量化方法及實現(xiàn)
6.1網(wǎng)絡(luò)模型剪枝
6.1.1基本原理
6.1.2網(wǎng)絡(luò)模型的剪枝分類
6.1.3剪枝標準
6.1.4剪枝流程
6.1.5代碼實現(xiàn)
6.2參數(shù)量化
6.2.1基本原理
6.2.2參數(shù)量化算法的分類
6.2.3參數(shù)量化流程
6.2.4代碼實現(xiàn)
6.3知識蒸餾法
6.3.1基本原理
6.3.2知識蒸餾算法流程
6.3.3代碼實現(xiàn)
6.4本章小結(jié)
6.5習(xí)題
第7章AI模型的硬件部署
7.1開放神經(jīng)網(wǎng)絡(luò)交換(ONNX)格式
7.1.1ONNX模型
7.1.2Torch模型轉(zhuǎn)ONNX模型實例
7.1.3ONNX 工作原理
7.1.4ONNX模型推理
7.1.5推理速度對比
7.2Intel系列芯片部署方法
7.2.1OpenVINO的簡介
7.2.2OpenVINO的安裝
7.2.3OpenVINO工作流程
7.2.4OpenVINO推理示例
7.3NVIDIA系列芯片部署方法
7.3.1TensorRT的簡介
7.3.2TensorRT的安裝
7.3.3TensorRT模型轉(zhuǎn)換
7.3.4部署TensorRT模型
7.4本章小結(jié)
7.5習(xí)題