內容簡介
在人工智慧的浩瀚星空中,深度學習猶如一顆耀眼的明星,引領著計算機視覺技術的發展。《PyTorch深度學習與計算機視覺實踐》帶領讀者領略深度學習在計算視覺領域的魅力,詳解使用PyTorch 2.0進行計算機視覺套用實戰的技巧。本書配套示例源碼、PPT課件。
《PyTorch深度學習與計算機視覺實踐》共分15章,內容包括深度學習與計算機視覺、PyTorch 2.0深度學習環境搭建、從0開始PyTorch 2.0、一學就會的深度學習基礎算法、基於PyTorch卷積層的MNIST分類實戰、PyTorch數據處理與模型可視化、殘差神經網路實戰、基於OpenCV與PyTorch的人臉識別實戰、詞映射與循環神經網路、注意力機制與注意力模型詳解、基於注意力機制的圖像識別實戰、基於Diffusion Model的從隨機到可控的圖像生成實戰、基於注意力的單目攝像頭目標檢測實戰、基於注意力與Unet的全畫幅適配圖像全景分割實戰、基於預訓練模型的可控零樣本圖像遷移合成實戰。
《PyTorch深度學習與計算機視覺實踐》既適合深度學習初學者、PyTorch初學者、PyTorch深度學習計算機視覺套用開發人員閱讀,也可作為高等院校或高職高專計算機技術、人工智慧、智慧型科學與技術、數據科學與大數據技術等相關專業的教材。
作者簡介
圖書目錄
目 錄
第1章 深度學習與計算機視覺 1
1.1 深度學習的歷史與發展 1
1.1.1 深度學習的起源 2
1.1.2 深度學習的發展脈絡 3
1.1.3 為什麼是PyTorch 2.0 3
1.2 計算機視覺之路 4
1.2.1 計算機視覺的基本概念 4
1.2.2 計算機視覺深度學習的主要任務 5
1.2.3 計算機視覺中的深度學習方法 6
1.2.4 深度學習在計算機視覺中的套用 7
1.3 本章小結 8
第2章 PyTorch 2.0深度學習環境搭建 9
2.1 環境搭建1:安裝Python 9
2.1.1 Miniconda的下載與安裝 9
2.1.2 PyCharm的下載與安裝 12
2.1.3 Python代碼小練習:計算softmax函式 16
2.2 環境搭建2:安裝PyTorch 2.0 17
2.2.1 NVIDIA 10/20/30/40系列顯示卡選擇的GPU版本 17
2.2.2 PyTorch 2.0 GPU NVIDIA運行庫的安裝 17
2.2.3 Hello PyTorch 19
2.3 Unet圖像降噪—第一個深度學習項目實戰 20
2.3.1 MNIST數據集的準備 20
2.3.2 MNIST數據集特徵介紹 22
2.3.3 Hello PyTorch 2.0—模型的準備和介紹 23
2.3.4 對目標的逼近—模型的損失函式與最佳化函式 25
2.3.5 Let’s do it!—基於深度學習的模型訓練 26
2.4 本章小結 28
第3章 從0開始PyTorch 2.0 30
3.1 實戰MNIST手寫體識別 30
3.1.1 數據圖像的獲取與標籤的說明 30
3.1.2 實戰基於PyTorch 2.0的手寫體識別模型 32
3.2 PyTorch 2.0常用函式解析與使用指南 36
3.2.1 數據載入和預處理 36
3.2.2 張量的處理 37
3.2.3 模型的參數與初始化操作 40
3.3 本章小結 42
第4章 一學就會的深度學習基礎算法 43
4.1 反向傳播神經網路的發展歷程 43
4.2 反向傳播神經網路的兩個基礎算法詳解 46
4.2.1 最小二乘法 46
4.2.2 隨機梯度下降算法 49
4.2.3 最小二乘法的梯度下降算法及其Python實現 52
4.3 反饋神經網路反向傳播算法介紹 58
4.3.1 深度學習基礎 58
4.3.2 鏈式求導法則 59
4.3.3 反饋神經網路原理與公式推導 60
4.3.4 反饋神經網路原理的激活函式 65
4.3.5 反饋神經網路原理的Python實現 66
4.4 本章小結 70
第5章 基於PyTorch卷積層的MNIST分類實戰 71
5.1 卷積運算的基本概念 71
5.1.1 基本卷積運算示例 72
5.1.2 PyTorch中卷積函式實現詳解 73
5.1.3 池化運算 76
5.1.4 softmax激活函式 77
5.1.5 卷積神經網路原理 78
5.2 基於卷積的MNIST手寫體分類 80
5.2.1 數據的準備 81
5.2.2 模型的設計 81
5.2.3 基於卷積的MNIST分類模型 82
5.3 PyTorch的深度可分離膨脹卷積詳解 83
5.3.1 深度可分離卷積的定義 84
5.3.2 深度的定義以及不同計算層待訓練參數的比較 86
5.3.3 膨脹卷積詳解 86
5.3.4 PyTorch中基於深度可分離膨脹卷積的MNIST手寫體識別 87
5.4 本章小結 89
第6章 PyTorch數據處理與模型可視化 90
6.1 用於自定義數據集的torch.utils.data工具箱的用法 91
6.1.1 使用torch.utils.data. Dataset封裝自定義數據集 91
6.1.2 改變數據類型的Dataset類中的transform詳解 93
6.1.3 批量輸出數據的DataLoader類詳解 97
6.2 基於tensorboardX的訓練可視化展示 99
6.2.1 PyTorch 2.0模型可視化組件tensorboardX的安裝 99
6.2.2 tensorboardX可視化組件的使用 100
6.2.3 tensorboardX對模型訓練過程的展示 102
6.3 本章小結 105
第7章 殘差神經網路實戰 106
7.1 ResNet的原理與程式設計基礎 107
7.1.1 ResNet誕生的背景 107
7.1.2 不要重複造輪子—PyTorch 2.0中的模組 110
7.1.3 ResNet殘差模組的實現 111
7.1.4 ResNet的實現 113
7.2 ResNet實戰:CIFAR-10數據集分類 116
7.2.1 CIFAR-10數據集簡介 116
7.2.2 基於ResNet的CIFAR-10數據集分類 119
7.3 本章小結 121
第8章 基於OpenCV與PyTorch的人臉識別實戰 122
8.1 找到人臉—人臉識別數據集的建立 123
8.1.1 LFW數據集簡介 123
8.1.2 Dlib庫簡介 124
8.1.3 OpenCV簡介 125
8.1.4 使用Dlib檢測人臉位置 125
8.1.5 使用Dlib和OpenCV製作人臉檢測數據集 129
8.1.6 基於人臉定位製作適配深度學習的人臉識別數據集地址路徑 131
8.2 人臉是誰—基於深度學習的人臉識別模型基本架構 135
8.2.1 人臉識別的基本模型SiameseModel 135
8.2.2 基於PyTorch 2.0的SiameseModel的實現 136
8.2.3 人臉識別的Contrastive Loss詳解與實現 137
8.2.4 基於PyTorch 2.0的人臉識別模型 138
8.3 本章小結 141
第9章 詞映射與循環神經網路 142
9.1 櫻桃-紅色+紫色=?—有趣的詞映射 142
9.1.1 什麼是詞映射 143
9.1.2 PyTorch中embedding的處理函式詳解 144
9.2 循環神經網路與情感分類實戰 145
9.2.1 基於循環神經網路的中文情感分類實戰的準備工作 145
9.2.2 基於循環神經網路的中文情感分類實戰 147
9.3 循環神經網路理論講解 150
9.3.1 什麼是GRU 150
9.3.2 單向不行,那就雙向 152
9.4 本章小結 153
第10章 注意力機制與注意力模型詳解 154
10.1 注意力機制與模型詳解 154
10.1.1 注意力機制詳解 155
10.1.2 自注意力機制 156
10.1.3 ticks和LayerNormalization 162
10.1.4 多頭注意力 163
10.2 注意力機制的套用實踐—編碼器 166
10.2.1 編碼器總體架構 166
10.2.2 回到輸入層—初始詞向量層和位置編碼器層 167
10.2.3 前饋層的實現 170
10.2.4 編碼器的實現 171
10.3 實戰編碼器—自然語言轉換模型 174
10.3.1 漢字拼音數據集處理 174
10.3.2 漢字拼音轉換模型的確定 176
10.3.3 模型訓練部分的編寫 179
10.3.4 補充說明 181
10.4 本章小結 182
第11章 開局一幅圖—基於注意力機制的圖像識別實戰 183
11.1 基於注意力的圖像識別模型Vision Transformer 183
11.1.1 Vision Transformer 整體結構 183
11.1.2 Patch Embedding 185
11.1.3 Transformer Encoder層 187
11.1.4 完整的Vision Transformer架構設計 190
11.2 基於Vision Transformer的mini_ImageNet實戰 191
11.2.1 mini_ImageNet數據集的簡介與下載 191
11.2.2 mini_ImageNet數據集的處理—基於PyTorch 2.0專用數據處理類 193
11.2.3 Vision Transformer模型設計 195
11.2.4 Vision Transformer模型的訓練 196
11.2.5 基於現有Vision Transformer包的模型初始化 198
11.3 提升Vision Transformer模型準確率的一些技巧 198
11.3.1 模型的可解釋性—注意力熱圖的可視化實現 198
11.3.2 PyTorch 2.0中圖像增強方法詳解 201
11.4 本章小結 206
第12章 內容全靠編—基於Diffusion Model的從隨機到可控的圖像生成實戰 207
12.1 Diffusion Model實戰MNIST手寫體生成 207
12.1.1 Diffusion Model的傳播流程 208
12.1.2 直接運行的DDPM的模型訓練實戰 209
12.1.3 DDPM的基本模組說明 212
12.1.4 DDPM加噪與去噪詳解 215
12.1.5 DDPM的損失函式 220
12.2 可控的Diffusion Model生成實戰—指定數字生成MNIST手寫體 221
12.2.1 Diffusion Model可控生成的基礎—特徵融合 221
12.2.2 Diffusion Model可控生成的代碼實戰 221
12.3 加速的Diffusion Model生成實戰—DDIM 223
12.3.1 直接運行的少步驟的DDIM手寫體生成實戰 224
12.3.2 DDIM的預測傳播流程 226
12.4 本章小結 228
第13章 認清物與位—基於注意力的單目攝像頭目標檢測實戰 230
13.1 目標檢測基本概念詳解 231
13.1.1 基於注意力機制的目標檢測模型DETR 231
13.1.2 目標檢測基本概念(注意力機制出現之前) 232
13.1.3 目標檢測基本概念(注意力機制出現之後) 233
13.2 基於注意力機制的目標檢測模型DETR詳解 237
13.2.1 基於預訓練DETR模型實現的實用化目標檢測網頁 237
13.2.2 基於注意力的目標檢測模型DETR 239
13.3 DETR模型的損失函式 243
13.3.1 一看就會的二分圖匹配算法 243
13.3.2 基於二分圖匹配算法的目標檢測的最佳組合 245
13.3.3 DETR中的損失函式 250
13.3.4 解決batch中tensor維度不一致的打包問題 253
13.4 基於DETR的目標檢測自定義數據集實戰 254
13.4.1 VOC數據集簡介與數據讀取 254
13.4.2 基於PyTorch中的Dataset的數據輸入類 257
13.4.3 基於DETR的自定義目標檢測實戰 259
13.5 本章小結 261
第14章 凝思辨真顏—基於注意力與Unet的全畫幅適配圖像全景分割實戰 262
14.1 圖像分割的基本形式與數據集處理 262
14.1.1 圖像分割的套用 263
14.1.2 基於預訓練模型的圖像分割預測示例 264
14.2 基於注意力與Unet的圖像分割模型SwinUnet 267
14.2.1 基於全畫幅注意力的 Swin Transformer詳解 268
14.2.2 經典圖像分割模型Unet詳解 270
14.3 基於SwinUnet的圖像分割實戰 271
14.3.1 圖像分割的label圖像處理 271
14.3.2 圖像分割的VOC數據集處理 274
14.3.3 圖像分割損失函式DiceLoss詳解 276
14.3.4 基於SwinUnet的圖像分割實戰 278
14.4 本章小結 279
第15章 誰還用GAN—基於預訓練模型的可控零樣本圖像遷移合成實戰 281
15.1 基於預訓練模型的可控零樣本圖像風格遷移實戰 281
15.1.1 實戰基於預訓練模型的可控零樣本圖像風格遷移 282
15.1.2 詳解可控零樣本圖像風格遷移模型 283
15.2 基於預訓練模型的零樣本圖像風格遷移實戰 284
15.2.1 Vision Transformer架構的DINO模型 285
15.2.2 風格遷移模型Splicing詳解 287
15.2.3 逐行講解風格遷移模型Splicing的損失函式 291
15.3 本章小結 296