深度學習是新一代人工智能所使用的主要技術(shù)。本書深入淺出地講解了深度學習的相關(guān)技術(shù),包括深度學習編程基礎(chǔ)、目標分類、目標檢測、圖像分割、生成對抗網(wǎng)絡(luò)等。對每種技術(shù),本書均從原理和程序?qū)崿F(xiàn)兩個方面進行講解。在原理方面,講解算法和技術(shù)的相關(guān)背景、主要算法思想和原理;在程序?qū)崿F(xiàn)方面,從數(shù)據(jù)準備、神經(jīng)網(wǎng)絡(luò)模型實現(xiàn)、損失函數(shù)實現(xiàn)、整體訓練流程和效果展示五部分對算法的實現(xiàn)進行具體介紹,幫助讀者深入了解算法的細節(jié),積累相關(guān)實踐經(jīng)驗。
本書是《深度學習與人工智能》的配套用書,適合深度學習領(lǐng)域的初學者,以及高校高年級本科生和研究生閱讀學習。
本書各章節(jié)的源代碼和實驗數(shù)據(jù)集可通過本書的GitHub主頁下載,以供讀者自主練習。
本書作者是大數(shù)據(jù)與人工智能領(lǐng)域的權(quán)威專家,技術(shù)背景強大,在學術(shù)界和工業(yè)界均取得了顯著成就,多次獲得國際獎項,研究成果廣泛受到媒體關(guān)注。
本書按照知識由淺入深、循序漸進的規(guī)律編寫而成。根據(jù)深度學習技術(shù)的特點,將內(nèi)容劃分為數(shù)據(jù)準備、神經(jīng)網(wǎng)絡(luò)模型實現(xiàn)、損失函數(shù)實現(xiàn)、整體訓練流程和效果展示五部分。邏輯清楚,可操作性強、更易理解。
本書是一本學習深度學習與人工智能實戰(zhàn)指南,書中給出了核心算法和技術(shù)的原理講解+真實完整的項目案例+可下載的源代碼和實驗數(shù)據(jù)集。
前 言
本書按照知識由淺入深、循序漸進的規(guī)律編寫而成。內(nèi)容分為三大部分,第一部分是Python和PyTorch編程基礎(chǔ),介紹常用的函數(shù)及其用法;第二部分是初級深度學習算法與技術(shù),含基礎(chǔ)卷積神經(jīng)網(wǎng)絡(luò)的實現(xiàn),目標識別、人臉表情識別等實戰(zhàn);第三部分是高級深度學習算法和技術(shù),含孿生神經(jīng)網(wǎng)絡(luò)、度量學習、蒸餾學習、目標檢測、圖像分割、圖像生成等技術(shù)及實戰(zhàn)。本書的附錄還提供了常用PyTorch函數(shù)速查手冊。
本書根據(jù)深度學習技術(shù)的特點,將內(nèi)容劃分為數(shù)據(jù)準備、神經(jīng)網(wǎng)絡(luò)模型實現(xiàn)、損失函數(shù)實現(xiàn)、整體訓練流程和效果展示五部分。這種章節(jié)內(nèi)容安排方式邏輯清楚,可操作性強、更易理解。
本書是一本實戰(zhàn)性較強的深度學習書籍,書中內(nèi)容基于作者多年來的理論與實踐積累。感謝以下人員對本書的完成所提供的巨大幫助:
1)隨著三年深度學習上機課的開展,助教杜凱、韓詩陽、鄧斌權(quán)積累了各章節(jié)的實驗素材和代碼。
2)每章的實驗內(nèi)容的材料整理主要由陳承功和鄧斌權(quán)負責(兩者在此部分的貢獻占比分別為70%和30%)。
本書的主要定位是深度學習的實踐參考書,但也包含了對相關(guān)算法和技術(shù)的原理講解。本書是將于2024年出版的《深度學習與人工智能》的配套用書。
本書各章節(jié)的源代碼和實驗數(shù)據(jù)集已對外公開,讀者可通過本書的GitHub主頁下載、自主練習。主頁地址為:DLBook.github.jo
本書的出版,得到了河南大學教材建設(shè)基金項目和河南大學研究生教育創(chuàng)新和質(zhì)量提升工程項目的支持,在此致謝。
張重生
2023年12月1日
張重生,男,1982年9月生,博士,河南大學計算機與信息工程學院教授、博士生導師。 2012年博士畢業(yè)于法國國家信息與自動化研究所(INRIA)。研究方向為大數(shù)據(jù)、人工智能。主持20余項科研項目(含國家自然科學基金項目1項、人文社會科學研究一般項目1項),在AAAI、SIGKDD頂級國際會議及知名期刊上發(fā)表學術(shù)論文近50篇,獲得法國數(shù)據(jù)挖掘會議EGC 2010最佳論文獎及獎金1500歐元。出版著譯作6部,作為第一發(fā)明人申請/授權(quán)近20項國家發(fā)明專利。曾作為主要成員之一執(zhí)筆《河南省大數(shù)據(jù)產(chǎn)業(yè)發(fā)展引導目錄》、《河南省國家大數(shù)據(jù)綜合試驗區(qū)實施方案》并由河南省人民政府頒布實施。主研“AI綴多多”軟件,實現(xiàn)了人工智能批量綴合甲骨,在古文字與人工智能結(jié)合方面取得了率先突破,受到新華社、河南衛(wèi)視、河南日報、大河報、鄭州晚報、中國青年報、環(huán)球網(wǎng)、騰訊網(wǎng)等媒體的廣泛報道,其作為特邀嘉賓參與錄制的CCTV-10《透視新科技》“智破甲骨之謎”節(jié)目于2023年11月5日在CCTV-10正式播出。
前言
第1章 張量運算及圖像處理基礎(chǔ)1
1.1 張量與張量運算1
1.1.1 張量的概念1
1.1.2 張量的基本屬性2
1.1.3 張量生成4
1.1.4 張量維度和索引7
1.1.5 張量之間的運算11
1.2 圖像處理的基礎(chǔ)操作14
1.2.1 PIL圖像處理包簡介15
1.2.2 常見的圖像處理操作15
第2章 深度學習編程基礎(chǔ)21
2.1 卷積神經(jīng)網(wǎng)絡(luò)的基本概念和常用函數(shù)21
2.1.1 卷積層21
2.1.2 池化層23
2.1.3 全連接層23
2.1.4 激活函數(shù)24
2.1.5 PyTorch中的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)/模型構(gòu)建方法24
2.2 PyTorch中的數(shù)據(jù)處理操作26
2.2.1 PyTorch自帶的數(shù)據(jù)集使用26
2.2.2 自定義數(shù)據(jù)集的使用29
2.2.3 PyTorch中的數(shù)據(jù)預(yù)處理模塊transforms31
2.3 PyTorch中的損失函數(shù)使用32
2.4 PyTorch中的優(yōu)化器使用33
2.4.1 優(yōu)化器33
2.4.2 學習率調(diào)整35
2.5 PyTorch中模型訓練的整體流程35
第3章 簡單的卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)40
3.1 LeNet-5卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)40
3.1.1 數(shù)據(jù)準備40
3.1.2 LeNet-5神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)/模型定義42
3.1.3 wandb可視化工具43
3.1.4 整體訓練流程44
3.1.5 效果展示46
3.2 AlexNet卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)46
3.2.1 數(shù)據(jù)準備46
3.2.2 AlexNet神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)/模型定義48
3.2.3 整體訓練流程50
3.2.4 效果展示50
第4章 基于深度學習的簡單目標識別51
4.1 基于VGG骨干網(wǎng)絡(luò)的目標分類51
4.1.1 VGG介紹51
4.1.2 VGG16網(wǎng)絡(luò)實現(xiàn)52
4.1.3 基于VGG16進行CIFAR數(shù)據(jù)集分類54
4.2 基于ResNet骨干網(wǎng)絡(luò)的目標分類55
4.2.1 ResNet神經(jīng)網(wǎng)絡(luò)的設(shè)計原理55
4.2.2 ResNet-18神經(jīng)網(wǎng)絡(luò)模型實現(xiàn)56
4.2.3 基于ResNet-18的目標分類60
第5章 基于深度學習的人臉表情識別61
5.1 人臉表情數(shù)據(jù)準備61
5.2 基于ResNet神經(jīng)網(wǎng)絡(luò)的人臉表情識別64
5.2.1 網(wǎng)絡(luò)定義64
5.2.2 整體訓練流程65
第6章 孿生神經(jīng)網(wǎng)絡(luò)及人臉驗證實戰(zhàn)66
6.1 孿生神經(jīng)網(wǎng)絡(luò)原理66
6.2 基于孿生神經(jīng)網(wǎng)絡(luò)的人臉驗證實戰(zhàn)68
6.2.1 數(shù)據(jù)準備68
6.2.2 孿生神經(jīng)網(wǎng)絡(luò)實現(xiàn)70
6.2.3 損失函數(shù)實現(xiàn)72
6.2.4 整體訓練流程72
6.2.5 效果展示74
第7章 CosFace損失函數(shù)原理及人臉識別實戰(zhàn)76
7.1 CosFace76
7.2 基于CosFace的人臉識別實戰(zhàn)78
7.2.1 數(shù)據(jù)準備78
7.2.2 損失計算79
7.2.3 整體訓練流程80
7.2.4 效果展示82
第8章 蒸餾學習原理及實戰(zhàn)84
8.1 知識蒸餾原理84
8.1.1 蒸餾網(wǎng)絡(luò)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)84
8.1.2 蒸餾學習過程85
8.2 知識蒸餾實戰(zhàn)86
8.2.1 訓練學生模型86
8.2.2 訓練教師模型89
8.2.3 蒸餾學習的損失函數(shù)89
8.2.4 蒸餾學習過程90
8.2.5 效果展示92
第9章 Faster R-CNN目標檢測算法原理及實戰(zhàn)93
9.1 Faster R-CNN目標檢測算法原理93
9.1.1 Faster R-CNN的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)93
9.1.2 Faster R-CNN的目標矩陣構(gòu)造94
9.1.3 Faster R-CNN的損失函數(shù)設(shè)計95
9.1.4 Faster R-CNN的整體工作流程96
9.2 Faster R-CNN目標檢測實戰(zhàn)97
9.2.1 數(shù)據(jù)準備97
9.2.2 損失定義101
9.2.3 Faster R-CNN的神經(jīng)網(wǎng)絡(luò)模型實現(xiàn)103
9.2.4 整體訓練流程118
9.2.5 效果展示121
第10章 YOLO v3目標檢測算法原理及實戰(zhàn)125
10.1 YOLO v3目標檢測算法原理125
10.1.1 YOLO v3神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)125
10.1.2 YOLO v3目標矩陣構(gòu)造方法126
10.1.3 YOLO v3損失函數(shù)設(shè)計128
10.2 YOLO v3目標檢測實戰(zhàn)129
10.2.1 數(shù)據(jù)準備130
10.2.2 YOLO v3神經(jīng)網(wǎng)絡(luò)實現(xiàn)/模型定義134
10.2.3 損失定義138
10.2.4 整體訓練流程145
10.2.5 效果展示148
第11章 FCN圖像分割算法原理及實戰(zhàn)156
11.1 FCN圖像分割算法原理156
11.2 FCN圖像分割實戰(zhàn)158
11.2.1 數(shù)據(jù)準備158
11.2.2 FCN的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)/模型定義159
11.2.3 整體訓練流程162
11.2.4 效果展示166
第12章 U-Net圖像分割算法原理及實戰(zhàn)168
12.1 U-Net圖像分割算法原理168
12.2 基于U-Net的圖像分割實戰(zhàn)170
12.2.1 U-Net的模型定義/神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)170
12.2.2 U-Net的損失函數(shù)/Dice損失173
12.2.3 整體訓練流程174
12.2.4 效果展示179
第13章 DCGAN生成對抗網(wǎng)絡(luò)原理及其圖像生成實戰(zhàn)180
13.1 DCGAN生成對抗網(wǎng)絡(luò)原理180
13.1.1 DCGAN生成器模型180
13.1.2 DCGAN的判別器模型182
13.1.3 DCGAN的損失函數(shù)183
13.1.4 DCGAN的訓練過程183
13.2 基于DCGAN的圖像生成技術(shù)實戰(zhàn)184
13.2.1 定義判別器185
13.2.2 定義生成器187
13.2.3 定義損失函數(shù)188
13.2.4 整體訓練流程189
13.2.5 效果展示192
附錄194
附錄A PyTorch開發(fā)環(huán)境配置194
附錄B 常用PyTorch函數(shù)速查手冊199