《PyTorch 深度學習模型開發實戰》是中國水利水電出版社出版的人工智慧技術類中高端圖書,作者是 [日] 小川雄太郎。
基本介紹
- 書名:PyTorch深度學習模型開發實戰
- 作者:小川雄太郎
- 類別:人工智慧
- 出版社:中國水利水電出版社
- 出版時間:2022年6月
- 頁數:432 頁
- 定價:118 元
- 開本:16 開
- ISBN:9787517094159
內容簡介,作者簡介,圖書目錄,
內容簡介
人工智慧套用已經遍及各行各業,而機器學習和深度學習作為其中的重要組成部分也越來越火熱。《PyTorch深度學習模型開發實戰》就以近年來非常流行的Python 機器學可庫 PyTorch為工具,對深度學習中的遷移學習、圖像分類、物體檢測、語義分割、姿勢識別、圖像生成、異常檢測、自然語言處理以及視頻分類等各種任務進行了詳細講解及深度學習模型的編程實現。這些任務都是為幫助讀者積累實踐經驗,以便能在實際開發中靈活運用深度學習技術精挑細選出來的。讀者只要親自動手,依次對各種任務進行編程實踐,並徹底理解其中的原理,就一定能逐步掌握複雜深度學習的套用方法。
本書實現的任務內容及深度學習模型
- 遷移學習,微調:用少量的圖像數據構建深度學習模型。
- 物體檢測(SSD):對圖像中的位置和內容進行檢測。
- 語義分割(PSPNet):在像素級別上對圖像中的物體進行檢測。
- 姿勢識別OpenPose:檢測人物,並對人體各部位的連結進行識別。
- GAN(DCGAN,Self-Attention GAN):生成現實中實際存在的圖像。
- 異常檢測(AnoGAN,Efficient GAN):用GAN對圖像中的異常圖像進行檢測。
- 自然語言處理(Transformer,BERT):對文本數據進行情感分析。
- 視頻分類(3DCNN,ECO):對人物動作的視頻數據進行分類。
《PyTorch深度學習模型開發實戰》 內容豐富全面,講解通俗易懂,特別適合作為有一定基礎的AI工程師提升技能、中高級機器學習/深度學習工程師鞏固相關基礎的參考書籍。
作者簡介
小川雄太郎
東京大學理學博士,曾在東京大學研究生院從事腦功能測量及計算論的神經科學研究。獲取博士學位後,曾擔任東京大學特聘研究員。現任職於日本電通國際信息服務公司總部 AI 技術開發部,主要負責以深度學習為主的機器學習相關技術的研究開發和技術支持。另外,他還是早稻田大學全球教育中心的兼職講師和日本深度學習協會會員。在業餘時間開展了多場人工智慧相關講座並撰寫了多種人工智慧相關書籍。
圖書目錄
第 1 章 圖像分類與遷移學習(VGG)
1.1 已完成訓練的 VGG 模型的使用方法
1.1.1 ImageNet 數據集與 VGG-16 模型
1.1.2 資料夾的準備
1.1.3 準備工作
1.1.4 軟體包的導入及 PyTorch 版本的確認
1.1.5 VGG-16 已完成訓練模型的載入
1.1.6 輸入圖片的預處理類的編寫
1.1.7 根據輸出結果預測標籤的後處理類的編寫
1.1.8 使用已完成學習的 VGG 模型對手頭上的圖片進行預測
1.2 使用 PyTorch 進行深度學習的實現流程
1.3 遷移學習的編程實現
1.3.1 遷移學習
1.3.2 準備資料夾
1.3.3 準備工作
1.3.4 實現代碼的初始設定
1.3.5 創建 Dataset
1.3.6 創建 DataLoader
1.3.7 創建網路模型
1.3.8 定義損失函式
1.3.9 設定最最佳化算法
1.3.10 學習和驗證的施行
1.4 亞馬遜 AWS 的 GPU 雲計算伺服器的使用方法
1.4.1 使用雲伺服器的理由
1.4.2 創建 AWS 賬號
1.4.3 AWS 管理控制台
1.4.4 AWS 的 EC2 虛擬主機的創建方法
1.4.5 EC2 伺服器的訪問與 Anaconda 的操作
1.5 微調的實現
1.5.1 微調
1.5.2 準備資料夾及事先準備
1.5.3 創建 Dataset 和 DataLoader
1.5.4 創建網路模型
1.5.5 定義損失函式
1.5.6 設定最最佳化算法
1.5.7 學習和驗證的施行
1.5.8 保存和讀取訓練完畢的網路
小結
第 2 章 物體檢測(SSD)
2.1 物體檢測概述
2.1.1 物體檢測概要
2.1.2 物體檢測任務的輸入與輸出
2.1.3 VOC 數據集
2.1.4 基於 SSD 實現物體檢測的流程
2.2 Dataset 的實現
2.2.1 重溫在 PyTorch 中實現深度學習的流程
2.2.2 資料夾的準備
2.2.3 準備工作
2.2.4 創建圖像數據、標註數據的檔案路徑列表
2.2.5 將 xml 格式的標註數據轉換為列表
2.2.6 創建實現圖像與標註的預處理 DataTransform 類
2.2.7 創建 Dataset
2.3 DataLoader 的實現
2.4 網路模型的實現
2.4.1 SSD 網路模型概要
2.4.2 vgg 模組的實現
2.4.3 extras 模組的實現
2.4.4 loc 模組與 conf 模組的實現
2.4.5 L2Norm 層的實現
2.4.6 Default Box 的實現
2.4.7 SSD 類的實現
2.5 正向傳播函式的實現
2.5.1 decode 函式的實現
2.5.2 Non-Maximum Suppression 函式的實現
2.5.3 Detect 類的實現
2.5.4 SSD 模組的實現
2.6 損失函式的實現
2.6.1 運用了 jaccard 係數的 match 函式的行為
2.6.2 難分樣本挖掘
2.6.3 SmoothL1Loss 函式與交叉熵誤差函式
2.6.4 SSD 損失函式 MultiBoxLoss 類的實現
2.7 學習和檢測的實現
2.7.1 程式的實現
2.7.2 創建 DataLoader
2.7.3 創建網路模型
2.7.4 定義損失函式與設定最最佳化算法
2.7.5 執行學習與檢測
2.8 推測的施行
小結
第 3 章 語義分割(PSPNet)
3.1 語義分割概述
3.1.1 什麼是語義分割
3.1.2 語義分割的輸入和輸出
3.1.3 VOC 數據集
3.1.4 使用 PSPNet 進行物體檢測的流程
3.2 Dataset 和 DataLoader 的實現
3.2.1 準備資料夾
3.2.2 創建指向圖像數據、標註數據的檔案路徑列表
3.2.3 創建 Dataset
3.2.4 創建 DataLoader
3.3 PSPNet 網路的構建與實現
3.3.1 構建 PSPNet 的模組
3.3.2 PSPNet 類的實現
3.4 Feature 模組的說明及編程實現(ResNet)
3.4.1 Feature 模組的子網路結構
3.4.2 FeatureMap_convolution 子網路
3.4.3 FeatureMap_convolution 的實現
3.4.4 ResidualBlockPSP 子網路
3.4.5 bottleNeckPSP 與 bottleNeckIdentifyPSP
3.5 Pyramid Pooling 模組的說明及編程實現
3.5.1 Pyramid Pooling 模組的子網路結構
3.5.2 PyramidPooling 類的實現
3.6 Decoder 模組和 AuxLoss 模組的說明及編程實現
3.6.1 Decoder 模組和 AuxLoss 模組的結構
3.6.2 Decoder 模組和 AuxLoss 模組的實現
3.7 用微調進行學習和檢測
3.7.1 數據的準備
3.7.2 學習和驗證的實現
3.7.3 利用調度器調整每輪 epoch 的學習率
3.8 語義分割的推測
3.8.1 準備
3.8.2 推測
小結
第 4 章 姿勢識別(OpenPose)
4.1 姿勢識別與 OpenPose 概述
4.1.1 姿勢識別概述
4.1.2 MS COCO 數據集與姿勢識別的標註數據
4.1.3 使用 OpenPose 進行姿勢識別的流程
4.2.1 掩碼數據概述
4.2.2 資料夾的準備
4.2 Dataset 和 DataLoader 的實現
4.2.1 掩碼數據概述
4.2.2 資料夾的準備
4.2.3 創建圖像數據、標註數據、掩碼數據的檔案路徑列表
4.2.4 確認掩碼數據的執行結果
4.2.5 創建圖像的預處理類
4.2.6 創建作為訓練數據的正確答案信息的標註數據
4.2.7 創建 Dataset
4.2.8 創建 DataLoader
4.3 OpenPose 網路的構建與實現
4.3.1 組成 OpenPose 的模組
4.3.2 OpenPoseNet 的實現
4.4 Feature 模組和 Stage 模組的結構與實現
4.4.1 Feature 模組的結構與實現
4.4.2 Stage 模組的 block 的結構與實現
4.4.3 確認執行結果
4.5 利用 tensorboardX 實現網路的可視化
4.5.1 tensorboardX
4.5.2 創建 graph 檔案
4.6 OpenPose 的學習
4.6.1 學習的注意點
4.6.2 創建 DataLoader 和 Network
4.6.3 定義損失函式
4.6.4 開始學習
4.7 OpenPose 的推測
小結
第 5 章 基於GAN 的圖像生成(DCGAN、Self-Attention GAN)
5.1 使用 GAN 生成圖像的原理及 DCGAN 的實現
5.1.1 資料夾的準備
5.1.2 生成器的原理
5.1.3 生成器的實現
5.1.4 判別器的原理
5.1.5 判別器的實現
5.2 DCGAN 的損失函式、學習、生成的實現
5.2.1 GAN 的損失函式
5.2.2 DataLoader 的實現
5.2.3 DCGAN 的學習
5.3 Self-Attention GAN 概要
5.3.1 傳統 GAN 中的問題
5.3.2 Self-Attention 的引入
5.3.3 1×1 卷積(逐點卷積)
5.3.4 頻譜歸一化
5.4 Self-Attention GAN 的學習和生成的實現
5.4.1 Self-Attention 模組的實現
5.4.2 生成器 G 的實現
5.4.3 判別器 D 的實現
5.4.4 DataLoader 的實現
5.4.5 網路的初始化和實施訓練
小結
第 6 章 基於GAN 的異常檢測(AnoGAN、Efficient GAN)
6.1 利用 GAN 進行異常圖像檢測的原理
6.1.1 資料夾的準備
6.1.2 使用 GAN 檢測異常圖像的必要性
6.1.3 AnoGAN 概要
6.2 AnoGAN 的實現和異常檢測的實施
6.2.1 DCGAN 的學習
6.2.2 AnoGAN 中生成噪聲 z 的計算方法
6.2.3 AnoGAN 的損失函式
6.2.4 AnoGAN 學習的實現與異常檢測的實施
6.3 Efficient GAN 概要
6.3.1 Efficient GAN
6.3.2 編碼器 E 的製作方法以及為何最後製作編碼器不好的理由
6.3.3 同時製作編碼器 E 和 GAN 的方法
6.4 Efficient GAN 的實現和異常檢測的實施
6.4.1 Generator 和 Discriminator 的實現
6.4.2 Encoder 的實現
6.4.3 DataLoader 的實現
6.4.4 Efficient GAN 的學習
6.4.5 使用 Efficient GAN 進行異常檢測
小結
第 7 章 基於自然語言處理的情感分析(Transformer)
7.1 語素分析的實現(Janome、MeCab + NEologd)
7.1.1 資料夾的準備
7.1.2 機器學習中自然語言處理的流程
7.1.3 基於 Janome 的日文分詞
7.1.4 基於 MeCab 和 NEologd 的日文分詞
7.2 利用 torchtext 實現 Dataset 和 DataLoader
7.2.1 安裝 torchtext
7.2.2 需要使用的數據
7.2.3 預處理和分詞函式的實現
7.2.4 文章數據的讀取
7.2.5 單詞的數值化
7.2.6 DataLoader 的構建
7.3 用向量表示單詞的原理(word2vec、fastText)
7.3.1 基於 word2vec 的單詞向量化方法
7.3.2 基於 word2vec 的單詞向量化方法 :CBOW
7.3.3 基於 word2vec 的單詞向量化方法 :Skip-gram
7.3.4 基於 fastText 的單詞向量化方法
7.4 word2vec、fastText 中已完成訓練的日語模型的使用方法
7.4.1 準備工作
7.4.2 使用訓練完畢的日語 word2vec 模型編程
7.4.3 使用訓練完畢的日語 fastText 模型編程
7.5 IMDb 的 DataLoader 的實現
7.5.1 IMDb 數據的下載
7.5.2 將 IMDb 數據集轉換為 tsv 格式
7.5.3 定義預處理和分詞處理函式
7.5.4 創建 DataLoader
7.5.5 創建辭彙表
7.6 Transformer 的實現(分類任務用)
7.6.1 傳統的自然語言處理與 Transformer 的關係
7.6.2 Transformer 的網路結構
7.6.3 Embedder 模組
7.6.4 PositionalEncoder 模組
7.6.5 TransformerBlock 模組
7.6.6 ClassificationHead 模組
7.6.7 Transfomer 的實現
7.7 實現 Transformer 的學習、推測及判定依據的可視化
7.7.1 準備 DataLoader 和 Transformer 模型
7.7.2 損失函式與最最佳化算法
7.7.3 訓練與驗證函式的編寫和執行
7.7.4 基於測試數據的推測與判斷依據的可視化
7.7.5 通過 Attention 的可視化尋找判斷依據
小結
第 8 章 基於自然語言處理的情感分析(BERT)
8.1 BERT 的原理
8.1.1 BERT 模型結構概要
8.1.2 BERT 中的兩種預先學習的語言任務
8.1.3 BERT 的三大特點
8.2 BERT 的實現
8.2.1 需要使用的數據
8.2.2 讀取 BERT_Base 的網路設定檔案
8.2.3 定義 BERT 中使用的 LayerNormalization 層
8.2.4 Embeddings 模組的實現
8.2.5 BertLayer 模組
8.2.6 BertLayer 模組的重複部分
8.2.7 BertPooler 模組
8.2.8 確認執行結果
8.2.9 連線所有的模組組成 BERT 模型
8.3 利用 BERT 進行向量表現的比較(bank: 銀行與 bank: 堤壩)
8.3.1 載入完成學習的模型
8.3.2 BERT 用 Tokenizer 的實現
8.3.3 對意思隨上下文變化的 bank 的單詞向量進行求解
8.3.4 附錄 :預先學習任務用模組的實現
8.4 實現 BERT 的學習、推測及判定依據的可視化
8.4.1 讀入 IMDb 數據並創建 DataLoader(使用 BERT 的 Tokenizer)
8.4.2 構建用於情感分析的 BERT 模型
8.4.3 設定面向 BERT 的微調操作
8.4.4 實施學習和驗證
8.4.5 Attention 的可視化
小結
第 9 章 視頻分類(3DCNN、ECO)
9.1 針對視頻數據的深度學習及 ECO 概要
9.1.1 使用深度學習處理數據時的注意事項
9.1.2 使用深度學習處理視頻數據的方法
9.2 2D Net 模組(Inception-v2)的實現
9.2.1 ECO 的 2D Net 模組概要
9.2.2 BasicConv 模組的實現
9.2.3 InceptionA ~ InceptionC 模組的實現
9.3 3D Net 模組(3DCNN)的實現
9.3.1 ECO 的 3D Net 模組概要
9.3.2 Resnet_3D_3 的實現
9.3.3 Resnet_3D_4 的實現
9.3.4 Resnet_3D_5 的實現
9.4 為 Kinetics 視頻數據集編寫 DataLoader
9.4.1 Kinetics-400 視頻數據的下載
9.4.2 將視頻數據分割為圖像數據
9.4.3 從 Kinetics 視頻數據集中創建 ECO 用 DataLoader
9.5 ECO 模型的實現及視頻分類的推測
9.5.1 創建 Kinetics 數據集的 DataLoader
9.5.2 ECO 模型的實現
9.5.3 已完成學習的模型的載入
9.5.4 推測(視頻數據的分類處理)
小結
後記