《深度學習之PyTorch物體檢測實戰(zhàn)》從概念、發(fā)展、經(jīng)典實現(xiàn)方法等幾個方面系統(tǒng)地介紹了物體檢測的相關(guān)知識,重點介紹了Faster RCNN、SDD和YOLO這三個經(jīng)典的檢測器,并利用PyTorch框架從代碼角度進行了細致講解。另外,《深度學習之PyTorch物體檢測實戰(zhàn)》進一步介紹了物體檢測的輕量化網(wǎng)絡(luò)、細節(jié)處理、難點問題及未來的發(fā)展趨勢,從實戰(zhàn)角度給出了多種優(yōu)秀的解決方法,便于讀者更深入地掌握物體檢測技術(shù),從而做到在實際項目中靈活應(yīng)用。
《深度學習之PyTorch物體檢測實戰(zhàn)》共10章,涵蓋的主要內(nèi)容有物體檢測與PyTorch框架基礎(chǔ)概念與背景知識;PyTorch基礎(chǔ)知識;基礎(chǔ)卷積網(wǎng)絡(luò)Backbone;兩階經(jīng)典檢測器Faster RCNN;單階多層檢測器SSD;單階經(jīng)典檢測器YOLO;模型加速之輕量化網(wǎng)絡(luò);物體檢測細節(jié)處理;物體檢測難點問題;物體檢測的未來發(fā)展。
《深度學習之PyTorch物體檢測實戰(zhàn)》內(nèi)容豐富,講解通俗易懂,案例典型,實用性強,特別適合PyTorch框架愛好者和物體檢測相關(guān)從業(yè)人員閱讀,也適合深度學習和計算機視覺領(lǐng)域的研究人員閱讀。另外,《深度學習之PyTorch物體檢測實戰(zhàn)》還適合作為深度學習培訓(xùn)機構(gòu)的教材使用。
隨著深度學習的飛速發(fā)展,計算機視覺技術(shù)取得了令人矚目的成果,尤其是物體檢測這一基礎(chǔ)又核心的分支,誕生了眾多經(jīng)典算法,在自動駕駛、智能醫(yī)療、智能安防及搜索娛樂等多個領(lǐng)域都得到了廣泛應(yīng)用。與此同時,誕生于2017年的PyTorch框架,憑借其簡潔優(yōu)雅、靈活易上手等優(yōu)點,給開發(fā)人員留下了深刻的印象。
目前,國內(nèi)圖書市場上已經(jīng)出版了幾本PyTorch方面的圖書,但大多數(shù)圖書停留在淺層的概念與簡單示例的講解上,缺乏實用性,而且也沒有一本系統(tǒng)講解PyTorch物體檢測方面的圖書。因此,圖書市場上迫切需要一本系統(tǒng)介紹PyTorch物體檢測技術(shù)的書籍。這便是筆者寫作《深度學習之PyTorch物體檢測實戰(zhàn)》的初衷。
《深度學習之PyTorch物體檢測實戰(zhàn)》是國內(nèi)原創(chuàng)圖書市場上首部系統(tǒng)介紹物體檢測技術(shù)的圖書。書中利用PyTorch深度學習框架,從代碼層面講解了Faster RCNN、SSD及YOLO這三大經(jīng)典框架的相關(guān)知識,并進一步介紹了物體檢測的細節(jié)與難點問題,讓讀者可以全面、深入、透徹地理解物體檢測的種種細節(jié),并能真正提升實戰(zhàn)能力,從而將這些技術(shù)靈活地應(yīng)用到實際開發(fā)中,享受深度學習帶來的快樂。
《深度學習之PyTorch物體檢測實戰(zhàn)》特色
1.系統(tǒng)介紹了PyTorch物體檢測技術(shù)
《深度學習之PyTorch物體檢測實戰(zhàn)》深入物體檢測這一基礎(chǔ)又核心的技術(shù),從其誕生背景、主流算法、難點問題、發(fā)展趨勢等多個角度詳細介紹了物體檢測知識,并結(jié)合代碼給出了多個算法的實現(xiàn)。
- 從代碼角度詳細介紹了物體檢測的三大算法
《深度學習之PyTorch物體檢測實戰(zhàn)》介紹了Faster RCNN、SSD及YOLO這三個影響深遠的檢測算法,從代碼層面詳細介紹了它們所實現(xiàn)的每一個細節(jié)與難點,并進行了優(yōu)缺點分析,而且給出了多種優(yōu)化算法。
- 涵蓋所有主流的物體檢測算法
《深度學習之PyTorch物體檢測實戰(zhàn)》幾乎涵蓋所有主流的物體檢測算法,包括VGGNet、ResNet、FPN、DenseNet和DetNet等卷積基礎(chǔ)網(wǎng)絡(luò),以及從Faster RCNN、HyperNet、Mask RCNN、SSD、RefineDet、YOLO v1到Y(jié)OLO v3、RetinaNet、CornerNet和CenterNet等物體檢測算法,呈現(xiàn)給讀者一個完整的知識體系。
- 給出了多個實際的物體檢測實例,有很強的實用性
《深度學習之PyTorch物體檢測實戰(zhàn)》對PyTorch的知識體系進行了較為精煉的介紹,還結(jié)合物體檢測算法重點介紹了PyTorch實現(xiàn)的多個物體檢測實例。因此《深度學習之PyTorch物體檢測實戰(zhàn)》不僅是一本很好的PyTorch框架學習書籍,更是一本PyTorch物體檢測實戰(zhàn)寶典。
- 對物體檢測技術(shù)常見的細節(jié)、難點及發(fā)展做了詳細分析
《深度學習之PyTorch物體檢測實戰(zhàn)》不僅對物體檢測技術(shù)的熱門話題做了詳細分析,例如非極大值抑制、樣本不均衡、模型過擬合、多尺度檢測、物體擁擠與遮擋等,而且對各種細節(jié)與常見問題做了詳細分析,并給出了多種解決方法。
《深度學習之PyTorch物體檢測實戰(zhàn)》內(nèi)容
第1篇 物體檢測基礎(chǔ)知識
本篇涵蓋第1~3章,介紹了物體檢測技術(shù)與PyTorch框架的背景知識與必備的基礎(chǔ)知識。主要內(nèi)容包括物體檢測技術(shù)的背景與發(fā)展;物體檢測的多種有效工具;PyTorch背景知識與基礎(chǔ)知識;多種基礎(chǔ)卷積神經(jīng)網(wǎng)絡(luò)的相關(guān)知識與具體實現(xiàn)等。掌握本篇內(nèi)容,可以為讀者進一步學習物體檢測技術(shù)奠定基礎(chǔ)。
第2篇 物體檢測經(jīng)典框架
本篇涵蓋第4~6章,介紹了Faster RCNN、SSD與YOLO三大經(jīng)典算法的思想與實現(xiàn)。主要內(nèi)容包括Faster RCNN兩階算法的思想;錨框Anchor的意義與實現(xiàn);Faster RCNN的多種改進算法;SSD單階算法的思想與實現(xiàn);SSD的數(shù)據(jù)增強方法及多種改進算法;YOLO單階算法的三個版本演變過程及具體實現(xiàn)等。掌握本篇內(nèi)容,可以讓讀者從代碼角度學習物體檢測的種種細節(jié)。
第3篇 物體檢測的難點與發(fā)展
本篇涵蓋第7~10章,介紹了物體檢測技術(shù)的細節(jié)、難點及未來發(fā)展。主要內(nèi)容包括針對模型加速的多種輕量化網(wǎng)絡(luò)思想與實現(xiàn);非極大值抑制;樣本不均衡及模型過擬合等物體檢測細節(jié)問題的背景知識與解決方法;多尺度、擁擠與遮擋等物體檢測難點問題的背景知識與解決方法;多種擺脫錨框的檢測算法;物體檢測的未來發(fā)展趨勢等。掌握本篇內(nèi)容,可以讓讀者更加深入地學習物體檢測的相關(guān)技術(shù)。
《深度學習之PyTorch物體檢測實戰(zhàn)》讀者對象
? 需要全面學習物體檢測技術(shù)的人員;
? PyTorch框架愛好者和研究者;
? 計算機視覺從業(yè)人員與研究者;
? 深度學習從業(yè)人員與愛好者;
? 自動駕駛、智能安防等領(lǐng)域的開發(fā)人員;
? 人工智能相關(guān)產(chǎn)業(yè)的從業(yè)人員;
? 計算機、機器人等專業(yè)的高校學生。
閱讀建議
? 沒有物體檢測與PyTorch基礎(chǔ)的讀者,建議從第1章順次閱讀并演練每一個實例。
? 有一定PyTorch與物體檢測基礎(chǔ)的讀者,可以根據(jù)實際情況有重點地選擇閱讀各個算法的細節(jié)。
? 對于每一個檢測算法,建議讀者先閱讀一下原論文,多思考算法設(shè)計的動機與目的,并重點思考如何用代碼實現(xiàn),這會加深讀者對檢測算法的理解。原論文的下載地址和《深度學習之PyTorch物體檢測實戰(zhàn)》源代碼文件一起提供。
? 多思考各種物體檢測算法的優(yōu)缺點、相互之間的聯(lián)系與區(qū)別,以及可以優(yōu)化和改進的細節(jié)等,形成完整的知識體系樹,這樣會進一步加深讀者對知識的理解。
配書資源獲取方式
《深度學習之PyTorch物體檢測實戰(zhàn)》涉及的全部源代碼都放在了GitHub上,需要讀者自行下載。下載地址見圖書。
有些章節(jié)的代碼較多,但在書中僅給出了重要的片段代碼,完整代碼以GitHub上的代碼為準。
另外,讀者也可以登錄華章公司的網(wǎng)站www.hzbook.com,搜索到《深度學習之PyTorch物體檢測實戰(zhàn)》,然后單擊資料下載按鈕,即可在本書頁面上找到相關(guān)的下載鏈接。
致謝
《深度學習之PyTorch物體檢測實戰(zhàn)》的編寫得到了許多人的幫助?梢哉f,《深度學習之PyTorch物體檢測實戰(zhàn)》是多人共同努力的結(jié)晶。感謝北京源智天下科技有限公司的王蕾,她在稿件整理方面幫我做了大量的工作!感謝王田苗教授、陶吉博士、夏添博士、侯濤剛博士、嚴德培、單增光、王策、鄂俊光、李成、丁寧、付航、高鵬、朱本金、彭強、王粟瑤、張騰、王兆瑋、黃彬效和拓萬琛等人,他們對《深度學習之PyTorch物體檢測實戰(zhàn)》提出了許多寶貴的意見和建議!感謝我的女朋友及家人,他們一直以來都對我鼓勵有加,給我寫作《深度學習之PyTorch物體檢測實戰(zhàn)》以最大的動力!感謝為《深度學習之PyTorch物體檢測實戰(zhàn)》付出辛勤工作的每一位編輯,他們認真、細致的工作讓《深度學習之PyTorch物體檢測實戰(zhàn)》質(zhì)量提高不少!
……
第1篇 物體檢測基礎(chǔ)知識
第1章 淺談物體檢測與PyTorch 2
1.1 深度學習與計算機視覺 2
1.1.1 發(fā)展歷史 2
1.1.2 計算機視覺 7
1.2 物體檢測技術(shù) 9
1.2.1 發(fā)展歷程 10
1.2.2 技術(shù)應(yīng)用領(lǐng)域 11
1.2.3 評價指標 12
1.3 PyTorch簡介 17
1.3.1 誕生與特點 17
1.3.2 各大深度學習框架對比 17
1.3.3 為什么選擇PyTorch 19
1.3.4 安裝方法 20
1.4 基礎(chǔ)知識準備 22
1.4.1 Linux基礎(chǔ) 22
1.4.2 Python基礎(chǔ) 24
1.4.3 高效開發(fā)工具 29
1.5 總結(jié) 36
第2章 PyTorch基礎(chǔ) 37
2.1 基本數(shù)據(jù):Tensor 37
2.1.1 Tensor數(shù)據(jù)類型 37
2.1.2 Tensor的創(chuàng)建與維度查看 39
2.1.3 Tensor的組合與分塊 41
2.1.4 Tensor的索引與變形 42
2.1.5 Tensor的排序與取極值 46
2.1.6 Tensor的自動廣播機制與向量化 46
2.1.7 Tensor的內(nèi)存共享 47
2.2 Autograd與計算圖 48
2.2.1 Tensor的自動求導(dǎo):Autograd 49
2.2.2 計算圖 50
2.2.3 Autograd注意事項 51
2.3 神經(jīng)網(wǎng)絡(luò)工具箱torch.nn 52
2.3.1 nn.Module類 52
2.3.2 損失函數(shù) 55
2.3.3 優(yōu)化器nn.optim 56
2.4 模型處理 59
2.4.1 網(wǎng)絡(luò)模型庫:torchvision.models 59
2.4.2 加載預(yù)訓(xùn)練模型 60
2.4.3 模型保存 61
2.5 數(shù)據(jù)處理 61
2.5.1 主流公開數(shù)據(jù)集 61
2.5.2 數(shù)據(jù)加載 63
2.5.3 GPU加速 65
2.5.4 數(shù)據(jù)可視化 66
2.6 總結(jié) 68
第3章 網(wǎng)絡(luò)骨架:Backbone 69
3.1 神經(jīng)網(wǎng)絡(luò)基本組成 69
3.1.1 卷積層 70
3.1.2 激活函數(shù)層 72
3.1.3 池化層 75
3.1.4 Dropout層 76
3.1.5 BN層 77
3.1.6 全連接層 79
3.1.7 深入理解感受野 81
3.1.8 詳解空洞卷積(Dilated Convolution) 82
3.2 走向深度:VGGNet 83
3.3 縱橫交錯:Inception 87
3.4 里程碑:ResNet 93
3.5 繼往開來:DenseNet 95
3.6 特征金字塔:FPN 99
3.7 為檢測而生:DetNet 106
3.8 總結(jié) 110
第2篇 物體檢測經(jīng)典框架
第4章 兩階經(jīng)典檢測器:Faster RCNN 112
4.1 RCNN系列發(fā)展歷程 112
4.1.1 開山之作:RCNN 112
4.1.2 端到端:Fast RCNN 113
4.1.3 走向?qū)崟r:Faster RCNN 114
4.2 準備工作 114
4.3 Faster RCNN總覽 115
4.4 詳解RPN 117
4.4.1 理解Anchor 117
4.4.2 RPN的真值與預(yù)測量 119
4.4.3 RPN卷積網(wǎng)絡(luò) 120
4.4.4 RPN真值的求取 122
4.4.5 損失函數(shù)設(shè)計 124
4.4.6 NMS與生成Proposal 125
4.4.7 篩選Proposal得到RoI 126
4.5 RoI Pooling層 127
4.6 全連接RCNN模塊 130
4.6.1 RCNN全連接網(wǎng)絡(luò) 130
4.6.2 損失函數(shù)設(shè)計 131
4.7 Faster RCNN的改進算法 131
4.7.1 審視Faster RCNN 132
4.7.2 特征融合:HyperNet 133
4.7.3 實例分割:Mask RCNN 134
4.7.4 全卷積網(wǎng)絡(luò):R-FCN 137
4.7.5 級聯(lián)網(wǎng)絡(luò):Cascade RCNN 139
4.8 總結(jié) 141
第5章 單階多層檢測器:SSD 142
5.1 SSD總覽 142
5.1.1 SSD的算法流程 142
5.1.2 代碼準備工作 143
5.2 數(shù)據(jù)預(yù)處理 144
5.2.1 加載PASCAL數(shù)據(jù)集 144
5.2.2 數(shù)據(jù)增強 144
5.3 網(wǎng)絡(luò)架構(gòu) 148
5.3.1 基礎(chǔ)VGG結(jié)構(gòu) 148
5.3.2 深度卷積層 149
5.3.3 PriorBox與邊框特征提取網(wǎng)絡(luò) 150
5.3.4 總體網(wǎng)絡(luò)計算過程 153
5.4 匹配與損失求解 154
5.4.1 預(yù)選框與真實框的匹配 154
5.4.2 定位損失的計算 155
5.4.3 難樣本挖掘 156
5.4.4 類別損失計算 156
5.5 SSD的改進算法 157
5.5.1 審視SSD 157
5.5.2 特征融合:DSSD 158
5.5.3 彩虹網(wǎng)絡(luò):RSSD 160
5.5.4 基于SSD的兩階:RefineDet 162
5.5.5 多感受野融合:RFBNet 165
5.6 總結(jié) 166
第6章 單階經(jīng)典檢測器:YOLO 167
6.1 無錨框預(yù)測:YOLO v1 167
6.1.1 網(wǎng)絡(luò)結(jié)構(gòu) 167
6.1.2 特征圖的意義 168
6.1.3 損失計算 169
6.2 依賴錨框:YOLO v2 171
6.2.1 網(wǎng)絡(luò)結(jié)構(gòu)的改善 171
6.2.2 先驗框的設(shè)計 173
6.2.3 正、負樣本與損失函數(shù) 175
6.2.4 正、負樣本選取代碼示例 176
6.2.5 工程技巧 179
6.3 多尺度與特征融合:YOLO v3 180
6.3.1 新網(wǎng)絡(luò)結(jié)構(gòu)DarkNet-53 180
6.3.2 多尺度預(yù)測 181
6.3.3 Softmax改為Logistic 182
6.4 總結(jié) 183
第3篇 物體檢測的難點與發(fā)展
第7章 模型加速之輕量化網(wǎng)絡(luò) 186
7.1 壓縮再擴展:SqueezeNet 188
7.1.1 SqueezeNet網(wǎng)絡(luò)結(jié)構(gòu) 188
7.1.2 SqueezeNet總結(jié) 190
7.2 深度可分離:MobileNet 191
7.2.1 標準卷積 191
7.2.2 深度可分離卷積 192
7.2.3 MobileNet v1結(jié)構(gòu) 193
7.2.4 MobileNet v1總結(jié) 198
7.2.5 MobileNet v2 198
7.3 通道混洗:ShuffleNet 200
7.3.1 通道混洗 201
7.3.2 網(wǎng)絡(luò)結(jié)構(gòu) 202
7.3.3 ShuffleNet v2 205
7.4 總結(jié) 207
第8章 物體檢測細節(jié)處理 209
8.1 非極大值抑制:NMS 209
8.1.1 NMS基本過程 210
8.1.2 抑制得分:Soft NMS 212
8.1.3 加權(quán)平均:Softer NMS 213
8.1.4 定位置信度:IoU-Net 215
8.2 樣本不均衡問題 217
8.2.1 不均衡問題分析 217
8.2.2 在線難樣本挖掘:OHEM 219
8.2.3 專注難樣本:Focal Loss 221
8.3 模型過擬合 224
8.3.1 數(shù)據(jù)增強 226
8.3.2 L1與L2正則化 227
8.4 總結(jié) 229
第9章 物體檢測難點 230
9.1 多尺度檢測 230
9.1.1 多尺度問題 230
9.1.2 降低下采樣率與空洞卷積 232
9.1.3 Anchor設(shè)計 233
9.1.4 多尺度訓(xùn)練 235
9.1.5 特征融合 235
9.1.6 尺度歸一化:SNIP 236
9.1.7 三叉戟:TridentNet 238
9.2 擁擠與遮擋 239
9.2.1 遮擋背景 240
9.2.2 排斥損失:Repulsion Loss 242
9.2.3 OR-CNN 244
9.3 總結(jié) 247
第10章 物體檢測的未來發(fā)展 248
10.1 重新思考物體檢測 248
10.1.1 精度與速度的權(quán)衡 249
10.1.2 卷積網(wǎng)絡(luò)的可解釋性與穩(wěn)定性 249
10.1.3 訓(xùn)練:微調(diào)還是隨機初始化 250
10.1.4 考慮物體間關(guān)系的檢測 251
10.1.5 優(yōu)化卷積方式 252
10.1.6 神經(jīng)架構(gòu)搜索:NAS 253
10.1.7 與產(chǎn)業(yè)結(jié)合的創(chuàng)新 255
10.2 擺脫錨框:Anchor-Free 257
10.2.1 重新思考Anchor 257
10.2.2 基于角點的檢測:CornerNet 258
10.2.3 檢測中心點:CenterNet 262
10.2.4 錨框自學習:Guided Anchoring 264
10.3 總結(jié) 266