深度學習電腦視覺 Deep Learning for Vision Systems

Mohamed Elgendy 劉升容 安丹 郭平平 譯

  • 深度學習電腦視覺-preview-1
  • 深度學習電腦視覺-preview-2
  • 深度學習電腦視覺-preview-3
深度學習電腦視覺-preview-1

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

商品描述

電腦視覺有多先進?開一開特斯拉就知道了。深度學習技術已在人臉識別、交互式模擬和醫學成像方面取得令人興奮的突破,但最讓人心潮澎湃的當屬自動駕駛技術。如今,自動駕駛的汽車已經能在高速路上暢意馳騁並對各種復雜路況做出靈活反應了。 電腦如何“理解”它所“看到”的東西?本書試圖將深度學習應用於電腦視覺以回答該問題。本書僅用高中代數知識闡明視覺直覺背後的概念。你將瞭解如何使用深度學習架構來構建視覺系統應用程序,以實現圖像生成和人臉識別功能。 主要內容 ●圖像分類和目標檢測 ●先進的深度學習架構 ●遷移學習與生成對抗網絡 ●DeepDream和神經風格遷移 ●視覺嵌入和圖像搜索

目錄大綱

第Ⅰ部分 深度學習基礎

1 章 概述??????????????????????????????????????3

1.1 電腦視覺??????????????????? 4

1.1.1 視覺感知的定義????????? 4

1.1.2 視覺系統?????????????????? 4

1.1.3 感知設備?????????????????? 6

1.1.4 解譯設備?????????????????? 7

1.2 CV 應用??????????????????????? 8

1.2.1 圖像分類?????????????????? 9

1.2.2 目標檢測與定位????????10

1.2.3 生成藝術(風格遷移) ???11

1.2.4 圖像生成?????????????????11

1.2.5 人臉識別?????????????????12

1.2.6 圖片推薦系統???????????13

1.3 電腦視覺管道概覽?????? 14

1.4 圖像輸入????????????????????? 15

1.4.1 圖像的函數表達????????16

1.4.2 電腦讀取圖像????????17

1.4.3 彩色圖像?????????????????17

1.5 圖像處理????????????????????? 19

1.6 特徵提取????????????????????? 21

1.6.1 電腦視覺中特徵的

定義???????????????????????22

1.6.2 有用特徵的定義????????23

1.6.3 手動與自動的特徵

提取???????????????????????25

1.7 分類器學習算法???????????? 27

1.8 本章小結????????????????????? 28

第2 章 深度學習和神經網絡????????? 29

2.1 理解感知機?????????????????? 30

2.1.1 感知機的定義???????????31

2.1.2 感知機的學習機制?????34

2.1.3 單層感知機的

局限性????????????????????35

2.2 多層感知機?????????????????? 36

2.2.1 多層感知機架構????????37

2.2.2 關於隱藏層??????????????38

2.2.3 隱藏層的設計???????????38

2.2.4 本節內容拓展???????????40

2.3 激活函數????????????????????? 41

2.3.1 線性轉移函數???????????42

2.3.2 Heaviside 階躍函數

(二元分類器) ????????????43

2.3.3 Sigmoid/logistic

函數???????????????????????43

2.3.4 Softmax 函數????????????46

2.3.5 雙_3恄黖衉J曲正切函數

2.5.1 誤差函數的定義????????55

2.5.2 誤差函數的意義????????55

2.5.3 誤差為正的必要性?????55

2.5.4 均方誤差損失函數?????56

2.5.5 交叉熵損失函數????????57

2.5.6 關於誤差和權重的補充

說明???????????????????????58

2.6 優化算法????????????????????? 59

2.6.1 優化的定義??????????????59

2.6.2 批梯度下降??????????????62

2.6.3 隨機梯度下降???????????67

2.6.4 小批梯度下降???????????68

2.6.5 梯度下降總結???????????68

2.7 反向傳播????????????????????? 69

2.7.1 反向傳播的定義????????70

2.7.2 反向傳播總結???????????72

2.8 本章總結????????????????????? 73

第3 章 捲積神經網絡?????????????????????75

3.1 使用MLP 進行圖像

分類??????????????????????????? 76

3.1.1 輸入層????????????????????76

3.1.2 隱藏層????????????????????78

3.1.3 輸出層????????????????????78

3.1.4 組合???????????????????????78

3.1.5 MLP 處理圖像的

缺點???????????????????????80

3.2 CNN 架構???????????????????? 82

3.2.1 概述???????????????????????83

3.2.2 特徵提取詳解???????????84

3.2.3 分類詳解?????????????????85

3.3 CNN 的基本組件??????????? 85

3.3.1 捲積層????????????????????86

3.3.2 池化層或下採樣????????92

3.3.3 全連接層?????????????????96

3.4 使用CNN 進行圖像

分類??????????????????????????? 98

3.4.1 構建模型體系架構?????98

3.4.2 參數(權重)的數量????100

3.5 添加dropout 層以避免

過擬合?????????????????????? 101

3.5.1 過擬合定義????????????101

3.5.2 dropout 層定義????????102

3.5.3 dropout 層的重要

意義?????????????????????102

3.5.4 dropout 層在CNN

架構中的位置?????????103

3.6 彩色(3D)圖像的捲積???? 104

3.6.1 彩色圖像的捲積??????105

3.6.2 計算復雜度的變化???107

3.7 練習項目:彩色圖像

分類????????????????????????? 109

3.8 本章總結??????????????????? 118

第4 章 構造DL 項目以及超參數

調優?????????????????????????????????119

4.1 定義性能指標????????????? 120

4.1.1 選擇評價模型的最佳

指標?????????????????????120

4.1.2 混淆矩陣???????????????120

4.1.3 精確度和召回率??????121

4.1.4 F1 得分?????????????????122

4.2 設計基準模型????????????? 122

4.3 為訓練準備數據?????????? 124

4.3.1 劃分數據集????????????124

4.3.2 數據處理???????????????125

4.4 評估模型並解釋其

性能????????????????????????? 127

4.4.1 診斷過擬合和

欠擬合??????????????????127

4.4.2 繪制學習曲線?????????129

4.4.3 練習項目:構建、

訓練和評估網絡??????129

4.5 網絡改進和超參數

調優????????????????????????? 132

4.5.1 收集更多數據與超

參數調優???????????????132

4.5.2 參數與超參數?????????133

4.5.3 神經網絡超參數??????133

4.5.4 網絡架構???????????????134

4.6 學習和優化???????????????? 135

4.6.1 學習率及其衰減

策略?????????????????????135

4.6.2 找到最佳學習率的

系統性方法????????????138

4.6.3 學習率衰減和自適應

學習?????????????????????138

4.6.4 小批大小???????????????139

4.7 優化算法??????????????????? 141

4.7.1 動量梯度下降?????????142

4.7.2 Adam ????????????????????142

4.7.3 訓練輪數和早停

標準?????????????????????143

4.7.4 Early stopping??????????144

4.8 正則化技術???????????????? 144

4.8.1 L2 正則化??????????????145

4.8.2 Dropout 層?????????????146

4.8.3 數據增強???????????????146

4.9 批歸一化??????????????????? 147

4.9.1 協變量偏移問題??????148

4.9.2 神經網絡中的協變量

偏移?????????????????????148

4.9.3 批歸一化的工作

原理?????????????????????149

4.9.4 批歸一化在keras 中的

實現?????????????????????150

4.9.5 批歸一化回顧?????????151

4.10 練習項目:實現高準確度

的圖像分類?????????????? 151

4.11 本章小結????????????????? 157

第Ⅱ部分 圖像分類和檢測

第5 章 先進的CNN 架構???????????? 161

5.1 CNN 設計模式???????????? 162

5.2 LeNet-5 ????????????????????? 164

5.2.1 LeNet 架構?????????????164

5.2.2 LeNet-5 在Keras 中的

實現?????????????????????165

5.2.3 設置學習超參數??????167

5.2.4 LeNet 在MNIST 數據

集上的性能????????????168

5.3 AlexNet????????????????????? 168

5.3.1 AlexNet 網絡架構????169

5.3.2 AlexNet 的新特性????169

5.3.3 Keras 中的AlexNet

實現?????????????????????171

5.3.4 設置學習超參數??????174

5.3.5 AlexNet 的性能???????174

5.4 VGGNet ???????????????????? 175

5.4.1 VGGNet 新特性???????175

5.4.2 VGGNet 配置??????????176

5.4.3 學習超參數????????????179

5.4.4 VGGNet 性能??????????179

5.5 Inception 和

GoogLeNet ???????????????? 179

5.5.1 Inception 新特性??????180

5.5.2 Inception 模塊:

Naive 版?????????????????181

5.5.3 Inception 模塊與維數

約減?????????????????????182

5.5.4 Inception 體系架構????184

5.5.5 GoogLeNet 的Keras

實現?????????????????????185

5.5.6 學習參數???????????????190

5.5.7 Inception 在CIFAR

數據集上的性能??????190

5.6 ResNet ?????????????????????? 191

5.6.1 ResNet 新特性?????????191

5.6.2 殘差塊??????????????????193

5.6.3 keras 中的ResNet

實現?????????????????????195

5.6.4 學習超參數????????????197

5.6.5 ResNet 在CIFAR

數據集上的性能??????197

5.7 本章小結??????????????????? 198

第6 章 遷移學習??????????????????????????199

6.1 遷移學習的必要性??????? 200

6.2 遷移學習的定義?????????? 201

6.3 遷移學習的工作原理???? 207

6.3.1 神經網絡如何學習

特徵?????????????????????208

6.3.2 網絡後期提取的特徵

的可遷移性????????????210

6.4 遷移學習方法????????????? 210

6.4.1 使用預訓練網絡作為

分類器??????????????????210

6.4.2 使用預訓練網絡作為

特徵提取器????????????212

6.4.3 微調?????????????????????213

6.5 選擇合適的遷移學習

方法????????????????????????? 215

6.5.1 場景1:目標數據集

較小且與源數據集

相似?????????????????????215

6.5.2 場景2:目標數據集

較大且與源數據集

相似?????????????????????216

6.5.3 場景3:目標數據集

較小且與源數據集

不同?????????????????????216

6.5.4 場景4:目標數據集

較大且與源數據集

不同?????????????????????216

6.5.5 遷移學習場景總結???216

6.6 開源數據集???????????????? 217

6.6.1 MNIST ??????????????????217

6.6.2 Fashion-MNIST ???????218

6.6.3 CIFAR ??????????????????218

6.6.4 ImageNet ???????????????219

6.6.5 MS COCO ??????????????221

6.6.6 Google Open

Images???????????????????222

6.6.7 Kaggle???????????????????222

6.7 項目1:預訓練網絡作為

特徵提取器???????????????? 222

6.8 項目2:微調?????????????? 228

6.9 本章小結??????????????????? 235

第7 章 使用R-CNN、SSD 和YOLO

進行目標檢測?????????????????? 237

7.1 目標檢測的通用框架???? 238

7.1.1 候選區域???????????????239

7.1.2 網絡預測???????????????240

7.1.3 非極大值抑制

(NMS) ???????????????????241

7.1.4 目標檢測器的評價

指標?????????????????????241

7.2 R-CNN?????????????????????? 244

7.2.1 R-CNN ??????????????????244

7.2.2 Fast R-CNN ????????????248

7.2.3 Faster R-CNN ??????????250

7.2.4 R-CNN 家族總結?????256

7.3 SSD(Single-shot

detector) ???????????????????? 259

7.3.1 SSD 架構總覽?????????259

7.3.2 基礎網絡???????????????261

7.3.3 多尺度特徵層?????????263

7.3.4 NMS?????????????????????266

7.4 YOLO(you only look

once)(320) ????????????????? 267

7.4.1 YOLO v3 的工作

機制?????????????????????268

7.4.2 YOLOv3 架構?????????270

7.5 項目:在自動駕駛中

應用SSD 網絡???????????? 272

7.5.1 步驟1:構建模型????274

7.5.2 步驟2:模型配置????275

7.5.3 步驟3:創建模型????276

7.5.4 步驟3:加載數據????276

7.5.5 步驟5:訓練模型????278

7.5.6 步驟6:可視化

損失?????????????????????279

7.5.7 步驟7:預測??????????280

7.6 本章小結??????????????????? 281

第Ⅲ部分 生成模型與視覺嵌入

第8 章 生成對抗網絡???????????????????285

8.1 GAN 架構?????????????????? 286

8.1.1 Deep convolutional

GANs(DCGANs) ??????288

8.1.2 鑒別器模型????????????288

8.1.3 生成器模型????????????290

8.1.4 訓練GAN ??????????????293

8.1.5 GAN 極小極大值

函數?????????????????????296

8.2 評估GAN 模型??????????? 297

8.2.1 Inception score?????????298

8.2.2 Fréchet inception distance

(FID)?????????????????????298

8.2.3 評估方案選擇?????????299

8.3 GAN 的主流應用????????? 299

8.3.1 文本生成圖像(Text-tophoto

synthesis)????????299

8.3.2 圖像翻譯(Pix2Pix

GAN) ????????????????????300

8.3.3 圖像超分辨率

GAN(SRGAN)?????????301

8.3.4 準備好動手了嗎??????302

8.4 練習項目:構建自己的

GAN ???????????????????????? 302

8.5 本章小結??????????????????? 311

第9 章 DeepDream 和神經風格

遷移???????????????????????????????? 313

9.1 打開CNN 的黑盒???????? 314

9.1.1 CNN 工作原理

回顧?????????????????????314

9.1.2 CNN 特徵可視化?????315

9.1.3 特徵可視化工具的

實現?????????????????????318

9.2 DeepDream ???????????????? 321

9.2.1 DeepDream 算法的工作

原理?????????????????????322

9.2.2 DeepDream 的Keras

實現?????????????????????324

9.3 神經風格遷移????????????? 327

9.3.1 內容損失???????????????329

9.3.2 風格損失(style

loss) ??????????????????????330

9.3.3 總變分損失(total variance

loss)??????????????????????332

9.3.4 網絡訓練???????????????332

9.4 本章小結??????????????????? 333

第10 章 視覺嵌入????????????????????????335

10.1 視覺嵌入的應用???????? 336

10.1.1 人臉識別????????????337

10.1.2 圖片推薦系統??????337

10.1.3 目標重識別系統???339

10.2 學習嵌入????????????????? 340

10.3 損失函數????????????????? 341

10.3.1 問題建立和

形式化???????????????342

10.3.2 交差熵損失?????????342

10.3.3 對比損失????????????343

10.3.4 三元組損失?????????344

10.3.5 損失的簡單實現和

運行分析????????????345

10.4 挖掘信息數據??????????? 347

10.4.1 數據加載器?????????347

10.4.2 信息型數據挖掘:尋找

有用的三元組??????349

10.4.3 Batch All(BA)???????350

10.4.4 Batch Hard(BH) ????351

10.4.5 batch weighted

(BW)??????????????????353

10.4.6 Batch Sample

(BS)???????????????????354

10.5 練習項目:訓練嵌入

網絡????????????????????????? 355

10.5.1 時尚圈:查找相似的

衣服??????????????????356

10.5.2 車輛重識別?????????356

10.5.3 實現??????????????????357

10.5.4 測試訓練的模型???358

10.6 突破準確度的限制????? 362

10.7 本章小結????????????????? 363

參考文獻???????????????????????????????????????? 365

附錄A ???????????????????????????????????????????? 369

A.1 下載代碼庫??????????????? 369

A.2 安裝Anaconda ??????????? 369

A.3 設置DL 環境????????????? 370

A.3.1 手動設置你的開發

環境?????????????????????370

A.3.2 使用本書的repo 中的

conda 環境??????????????371

A.3.3 保存和加載環境??????372

A.4 設置AWS EC2 環境???? 372

A.4.1 創建AWS 賬號??????372

A.4.2 遠程連接到此

實例?????????????????????373

A.4.3 運行Jupyter

Notebook????????????????374