《深度學習之圖像識別核心技術與案例實戰》
深度學習之圖像識別
核心技術與案例實戰
言有三? 著
前言
機器學習、深度學習、人工智能,這些關鍵詞在最近幾年“聲名鵲起”。以深度學習為代表的無監督機器學習技術在圖像處理、語音識別和自然語言處理等領域里頻頻取得新的突破。但深度學習其實并不是一門全新的學科,其歷史可以追溯到20世紀40年代。
深度學習背后的核心技術包括神經網絡的結構設計和最優化方法等,其理論體系雖然有一定進展但是尚不完備。可以說,當前的主流深度學習技術是一門應用性極強的工程技術,這種尚不完備的理論加上具有較高門檻的應用工程特點,對于初學者來說具有一定的困難。如何系統性地了解理論知識,又能夠緊隨理論進行全面的實踐,成為一名合格的圖像處理領域的深度學習算法工程師,這是本書所要解決的問題。
筆者有超過6年的圖像行業背景,最近幾年也多以深度學習技術為基礎進行相關項目的開發,在多年的知識積累和項目實踐中,總結出了大量的經驗,濃縮成了這本書。本書從深度學習的背景和基礎理論開始講起,然后介紹了深度學習中的數據及圖像處理中的幾大重要方向,并介紹了神經網絡的可視化、優化目標、模型的優化和模型的線上部署。
本書內容由淺入深,講解圖文并茂,緊隨工業界和學術界的最新發展,理論和實踐緊密結合,給出了大量的圖表與案例分析。本書拋開了過多的數學理論,完整地剖析了深度學習在圖像處理領域中各個維度的重要技術,而不是只停留于理論的闡述和簡單的結果展示,更是從夯實理論到完成實戰一氣呵成。相信讀者跟隨著本書進行學習,將會對深度學習領域的圖像處理技術和其在實際開發中的應用有更深的理解。
本書特色
1.內容全面,緊跟最新技術發展
本書內容涵蓋了深度學習的理論知識、數據獲取與增強,以及深度學習在圖像分類、分割和檢測這三大基礎研究領域中的發展、數據與模型的可視化、優化目標、模型壓縮與部署等相關知識,基本上囊括了深度學習在圖像開發中所必須要掌握的大部分基礎知識。
2.深度與廣度兼具
本書在講解每個知識點時力求詳盡,而且緊密結合了學術界與工業界相關技術的最新發展。這樣的安排既注重知識的廣度,也兼具知識的深度,可以為圖像處理領域中的從業者提供系統性的學習指導。
3.理論與實踐案例緊密結合
本書不僅對理論知識進行了闡述,而且還給出了大量的實踐內容,以幫助讀者提高實際的動手能力。除了第1、2章主要介紹了深度學習的基礎理論外,后續章節則大多采用了先系統介紹該章涉及知識的發展現狀,然后有針對性地設計了一到兩個實踐案例帶領讀者學習,有較好的學習效果。
4.參考了不同層次學習者的意見
本書若干內容的簡化版本已在筆者運營的公眾號平臺上接受了不同層次讀者的反饋,力求知識的完備性和準確性;另外,本書有多位編寫者參與,他們或理論見長,或善于動手,讓本書從不同層面得到了廣泛的意見,可以滿足不同人群的學習需求。
本書內容
第1章神經網絡基礎,首先介紹了神經網絡的生物基礎與數學模型,然后介紹了卷積神經網絡的基礎知識,這也是當前深度學習模型的基礎。
第2章深度學習優化基礎,首先介紹了深度學習主流開源框架,如Caffe、TensorFlow、Pytorch和Theano等,并對其特點與性能做了對比;然后介紹了網絡優化參數,包括激活函數、正則化方法和歸一化方法等。本章旨在讓大家對深度卷積神經網絡有一個較為全面的認識,給后續章節的學習打好基礎。
第3章深度學習中的數據,首先介紹了深度學習發展過程中的幾個數據集,給讀者展示了數據集對深度學習的重要性;然后介紹了幾大重要發展方向中的數據集;接著講述了數據增強的方法;最后講述了數據的收集、整理及標注等相關問題。
第4章圖像分類,首先介紹了圖像分類的基礎、基于深度學習的圖像分類研究方法及發展現狀,以及圖像分類任務中的挑戰;然后以一個移動端的基準模型為例,展示了圖像分類任務的實踐流程;最后介紹了一個細粒度級別的圖像分類任務,以一個較高的基準模型,展示了較難的圖像分類任務訓練參數的調試技巧。
第5章圖像分割,首先介紹了從閾值法到活動輪廓模型的傳統圖像分割方法;然后介紹了基于深度學習的圖像分割方法的基本原理與核心技術;接著講述了一個移動端的實時圖像分割任務,該任務以MobileNet為基準模型,展示了圖像硬分割任務實踐的完整流程;最后介紹了一個更加復雜的肖像換背景的任務,展示了圖像軟分割任務的基本流程和應用場景。
第6章目標檢測,首先介紹了目標檢測的基礎和基本流程,并講述了一個經典的V-J目標檢測框架;然后介紹了基于深度學習的目標檢測任務的研究方法與發展現狀,并分析了目標檢測中的核心技術;最后給出了一個目標檢測任務實例,通過分析faster rcnn的源代碼,使用該框架自帶的VGG CNN 1024網絡完成訓練和測試,并總結目標檢測中的難點。
第7章數據與模型可視化,首先對包括低維與高維數據的可視化做了簡單介紹;然后對深度學習中的模型可視化做了詳細介紹,包括模型的結構和權重可視化;最后介紹了一個基于Tensorflow和Tensorboard的完整案例。
第8章模型壓縮,首先詳細介紹了模型壓縮的方法,然后以一個典型的模型壓縮實戰案例來闡述項目中的模型壓縮上線。
第9章損失函數,首先介紹了分類任務的損失函數;然后介紹了回歸任務的損失函數;最后介紹了這些損失函數在幾大經典圖像任務中的使用。
第10章模型部署與上線,依托微信小程序平臺從3個方面介紹了模型部署的問題。首先介紹了微信小程序的前端開發,然后介紹了微信小程序的服務端開發,最后介紹了Caffe的環境配置。
本書涉及的源代碼文件及其他資料需要讀者自行下載。請登錄華章公司網站www.hzbook.com,在該網站上搜索到本書,然后單擊“資料下載”按鈕即可在頁面上找到“配書資源”下載鏈接。
本書讀者對象
* 圖像處理技術人員;
* 深度學習技術人員;
* 深度學習技術愛好者;
* 深度學習技術研究人員;
* 相關院校的學生和老師;
* 相關培訓機構的學生和老師。
目錄
前言
第1章? 神經網絡基礎 1
1.1? 神經網絡的生物基礎與數學模型 1
1.1.1? 神經元 1
1.1.2? 感知機 2
1.1.3? BP算法 6
1.2? 卷積神經網絡基礎 10
1.2.1? 卷積神經網絡的基本結構 11
1.2.2? 卷積與權值共享 13
1.2.3? 感受野與池化 14
第2章? 深度學習優化基礎 17
2.1? 深度學習主流開源框架 17
2.1.1? Caffe簡介 18
2.1.2? TensorFlow簡介 18
2.1.3? PyTorch簡介 19
2.1.4? Theano簡介 20
2.1.5? Keras簡介 20
2.1.6? MXNet簡介 21
2.1.7? Chainer簡介 21
2.2? 網絡優化參數 22
2.2.1? 常用激活函數 22
2.2.2? 參數初始化方法 26
2.2.3? 最優化方法 27
2.2.4? 歸一化方法 31
2.2.5? 正則化方法 33
第3章? 深度學習中的數據 36
3.1? 深度學習通用數據集的發展 36
3.1.1? MNIST數據集 36
3.1.2? CIFAR10和CIFAR100數據集 37
3.1.3? PASCAL數據集 38
3.1.4? ImageNet數據集 38
3.1.5? Microsoft COCO數據集 39
3.2? 常見的計算機視覺任務數據集 40
3.2.1? 人臉數據集 40
3.2.2? 自動駕駛數據集 52
3.2.3? 醫學數據集 55
3.3? 數據增強 59
3.3.1? 有監督數據增強 60
3.3.2? 無監督數據增強 63
3.4? 數據的收集與標注 65
3.4.1? 數據收集 65
3.4.2? 數據標注 67
3.4.3? 數據清洗與整理 68
第4章? 圖像分類 70
4.1? 圖像分類基礎 70
4.1.1? 圖像分類問題 70
4.1.2? 深度學習圖像分類發展簡史 72
4.1.3? 評測指標與優化目標 75
4.1.4? 圖像分類的挑戰 76
4.2? 移動端實時表情分類實戰 77
4.2.1? 項目背景 78
4.2.2? 數據預處理 80
4.2.3? 項目方案 82
4.2.4? 模型訓練與測試 84
4.2.5? 項目總結 88
4.3? 細粒度圖像分類實戰 89
4.3.1? 項目背景 89
4.3.2? 項目方案 90
4.3.3? 模型訓練與測試 92
4.3.4? 參數調試 97
4.3.5? 項目總結 102
第5章? 圖像分割 103
5.1? 傳統圖像分割方法 103
5.1.1? 閾值法 103
5.1.2? 區域生長法與超像素 105
5.1.3? 圖切割 105
5.1.4? 活動輪廓模型 106
5.2? ?深度學習圖像分割 109
5.2.1? 基本流程 110
5.2.2? 反卷積 110
5.2.3? 多尺度與感受野 112
5.2.4? CRF方法 113
5.2.5? Image Matting與圖像融合 114
5.3? 移動端實時圖像分割項目 115
5.3.1? 項目背景 115
5.3.2? 項目方案 116
5.3.3? 模型訓練與總結 126
5.4? 一個實時肖像換背景項目 127
5.4.1? 項目背景 127
5.4.2? 項目方案 128
5.4.3? 模型訓練與測試 134
5.4.4? 項目總結 138
第6章? 目標檢測 139
6.1? 目標檢測基礎 139
6.1.1? 檢測窗口選擇 140
6.1.2? 特征提取 141
6.1.3? 分類器 142
6.1.4? V-J人臉檢測算法 143
6.2? 深度學習目標檢測方法 145
6.2.1? Selective search與R-CNN 146
6.2.2? RoI Pooling與SPPNet 147
6.2.3? Fast R-CNN與Faster R-CNN 149
6.2.4? YOLO方法 152
6.2.5? SSD方法 154
6.2.6? 目標檢測中的關鍵技術 155
6.3? 實戰Faster-R-CNN目標檢測 157
6.3.1? 項目背景 157
6.3.2? py-faster-rcnn框架解讀 157
6.3.3? 模型定義與分析 170
6.3.4? 模型訓練與測試 180
6.3.5? 項目總結 183
第7章? 數據與模型可視化 185
7.1? 數據可視化 185
7.1.1? 低維數據可視化 185
7.1.2? 高維數據可視化 187
7.2? 模型可視化 190
7.2.1? 模型結構可視化 190
7.2.2? 模型權重可視化 198
7.2.3? 特征圖可視化 201
7.3? 可視化案例 202
7.3.1? 項目背景 202
7.3.2? 數據接口定義 204
7.3.3? 網絡結構定義 205
7.3.4? 可視化代碼添加 207
7.3.5? 可視化訓練指標 207
第8章? 模型壓縮 209
8.1? 模型壓縮方法 209
8.1.1? 模型設計壓縮 210
8.1.2? 網絡剪枝與量化 213
8.1.3? 張量分解 216
8.1.4? 模型蒸餾與遷移學習 216
8.2? 模型壓縮實戰 218
8.2.1? 網絡分析 220
8.2.2? 輸入尺度和第一層卷積設計 224
8.2.3? 網絡寬度與深度壓縮 226
8.2.4? 彌補通道損失 228
8.2.5? 總結 230
第9章? 損失函數 231
9.1? 分類任務損失 231
9.1.1? 什么是0-1 loss 231
9.1.2? 熵與交叉熵loss 231
9.1.3? softmax loss及其變種 232
9.1.4? KL散度 237
9.1.5? Hinge loss簡介 237
9.1.6? Exponential loss與Logistic loss 237
9.1.7? 多標簽分類任務loss 238
9.2? 回歸任務損失 238
9.2.1? L1 loss與L2 loss 238
9.2.2? L1 loss與L2 loss的改進 239
9.3 常見圖像任務與loss使用 240
9.3.1? 圖像基礎任務 240
9.3.2? 風格化與圖像復原,超分辨重建 240
9.3.3? 生成對抗網絡 241
9.3.4? 總結 245
第10章? 模型部署與上線 246
10.1? 微信小程序前端開發 246
10.1.1? 小程序的技術特點與定位 246
10.1.2? Web前端基礎 248
10.1.3? 小程序開發工具 251
10.1.4? 小程序前端目錄 252
10.1.5? 小程序前端開發 254
10.2? 微信小程序服務端開發 260
10.2.1? 域名注冊與管理 260
10.2.2? 服務端框架簡介 261
10.2.3? 算法搭建與實現 262
10.3? Caffe環境配置 264
10.3.1? 依賴庫安裝 264
10.3.2? Caffe編譯安裝 266
深度學習 圖像處理
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。