OpenCV 深度學習應用與性能優化實踐

吳至文 郭葉軍 宗煒 李鵬 趙娟 著

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

商品描述

Intel音視頻團隊與阿裡巴巴圖像處理專家聯合撰寫,知名專家聯袂推薦,深入解析OpenCV DNN 模塊、基於GPU/CPU的加速實現、性能優化技巧與可視化工具,以及人臉活體檢測(完整案例)與主流識別項目解析。
第1~2章介紹了OpenCV編譯與運行,深度學習模塊(Open DNN)的架構與實現原理,以及深度學習的數學基礎與如何快速上手。
第3~5章主要介紹了OpenCV的GPU加速原理,涵蓋必要的並行計算知識、Intel GPU硬件結構,以及OpenCL和Vulkan加速實現,是性能優化工作的核心。
第6章介紹了CPU的硬件知識,以及深度學習模塊的CPU加速方法,重點講解了指令集SIMD加速,討論了Halide後端加速、OpenVINO(Intel推理引擎)加速。
第7章介紹了常用的深度神經網絡可視化工具——TensorBoard(適用於TensorFlow網絡格式),Netscope(適用於Caffe網絡格式),針對Intel硬件平臺的性能調優工具VTune,以及高階程序優化的思路和方法。
第8~9章重點講解實踐細節,包括用深度學習方法處理電腦視覺的基本問題,以及一個完整的人臉活體檢測項目與主流識別項目解析。

作者簡介

吳至文

Intel亞太研發有限公司資深圖形圖像工程師,擁有多年算法開發優化經驗,
技術領域涵蓋顯示系統、視覺處理、深度學習框架加速,尤其擅長基於OpenCL和Vulkan的算法設計及優化,
是OpenCV DNN模塊Vulkan後端的作者、OpenCL後端主要貢獻者之一。近期關注深度學習視覺算法開發及其高效部署。

郭葉軍

Intel資深圖形圖像工程師。
多年圖形芯片驅動開發經驗,主要包括OpenGL驅動和OpenCL驅動。
目前關注視頻分析中的深度學習,是FFmpeg深度學習模塊的代碼維護者。

宗煒

Intel資深圖形圖像工程師,長期從事計算機視覺算法與應用、
數字圖像處理、Camera成像算法開發,在CPU/GPU/ISP異構計算算法設計與優化上經驗頗豐,
是圖像處理與計算機視覺算法開源項目libXCam的維護者和主要貢獻者。
近期關注低延時、超高分辨率VR視頻直播方案的開發和部署。

李鵬

阿里巴巴高級技術專家,原Intel亞太研發有限公司資深圖形圖像工程師。
涉及領域包括顯示系統、圖形圖像處理、深度學習框架加速。
是OpenCV DNN模塊OpenCL後端主要貢獻者之一。

趙娟

Intel高級研發經理,鑽研圖形圖像、視頻編解碼和視頻處理十幾年,
帶領團隊深耕視頻編解碼和處理軟硬件加速、深度學習算法分析與設計,
致力於讓開源軟件在圖形圖像視頻市場落地,並組織團隊把多年的“乾貨”整理成書,
與視頻行業的朋友們一起探討與成長。

目錄大綱

目錄
序一
序二
序三
序四
前言
第1章OpenCV和深度學習 1
1.1 OpenCV處理流程 1
1.1.1 OpenCV庫 1
1.1.2 OpenCV深度學習應用的典型流程 3
1.2 機器學習的數學視角 5
1.2.1 機器學習和非機器學習 5
1.2.2 從人工神經網絡到深度學習 8
1.2.3 破除神秘——神經網絡是如何訓練的11
1.3 OpenCV深度學習模塊16
1.3.1 主要特性16
1.3.2 OpenCV DNN圖像分類舉例(Python) 17
1.4 本章小結19

第2章OpenCV深度學習模塊解析20
2.1 深度學習模塊分層架構總覽20
2.2 語言綁定和測試層21
2.2.1 深度學習模塊的Python語言綁定21
2.2.2 深度學習模塊的正確性測試和性能測試23
2.3 API層30
2.3.1Layer 30
2.3.2Net 32
2.3.3 35
2.4DNN 37
2.4.1 37
2.4.2 推理引擎數據對像管理43
2.4.3 推理引擎重點層解釋47
2.4.4 層的合併優化62
2.5 引擎加速層66
2.5.1 深度學習模塊支持的運算目標設備67
2.5.2 深度學習模塊支持的加速後端68
2.5.3 加速方式的選擇69
2.6 本章小結70

第3章並行計算與GPU架構71
3.1 並行計算淺談71
3.2 Intel GPU架構及其在並行計算中的應用74
3.2.1Intel GPU 74
3.2.2SIMD棗AOSSOA 82
3.2.3cl_intel_subgroupsIntel GPU 89
3.3 100

4基於Vulkan的加速實現101
4.1 初識Vulkan 101
4.2 使用Vulkan加速102
4.3 Vulkan後端加速過程解析104
4.3.1 數據對像初始化105
4.3.2 後端運算節點初始化108
4.3.3 調用後端運算節點進行前向運算111
4.3.4 Vulkan後端庫113
4.4 本章小結119

第5章基於OpenCL的加速實現120
5.1 OpenCL簡介120
5.2 如何使用OpenCL加速125
5.3 OpenCL加速詳解128
5.3.1 OpenCL API封裝129
5.3.2 DNN模塊的捲積層實現詳解132
5.3.3 ocl4dnn庫的捲積運算類詳解134
5.3.4 卷積核函數auto-tuning機制解析138
5.4 本章小結143

第6章CPU及第三方庫加速的實現144
6.1 原生CPU加速實現144
6.1.1 基於多線程技術的加速147
6.1.2 基於並行指令的加速153
6.2 Halide後端的實現157
6.2.1 Halide介紹158
6.2.2 如何啟用Halide 163
6.2.3 Halide後端的實現原理165
6.3 Intel推理引擎後端的實現171
6.3.1 Intel推理引擎介紹171
6.3.2 如何啟用推理引擎後端172
6.3.3 Intel推理引擎後端的實現原理176
6.4 本章小結185

第7章可視化工具與性能優化186
7.1 Netscope:基於Web的Caffe網絡可視化工具186
7.2 TensorBoard:助力TensorFlow程序的理解和調試188
7.2.1 圖的可視化188
7.2.2 數據的可視化191
7.2.3 調試的可視化197
7.3VTuneIntel 199
7.3.1 200
7.3.2Intel VTune 202
7.3.3VTune 211
7.4 程序優化流程總結和建議213
7.5 本章小結215

第8章支付級人臉識別項目開發實戰216
8.1 活體檢測的概念與方法216
8.2 支付級人臉識別項目流程218
8.3 基於OpenCV的支付級人臉識別項目具體實現220
8.3.1 數據準備222
8.3.2 活體檢測模型訓練230
8.3.3 支付級人臉識別系統實現238
8.4 本章小結244

第9章深度學習模塊不同場景下的應用實踐245
9.1 圖像分類245
9.1.1 圖像分類經典網絡結構245
9.1.2 GoogLeNet 247
9.1.3 圖像分類程序源碼分析249
9.1.4 圖像分類程序運行結果255
9.2 目標檢測256
9.2.1 SSD算法解析256
9.2.2 目標檢測程序源碼分析257
9.2.3 目標檢測程序運行結果260
9.3 語義分割261
9.3.1 FCN模型262
9.3.2 語義分割程序源碼分析263
9.3.3 語義分割程序運行結果267
9.4 視覺風格變換268
9.4.1 視覺風格變換模型268
9.4.2 視覺風格變換程序源碼分析269
9.4.3 視覺風格變換程序運行結果271
9.5 本章小結273
附錄AOpenCV的編譯安裝及patch開發流程274
附錄Bintel_gpu_frequency工具的安裝和使用280