機器學(xué)習是人工智能領(lǐng)域中非常重要的一個(gè)研究方向,而深度學(xué)習作為機器學(xué)習的重要組成部分,伴隨著(zhù)近幾年數據規模的增長(cháng)和計算力的提升而備受關(guān)注。深度學(xué)習框架的快速發(fā)展大大降低了算法的入門(mén)門(mén)檻,越來(lái)越多的深度學(xué)習從業(yè)者能夠通過(guò)這些框架實(shí)現算法并應用到生活場(chǎng)景中,讓我們的生活更加智能和便捷。
通過(guò)閱讀本書(shū),你將學(xué)到:
MXNet、TensorFlow、Pytorch、Caffe等深度學(xué)習框架的差異
MXNet框架各主要模塊的技術(shù)原理和應用實(shí)踐
MXNet在圖像分類(lèi)、目標檢測、圖像分割中的應用,以及相關(guān)算法的訓練、模型測試和實(shí)現細節
基于動(dòng)態(tài)圖構建網(wǎng)絡(luò )結構的Gluon接口
MXNet專(zhuān)門(mén)為計算機視覺(jué)任務(wù)推出的深度學(xué)習庫GluonCV
從零開(kāi)始實(shí)現深度學(xué)習和計算機視覺(jué)算法的方法
本書(shū)分為四大部分:
第一部分為準備篇(第1~2章),簡(jiǎn)單介紹深度學(xué)習相關(guān)的基礎背景知識、深度學(xué)習框架MXNet的發(fā)展過(guò)程和優(yōu)缺點(diǎn),同時(shí)介紹基礎開(kāi)發(fā)環(huán)境的構建和docker的使用,幫助讀者構建必要的基礎知識背景。
第二部分為基礎篇(第3~7章),介紹MXNet的幾個(gè)主要模塊,介紹MXNet的數據讀取、數據增強操作,同時(shí)介紹了常用網(wǎng)絡(luò )層的含義及使用方法、常見(jiàn)網(wǎng)絡(luò )結構的設計思想,以及介紹模型訓練相關(guān)的參數配置。
第三部分為實(shí)戰篇(第8~10章),以圖像分類(lèi)、目標檢測和圖像分割這三個(gè)常用領(lǐng)域為例介紹如何通過(guò)MXNet實(shí)現算法訓練和模型測試,同時(shí)還將結合MXNet的接口詳細介紹算法細節內容。
第四部分為擴展篇(第11~12章),主要介紹Gluon和GluonCV。Gluon接口是MXNet推出的用于動(dòng)態(tài)構建網(wǎng)絡(luò )結構的重要接口,GluonCV則是一個(gè)專(zhuān)門(mén)為計算機視覺(jué)任務(wù)服務(wù)的深度學(xué)習庫。
魏凱峰
資深AI算法工程師和計算機視覺(jué)工程師,在MXNet、Pytorch、深度學(xué)習相關(guān)算法等方面有深入的研究和豐富的實(shí)踐經(jīng)驗。
目前就職于網(wǎng)易杭州研究院,從事計算機視覺(jué)算法相關(guān)的工作,主要研究方向包括目標檢測、圖像分類(lèi)、圖像對抗算法、模型加速和壓縮。
熱衷于分享,堅持在Github上分享算法相關(guān)的代碼,堅持在CSDN上撰寫(xiě)算法相關(guān)的博客,累計百余篇,訪(fǎng)問(wèn)量過(guò)百萬(wàn)。
前言
第1章 全面認識MXNet1
1.1 人工智能、機器學(xué)習與深度學(xué)習2
1.1.1 人工智能2
1.1.2 機器學(xué)習2
1.1.3 深度學(xué)習4
1.2 深度學(xué)習框架4
1.2.1 MXNet6
1.2.2 PyTorch6
1.2.3 Caffe/Caffe27
1.2.4 TensorFlow7
1.2.5 其他7
1.3 關(guān)于MXNet8
1.3.1 MXNet的發(fā)展歷程8
1.3.2 MXNet的優(yōu)勢9
1.4 MXNet開(kāi)發(fā)需要具備的知識10
1.4.1 接口語(yǔ)言11
1.4.2 NumPy11
1.4.3 神經(jīng)網(wǎng)絡(luò )11
1.5 本章小結12
第2章 搭建開(kāi)發(fā)環(huán)境13
2.1 環(huán)境配置14
2.2 使用Docker安裝MXNet19
2.2.1 準備部分19
2.2.2 使用倉庫安裝Docker20
2.2.3 基于安裝包安裝Docker23
2.2.4 安裝nvidia-docker23
2.2.5 通過(guò)Docker使用MXNet25
2.3 本地pip安裝MXNet27
2.4 本章小結29
第3章 MXNet基礎31
3.1 NDArray31
3.2 Symbol37
3.3 Module43
3.4 本章小結48
第4章 MNIST手寫(xiě)數字體分類(lèi)50
4.1 訓練代碼初探52
4.2 訓練代碼詳細解讀55
4.2.1 訓練參數配置56
4.2.2 數據讀取59
4.2.3 網(wǎng)絡(luò )結構搭建59
4.2.4 模型訓練61
4.3 測試代碼初探62
4.4 測試代碼詳細解讀64
4.4.1 模型導入64
4.4.2 數據讀取66
4.4.3 預測輸出67
4.5 本章小結68
第5章 數據讀取及增強69
5.1 直接讀取原圖像數據70
5.1.1 優(yōu)點(diǎn)及缺點(diǎn)70
5.1.2 使用方法71
5.2 基于RecordIO文件讀取數據75
5.2.1 什么是RecordIO文件75
5.2.2 優(yōu)點(diǎn)及缺點(diǎn)76
5.2.3 使用方法76
5.3 數據增強78
5.3.1 resize79
5.3.2 crop83
5.3.3 鏡像89
5.3.4 亮度90
5.3.5 對比度92
5.3.6 飽和度 94
5.4 本章小結95
第6章 網(wǎng)絡(luò )結構搭建97
6.1 網(wǎng)絡(luò )層98
6.1.1 卷積層98
6.1.2 BN層106
6.1.3 激活層108
6.1.4 池化層111
6.1.5 全連接層114
6.1.6 損失函數層116
6.1.7 通道合并層119
6.1.8 逐點(diǎn)相加層121
6.2 圖像分類(lèi)網(wǎng)絡(luò )結構122
6.2.1 AlexNet123
6.2.2 VGG124
6.2.3 GoogleNet125
6.2.4 ResNet128
6.2.5 ResNeXt130
6.2.6 DenseNet131
6.2.7 SENet132
6.2.8 MobileNet134
6.2.9 ShuffleNet136
6.3 本章小結138
第7章 模型訓練配置140
7.1 問(wèn)題定義141
7.2 參數及訓練配置142
7.2.1 參數初始化142
7.2.2 優(yōu)化函數設置144
7.2.3 保存模型145
7.2.4 訓練日志的保存146
7.2.5 選擇或定義評價(jià)指標147
7.2.6 多GPU訓練150
7.3 遷移學(xué)習151
7.4 斷點(diǎn)訓練153
7.5 本章小結154
第8章 圖像分類(lèi)156
8.1 圖像分類(lèi)基礎知識157
8.1.1 評價(jià)指標158
8.1.2 損失函數160
8.2 貓狗分類(lèi)實(shí)戰160
8.2.1 數據準備161
8.2.2 訓練參數及配置165
8.2.3 數據讀取168
8.2.4 網(wǎng)絡(luò )結構搭建170
8.2.5 訓練模型171
8.2.6 測試模型176
8.3 本章小結179
第9章 目標檢測180
9.1 目標檢測基礎知識182
9.1.1 數據集184
9.1.2 SSD算法簡(jiǎn)介188
9.1.3 anchor189
9.1.4 IoU194
9.1.5 模型訓練目標195
9.1.6 NMS199
9.1.7 評價(jià)指標mAP201
9.2 通用目標檢測202
9.2.1 數據準備203
9.2.2 訓練參數及配置205
9.2.3 網(wǎng)絡(luò )結構搭建208
9.2.4 數據讀取215
9.2.5 定義訓練評價(jià)指標218
9.2.6 訓練模型220
9.2.7 測試模型221
9.4 本章小結224
第10章 圖像分割225
10.1 圖像分割226
10.1.1 數據集227
10.1.2 評價(jià)指標229
10.1.3 語(yǔ)義分割算法230
10.2 語(yǔ)義分割實(shí)戰231
10.2.1 數據準備232
10.2.2 訓練參數及配置233
10.2.3 數據讀取237
10.2.4 網(wǎng)絡(luò )結構搭建240
10.2.5 定義評價(jià)指標245
10.2.6 訓練模型249
10.2.7 測試模型效果251
10.3 本章小結253