TensorFlow 2.x 高級電腦視覺 Mastering Computer Vision with TensorFlow 2.x

Krishnendu (Krish) 周玉蘭 譯

  • TensorFlow 2.x 高級電腦視覺-preview-1
  • TensorFlow 2.x 高級電腦視覺-preview-2
  • TensorFlow 2.x 高級電腦視覺-preview-3
TensorFlow 2.x 高級電腦視覺-preview-1

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

商品描述

《TensorFlow2.x高級電腦視覺》詳細闡述了與TensorFlow高級電腦視覺相關的基本解決方案,主要包括電腦視覺和TensorFlow基礎知識,局部二值模式和內容識別,使用OpenCV和CNN進行面部檢測,圖像深度學習,神經網絡架構和模型,遷移學習和視覺搜索,YOLO和對象檢測,語義分割和神經風格遷移,使用多任務深度學習進行動作識別,使用R-CNN、SSD和R-FCN進行對象檢測,通過CPU/GPU優化在邊緣設備上進行深度學習,用於電腦視覺的雲計算平臺等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。 本書適合作為高等院校電腦及相關專業的教材和教學參考書,也可作為相關開發人員的自學用書和參考手冊。

目錄大綱

目    錄

第1篇  電腦視覺和神經網絡概論

第1章  電腦視覺和TensorFlow基礎知識 3

1.1  技術要求 3

1.2  使用圖像哈希和濾波檢測邊緣 3

1.2.1  使用拜耳濾色器形成彩色圖案 4

1.2.2  創建圖像向量 5

1.2.3  變換圖像 8

1.2.4  線性濾波—與內核進行捲積 9

1.2.5  圖像平滑 10

1.2.6  均值濾波器 11

1.2.7  中值濾波器 12

1.2.8  高斯濾波器 12

1.2.9  使用OpenCV進行圖像濾波 13

1.2.10  圖像梯度 14

1.2.11  圖像銳化 15

1.2.12  混合高斯和拉普拉斯運算 16

1.2.13  檢測圖像邊緣 18

1.2.14  Sobel邊緣檢測器 19

1.2.15  Canny邊緣檢測器 19

1.3  從圖像中提取特徵 20

1.3.1  直方圖 20

1.3.2  使用OpenCV進行圖像匹配 21

1.4  使用輪廓和HOG檢測器進行對象檢測 22

1.4.1  輪廓檢測 23

1.4.2  檢測邊界框 23

1.4.3  HOG檢測器 25

1.4.4  輪廓檢測方法的局限性 26

1.5  TensorFlow生態系統和安裝概述 28

1.5.1  TensorFlow與PyTorch 29

1.5.2  TensorFlow安裝 29

1.6  小結 31

第2章  局部二值模式和內容識別 33

2.1  使用LBP處理圖像 33

2.1.1  生成LBP模式 33

2.1.2  理解LBP直方圖 36

2.1.3  直方圖比較方法 36

2.1.4  LBP的計算成本 39

2.2  將LBP應用於紋理識別 39

2.3  使臉部顏色與基礎顏色匹配—LBP及其局限性 45

2.4  使臉部顏色與基礎顏色匹配—顏色匹配技術 48

2.5  小結 49

第3章  使用OpenCV和CNN進行面部檢測 51

3.1  應用Viola-Jones AdaBoost學習模型和Haar級聯分類器進行人臉識別 51

3.1.1  選擇哈爾特徵 51

3.1.2  創建積分圖像 52

3.1.3  進行AdaBoost訓練 55

3.1.4  級聯分類器 56

3.1.5  訓練級聯檢測器 57

3.2  使用深度神經網絡預測面部關鍵點 58

3.2.1  準備用於關鍵點檢測的數據集 58

3.2.2  處理關鍵點數據 61

3.2.3  在輸入Keras–Python代碼之前進行預處理 61

3.2.4  Keras–Python代碼中的預處理 61

3.2.5  定義模型架構 63

3.2.6  訓練模型以進行關鍵點預測 65

3.3  使用CNN預測面部表情 67

3.4  3D人臉檢測概述 69

3.4.1  3D重建的硬件設計概述 69

3.4.2  3D重建和跟蹤概述 69

3.4.3  參數跟蹤概述 70

3.5  小結 71

第4章  圖像深度學習 73

4.1  理解CNN及其參數 73

4.1.1  捲積 75

4.1.2  在空間上的捲積—3×3濾波器 77

4.1.3  在空間上的捲積—1×1濾波器 78

4.1.4  池化 79

4.1.5  填充 80

4.1.6  步幅 81

4.1.7  激活 82

4.1.8  全連接層 83

4.1.9  正則化 84

4.1.10  舍棄 84

4.1.11  內部協方差漂移和批歸一化 85

4.1.12  Softmax 87

4.2  優化CNN參數 87

4.2.1  基準情況 89

4.2.2  迭代1 90

4.2.3  迭代2 90

4.2.4  迭代3 91

4.2.5  迭代4 92

4.3  可視化神經網絡的各個層 94

4.3.1  構建自定義圖像分類器模型並可視化其層 94

4.3.2  神經網絡輸入和參數 94

4.3.3  輸入圖像 95

4.3.4  定義訓練和驗證生成器 95

4.3.5  開發模型 96

4.3.6  編譯和訓練模型 96

4.3.7  輸入測試圖像並將其轉換為張量 98

4.3.8  可視化第一個激活層 99

4.3.9  可視化多個激活層 99

4.3.10  訓練現有的高級圖像分類器模型並可視化其層 103

4.4  小結 107

第2篇  TensorFlow和電腦視覺的高級概念

第5章  神經網絡架構和模型 111

5.1  AlexNet概述 111

5.2  VGG16概述 116

5.3  Inception概述 117

5.3.1  Inception網絡的工作原理 117

5.3.2  GoogLeNet檢測 120

5.4  ResNet概述 121

5.5  R-CNN概述 123

5.5.1  圖像分割 125

5.5.2  基於聚類的分割 125

5.5.3  基於圖的分割 125

5.5.4  選擇性搜索 126

5.5.5  區域提議 126

5.5.6  特徵提取 126

5.5.7  圖像分類 127

5.5.8  邊界框回歸 127

5.6  快速R-CNN概述 127

5.7  更快的R-CNN概述 129

5.8  GAN概述 133

5.9  GNN概述 135

5.9.1  有關圖神經網絡的基礎知識 136

5.9.2  頻譜GNN 137

5.10  強化學習概述 138

5.11  遷移學習概述 139

5.12  小結 141

第6章  遷移學習和視覺搜索 143

6.1  使用TensorFlow編寫深度學習模型代碼 143

6.1.1  下載權重 144

6.1.2  解碼預測結果 144

6.1.3  導入其他常用功能 145

6.1.4  構建模型 145

6.1.5  從目錄輸入圖像 146

6.1.6  使用TensorFlow Keras導入和處理多幅圖像的循環函數 146

6.2  使用TensorFlow開發遷移學習模型 151

6.2.1  分析和存儲數據 151

6.2.2  導入TensorFlow庫 152

6.2.3  設置模型參數 153

6.2.4  建立數據輸入管道 153

6.2.5  訓練數據生成器 153

6.2.6  驗證數據生成器 154

6.2.7  使用遷移學習構建最終模型 154

6.2.8  使用Checkpoint保存模型 156

6.2.9  給訓練的歷史記錄繪圖 157

6.3  理解視覺搜索的架構和應用 160

6.3.1  視覺搜索的架構 161

6.3.2  視覺搜索代碼和說明 164

6.3.3  預測上傳圖像的類別 164

6.3.4  預測所有圖像的類別 165

6.4  使用tf.data處理視覺搜索輸入管道 171

6.5  小結 173

第7章  YOLO和對象檢測 175

7.1  YOLO概述 175

7.1.1  交並比的概念 176

7.1.2  YOLO能夠快速檢測對象的原因揭秘 177

7.1.3  YOLO v3神經網絡架構 179

7.1.4  YOLO與更快的R-CNN的比較 180

7.2  用於對象檢測的Darknet簡介 181

7.2.1  使用Darknet檢測對象 181

7.2.2 使用Tiny Darknet檢測對象 184

7.3  使用Darknet進行實時預測 186

7.4  YOLO系列的比較 190

7.5  訓練模型 191

7.6  使用YOLO v3訓練新圖像集以開發自定義模型 192

7.6.1  準備圖像 194

7.6.2  生成註解文件 194

7.6.3  將.xml文件轉換為.txt文件 196

7.6.4  創建合並的train.txt和test.txt文件 196

7.6.5  創建一個類別名稱文件的列表 196

7.6.6  創建一個YOLO .data文件 197

7.6.7  調整YOLO配置文件 197

7.6.8  啟用GPU進行訓練 200

7.6.9  開始訓練 200

7.7  特徵金字塔網絡和RetinaNet概述 201

7.8  小結 203

第8章  語義分割和神經風格遷移 205

8.1  用於語義分割的TensorFlow DeepLab概述 205

8.1.1  空間金字塔池化 207

8.1.2  空洞捲積 207

8.1.3  編碼器-解碼器網絡 208

8.1.4  編碼器模塊 208

8.1.5  解碼器模塊 209

8.1.6  DeepLab中的語義分割示例 209

8.1.7  Google Colab、Google Cloud TPU和TensorFlow 209

8.2  使用DCGAN生成人工圖像 213

8.2.1  生成器 213

8.2.2  鑒別器 214

8.2.3  訓練 215

8.2.4  使用DCGAN修復圖像 216

8.2.5  TensorFlow DCGAN示例 217

8.3  使用OpenCV修復圖像 217

8.4  理解神經風格遷移 218

8.5  小結 222

第3篇  使用TensorFlow的電腦視覺高級實現

第9章  使用多任務深度學習進行動作識別 225

9.1  人體姿勢估計—OpenPose 225

9.1.1  OpenPose背後的理論 225

9.1.2  理解OpenPose代碼 228

9.2  人體姿勢估計—堆疊沙漏模型 231

9.2.1  理解沙漏模型 233

9.2.2  編寫沙漏模型代碼 234

9.2.3  argparse塊 235

9.2.4  訓練沙漏網絡 237

9.2.5  創建沙漏網絡 238

9.3  人體姿勢估計—PoseNet 242

9.3.1  自上而下的方法 242

9.3.2  自下而上的方法 242

9.3.3  PoseNet實現 243

9.3.4  應用人體姿勢進行手勢識別 246

9.4  使用各種方法進行動作識別 247

9.4.1  基於加速度計識別動作 248

9.4.2  將基於視頻的動作與姿勢估計相結合 250

9.4.3  使用4D方法進行動作識別 251

9.5  小結 251

第10章  使用R-CNN、SSD和R-FCN進行對象檢測 253

10.1  SSD概述 253

10.2  R-FCN概述 256

10.3  TensorFlow對象檢測API概述 258

10.4  在Google Cloud上使用TensorFlow檢測對象 259

10.5  使用TensorFlow Hub檢測對象 262

10.6  使用TensorFlow和Google Colab訓練自定義對象檢測器 263

10.6.1  收集圖像並格式化為.jpg文件 265

10.6.2  註解圖像以創建.xml文件 266

10.6.3  將文件拆分到訓練和測試文件夾中 267

10.6.4  配置參數並安裝所需的軟件包 269

10.6.5  創建TensorFlow記錄 271

10.6.6  準備模型並配置訓練管道 273

10.6.7  使用TensorBoard監控訓練進度 274

10.6.8  在本地電腦上運行TensorBoard 274

10.6.9  在Google Colab上運行TensorBoard 274

10.6.10  訓練模型 275

10.6.11  運行推理測試 278

10.6.12  使用神經網絡模型時的註意事項 279

10.7  Mask R-CNN概述和Google Colab演示 280

10.8  開發對象跟蹤器模型以補充對象檢測器 282

10.8.1  基於質心的跟蹤 282

10.8.2  SORT跟蹤 282

10.8.3  DeepSORT跟蹤 283

10.8.4  OpenCV跟蹤方法 284

10.8.5  基於暹羅網絡的跟蹤 284

10.8.6  基於SiamMask的跟蹤 285

10.9  小結 286

第4篇  在邊緣和雲端上的TensorFlow實現

第11章  通過CPU/GPU優化在邊緣設備上進行深度學習 291

11.1  邊緣設備上的深度學習概述 291

11.2  用於GPU/CPU優化的技術 293

11.3  MobileNet概述 294

11.4  使用Raspberry Pi進行圖像處理 296

11.4.1  Raspberry Pi硬件設置 297

11.4.2  Raspberry Pi攝像頭軟件設置 298

11.4.3  在Raspberry Pi中安裝OpenCV 298

11.4.4  在Raspberry Pi中安裝OpenVINO 299

11.4.5  安裝OpenVINO工具包組件 300

11.4.6  設置環境變量 301

11.4.7  添加USB規則 301

11.4.8  使用Python代碼運行推理 301

11.4.9  高級推理 302

11.4.10  人臉檢測、行人檢測和車輛檢測 304

11.4.11  特徵識別模型 305

11.4.12  動作識別模型 306

11.4.13  車牌、註視和人員檢測 306

11.5  使用OpenVINO進行模型轉換和推理 309

11.5.1  使用NCAPPZOO在終端中運行推理 309

11.5.2  轉換預訓練模型以進行推理 310

11.5.3  轉換使用Keras開發的TensorFlow模型 310

11.5.4  轉換使用TensorFlow對象檢測API開發的TensorFlow模型 311

11.5.5  OpenVINO模型推理過程總結 312

11.6  TensorFlow Lite的應用 314

11.6.1  將TensorFlow模型轉換為tflite格式 315

11.6.2  Python API 315

11.6.3  TensorFlow對象檢測API—tflite_convert 315

11.6.4  TensorFlow對象檢測API—toco 316

11.6.5  模型優化 318

11.7  使用TensorFlow Lite在Android手機上進行對象檢測 319

11.8  使用TensorFlow Lite在Raspberry Pi上進行對象檢測 323

11.8.1  圖像分類 324

11.8.2  對象檢測 325

11.9  使用TensorFlow Lite和Create ML在iPhone上進行對象檢測 326

11.9.1  適用於iPhone的TensorFlow Lite轉換模型 327

11.9.2  Core ML 330

11.9.3  將TensorFlow模型轉換為Core ML格式 333

11.10  各種註解方法的摘要 333

11.10.1  將標註工作外包給第三方 333

11.10.2  自動或半自動標註 334

11.11  小結 338

第12章  用於電腦視覺的雲計算平臺 339

12.1  在GCP中訓練對象檢測器 339

12.1.1  在GCP中創建項目 340

12.1.2  GCP設置 341

12.1.3  Google Cloud Storage存儲桶設置 342

12.1.4  使用GCP API設置存儲桶 342

12.1.5  使用Ubuntu終端設置存儲桶 343

12.1.6  設置Google Cloud SDK 343

12.1.7  將終端鏈接到Google Cloud項目和存儲桶 344

12.1.8  安裝TensorFlow對象檢測API 345

12.1.9  準備數據集 346

12.1.10  TFRecord和標註地圖數據 346

12.1.11  準備數據 346

12.1.12  上傳數據 347

12.1.13  model.ckpt文件 348

12.1.14  模型配置文件 348

12.1.15  在雲端訓練 350

12.1.16  在TensorBoard中查看模型輸出 351

12.1.17  模型輸出並轉換為凍結圖 353

12.1.18  從Google Colab導出tflite graph.py 354

12.2  在AWS SageMaker雲平臺中訓練對象檢測器 357

12.2.1  設置AWS賬戶和限制等 357

12.2.2  將.xml文件轉換為JSON格式 357

12.2.3  將數據上傳到S3存儲桶 358

12.2.4  創建Notebook實例並開始訓練 358

12.2.5  修復訓練中的一些常見故障 359

12.3  在Microsoft Azure雲平臺中訓練對象檢測器 361

12.3.1  創建一個Azure賬號並設置Custom Vision 361

12.3.2  上傳訓練圖像並標註它們 362

12.4  大規模訓練和打包 366

12.4.1  關於分佈式訓練 366

12.4.2  應用程序打包 366

12.5  基於雲的視覺搜索背後的總體思路 367

12.6  分析各種雲平臺中的圖像和搜索機制 368

12.6.1  使用GCP進行視覺搜索 369

12.6.2  使用AWS進行視覺搜索 370

12.6.3  使用Azure進行視覺搜索 372

12.7  小結 373