隨著深度學(xué)習(xí)的飛速發(fā)展,計(jì)算機(jī)視覺(jué)技術(shù)取得了令人矚目的成果,尤其是物體檢測(cè)這一基礎(chǔ)又核心的分支,誕生了眾多經(jīng)典算法,在自動(dòng)駕駛、智能醫(yī)療、智能安防及搜索娛樂(lè)等多個(gè)領(lǐng)域都得到了廣泛應(yīng)用。與此同時(shí),誕生于2017年的PyTorch框架,憑借其簡(jiǎn)潔優(yōu)雅、靈活易上手等優(yōu)點(diǎn),給開(kāi)發(fā)人員留下了深刻的印象。
目前,國(guó)內(nèi)圖書(shū)市場(chǎng)上已經(jīng)出版了幾本PyTorch方面的圖書(shū),但大多數(shù)圖書(shū)停留在淺層的概念與簡(jiǎn)單示例的講解上,缺乏實(shí)用性,而且也沒(méi)有一本系統(tǒng)講解PyTorch物體檢測(cè)方面的圖書(shū)。因此,圖書(shū)市場(chǎng)上迫切需要一本系統(tǒng)介紹PyTorch物體檢測(cè)技術(shù)的書(shū)籍。這便是筆者寫作《深度學(xué)習(xí)之PyTorch物體檢測(cè)實(shí)戰(zhàn)》的初衷。
《深度學(xué)習(xí)之PyTorch物體檢測(cè)實(shí)戰(zhàn)》是國(guó)內(nèi)原創(chuàng)圖書(shū)市場(chǎng)上首部系統(tǒng)介紹物體檢測(cè)技術(shù)的圖書(shū)。書(shū)中利用PyTorch深度學(xué)習(xí)框架,從代碼層面講解了Faster RCNN、SSD及YOLO這三大經(jīng)典框架的相關(guān)知識(shí),并進(jìn)一步介紹了物體檢測(cè)的細(xì)節(jié)與難點(diǎn)問(wèn)題,讓讀者可以全面、深入、透徹地理解物體檢測(cè)的種種細(xì)節(jié),并能真正提升實(shí)戰(zhàn)能力,從而將這些技術(shù)靈活地應(yīng)用到實(shí)際開(kāi)發(fā)中,享受深度學(xué)習(xí)帶來(lái)的快樂(lè)。
《深度學(xué)習(xí)之PyTorch物體檢測(cè)實(shí)戰(zhàn)》特色
1.系統(tǒng)介紹了PyTorch物體檢測(cè)技術(shù)
《深度學(xué)習(xí)之PyTorch物體檢測(cè)實(shí)戰(zhàn)》深入物體檢測(cè)這一基礎(chǔ)又核心的技術(shù),從其誕生背景、主流算法、難點(diǎn)問(wèn)題、發(fā)展趨勢(shì)等多個(gè)角度詳細(xì)介紹了物體檢測(cè)知識(shí),并結(jié)合代碼給出了多個(gè)算法的實(shí)現(xiàn)。
- 從代碼角度詳細(xì)介紹了物體檢測(cè)的三大算法
《深度學(xué)習(xí)之PyTorch物體檢測(cè)實(shí)戰(zhàn)》介紹了Faster RCNN、SSD及YOLO這三個(gè)影響深遠(yuǎn)的檢測(cè)算法,從代碼層面詳細(xì)介紹了它們所實(shí)現(xiàn)的每一個(gè)細(xì)節(jié)與難點(diǎn),并進(jìn)行了優(yōu)缺點(diǎn)分析,而且給出了多種優(yōu)化算法。
- 涵蓋所有主流的物體檢測(cè)算法
《深度學(xué)習(xí)之PyTorch物體檢測(cè)實(shí)戰(zhàn)》幾乎涵蓋所有主流的物體檢測(cè)算法,包括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等物體檢測(cè)算法,呈現(xiàn)給讀者一個(gè)完整的知識(shí)體系。
- 給出了多個(gè)實(shí)際的物體檢測(cè)實(shí)例,有很強(qiáng)的實(shí)用性
《深度學(xué)習(xí)之PyTorch物體檢測(cè)實(shí)戰(zhàn)》對(duì)PyTorch的知識(shí)體系進(jìn)行了較為精煉的介紹,還結(jié)合物體檢測(cè)算法重點(diǎn)介紹了PyTorch實(shí)現(xiàn)的多個(gè)物體檢測(cè)實(shí)例。因此《深度學(xué)習(xí)之PyTorch物體檢測(cè)實(shí)戰(zhàn)》不僅是一本很好的PyTorch框架學(xué)習(xí)書(shū)籍,更是一本PyTorch物體檢測(cè)實(shí)戰(zhàn)寶典。
- 對(duì)物體檢測(cè)技術(shù)常見(jiàn)的細(xì)節(jié)、難點(diǎn)及發(fā)展做了詳細(xì)分析
《深度學(xué)習(xí)之PyTorch物體檢測(cè)實(shí)戰(zhàn)》不僅對(duì)物體檢測(cè)技術(shù)的熱門話題做了詳細(xì)分析,例如非極大值抑制、樣本不均衡、模型過(guò)擬合、多尺度檢測(cè)、物體擁擠與遮擋等,而且對(duì)各種細(xì)節(jié)與常見(jiàn)問(wèn)題做了詳細(xì)分析,并給出了多種解決方法。
《深度學(xué)習(xí)之PyTorch物體檢測(cè)實(shí)戰(zhàn)》內(nèi)容
第1篇 物體檢測(cè)基礎(chǔ)知識(shí)
本篇涵蓋第1~3章,介紹了物體檢測(cè)技術(shù)與PyTorch框架的背景知識(shí)與必備的基礎(chǔ)知識(shí)。主要內(nèi)容包括物體檢測(cè)技術(shù)的背景與發(fā)展;物體檢測(cè)的多種有效工具;PyTorch背景知識(shí)與基礎(chǔ)知識(shí);多種基礎(chǔ)卷積神經(jīng)網(wǎng)絡(luò)的相關(guān)知識(shí)與具體實(shí)現(xiàn)等。掌握本篇內(nèi)容,可以為讀者進(jìn)一步學(xué)習(xí)物體檢測(cè)技術(shù)奠定基礎(chǔ)。
第2篇 物體檢測(cè)經(jīng)典框架
本篇涵蓋第4~6章,介紹了Faster RCNN、SSD與YOLO三大經(jīng)典算法的思想與實(shí)現(xiàn)。主要內(nèi)容包括Faster RCNN兩階算法的思想;錨框Anchor的意義與實(shí)現(xiàn);Faster RCNN的多種改進(jìn)算法;SSD單階算法的思想與實(shí)現(xiàn);SSD的數(shù)據(jù)增強(qiáng)方法及多種改進(jìn)算法;YOLO單階算法的三個(gè)版本演變過(guò)程及具體實(shí)現(xiàn)等。掌握本篇內(nèi)容,可以讓讀者從代碼角度學(xué)習(xí)物體檢測(cè)的種種細(xì)節(jié)。
第3篇 物體檢測(cè)的難點(diǎn)與發(fā)展
本篇涵蓋第7~10章,介紹了物體檢測(cè)技術(shù)的細(xì)節(jié)、難點(diǎn)及未來(lái)發(fā)展。主要內(nèi)容包括針對(duì)模型加速的多種輕量化網(wǎng)絡(luò)思想與實(shí)現(xiàn);非極大值抑制;樣本不均衡及模型過(guò)擬合等物體檢測(cè)細(xì)節(jié)問(wèn)題的背景知識(shí)與解決方法;多尺度、擁擠與遮擋等物體檢測(cè)難點(diǎn)問(wèn)題的背景知識(shí)與解決方法;多種擺脫錨框的檢測(cè)算法;物體檢測(cè)的未來(lái)發(fā)展趨勢(shì)等。掌握本篇內(nèi)容,可以讓讀者更加深入地學(xué)習(xí)物體檢測(cè)的相關(guān)技術(shù)。
《深度學(xué)習(xí)之PyTorch物體檢測(cè)實(shí)戰(zhàn)》讀者對(duì)象
? 需要全面學(xué)習(xí)物體檢測(cè)技術(shù)的人員;
? PyTorch框架愛(ài)好者和研究者;
? 計(jì)算機(jī)視覺(jué)從業(yè)人員與研究者;
? 深度學(xué)習(xí)從業(yè)人員與愛(ài)好者;
? 自動(dòng)駕駛、智能安防等領(lǐng)域的開(kāi)發(fā)人員;
? 人工智能相關(guān)產(chǎn)業(yè)的從業(yè)人員;
? 計(jì)算機(jī)、機(jī)器人等專業(yè)的高校學(xué)生。
閱讀建議
? 沒(méi)有物體檢測(cè)與PyTorch基礎(chǔ)的讀者,建議從第1章順次閱讀并演練每一個(gè)實(shí)例。
? 有一定PyTorch與物體檢測(cè)基礎(chǔ)的讀者,可以根據(jù)實(shí)際情況有重點(diǎn)地選擇閱讀各個(gè)算法的細(xì)節(jié)。
? 對(duì)于每一個(gè)檢測(cè)算法,建議讀者先閱讀一下原論文,多思考算法設(shè)計(jì)的動(dòng)機(jī)與目的,并重點(diǎn)思考如何用代碼實(shí)現(xiàn),這會(huì)加深讀者對(duì)檢測(cè)算法的理解。原論文的下載地址和《深度學(xué)習(xí)之PyTorch物體檢測(cè)實(shí)戰(zhàn)》源代碼文件一起提供。
? 多思考各種物體檢測(cè)算法的優(yōu)缺點(diǎn)、相互之間的聯(lián)系與區(qū)別,以及可以優(yōu)化和改進(jìn)的細(xì)節(jié)等,形成完整的知識(shí)體系樹(shù),這樣會(huì)進(jìn)一步加深讀者對(duì)知識(shí)的理解。
配書(shū)資源獲取方式
《深度學(xué)習(xí)之PyTorch物體檢測(cè)實(shí)戰(zhàn)》涉及的全部源代碼都放在了GitHub上,需要讀者自行下載。下載地址見(jiàn)圖書(shū)。
有些章節(jié)的代碼較多,但在書(shū)中僅給出了重要的片段代碼,完整代碼以GitHub上的代碼為準(zhǔn)。
另外,讀者也可以登錄華章公司的網(wǎng)站www.hzbook.com,搜索到《深度學(xué)習(xí)之PyTorch物體檢測(cè)實(shí)戰(zhàn)》,然后單擊資料下載按鈕,即可在本書(shū)頁(yè)面上找到相關(guān)的下載鏈接。
致謝
《深度學(xué)習(xí)之PyTorch物體檢測(cè)實(shí)戰(zhàn)》的編寫得到了許多人的幫助?梢哉f(shuō),《深度學(xué)習(xí)之PyTorch物體檢測(cè)實(shí)戰(zhàn)》是多人共同努力的結(jié)晶。感謝北京源智天下科技有限公司的王蕾,她在稿件整理方面幫我做了大量的工作!感謝王田苗教授、陶吉博士、夏添博士、侯濤剛博士、嚴(yán)德培、單增光、王策、鄂俊光、李成、丁寧、付航、高鵬、朱本金、彭強(qiáng)、王粟瑤、張騰、王兆瑋、黃彬效和拓萬(wàn)琛等人,他們對(duì)《深度學(xué)習(xí)之PyTorch物體檢測(cè)實(shí)戰(zhàn)》提出了許多寶貴的意見(jiàn)和建議!感謝我的女朋友及家人,他們一直以來(lái)都對(duì)我鼓勵(lì)有加,給我寫作《深度學(xué)習(xí)之PyTorch物體檢測(cè)實(shí)戰(zhàn)》以最大的動(dòng)力!感謝為《深度學(xué)習(xí)之PyTorch物體檢測(cè)實(shí)戰(zhàn)》付出辛勤工作的每一位編輯,他們認(rèn)真、細(xì)致的工作讓《深度學(xué)習(xí)之PyTorch物體檢測(cè)實(shí)戰(zhàn)》質(zhì)量提高不少!
……
第1篇 物體檢測(cè)基礎(chǔ)知識(shí)
第1章 淺談物體檢測(cè)與PyTorch 2
1.1 深度學(xué)習(xí)與計(jì)算機(jī)視覺(jué) 2
1.1.1 發(fā)展歷史 2
1.1.2 計(jì)算機(jī)視覺(jué) 7
1.2 物體檢測(cè)技術(shù) 9
1.2.1 發(fā)展歷程 10
1.2.2 技術(shù)應(yīng)用領(lǐng)域 11
1.2.3 評(píng)價(jià)指標(biāo) 12
1.3 PyTorch簡(jiǎn)介 17
1.3.1 誕生與特點(diǎn) 17
1.3.2 各大深度學(xué)習(xí)框架對(duì)比 17
1.3.3 為什么選擇PyTorch 19
1.3.4 安裝方法 20
1.4 基礎(chǔ)知識(shí)準(zhǔn)備 22
1.4.1 Linux基礎(chǔ) 22
1.4.2 Python基礎(chǔ) 24
1.4.3 高效開(kāi)發(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的自動(dòng)廣播機(jī)制與向量化 46
2.1.7 Tensor的內(nèi)存共享 47
2.2 Autograd與計(jì)算圖 48
2.2.1 Tensor的自動(dòng)求導(dǎo):Autograd 49
2.2.2 計(jì)算圖 50
2.2.3 Autograd注意事項(xiàng) 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ò)模型庫(kù):torchvision.models 59
2.4.2 加載預(yù)訓(xùn)練模型 60
2.4.3 模型保存 61
2.5 數(shù)據(jù)處理 61
2.5.1 主流公開(kāi)數(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 縱橫交錯(cuò):Inception 87
3.4 里程碑:ResNet 93
3.5 繼往開(kāi)來(lái):DenseNet 95
3.6 特征金字塔:FPN 99
3.7 為檢測(cè)而生:DetNet 106
3.8 總結(jié) 110
第2篇 物體檢測(cè)經(jīng)典框架
第4章 兩階經(jīng)典檢測(cè)器:Faster RCNN 112
4.1 RCNN系列發(fā)展歷程 112
4.1.1 開(kāi)山之作:RCNN 112
4.1.2 端到端:Fast RCNN 113
4.1.3 走向?qū)崟r(shí):Faster RCNN 114
4.2 準(zhǔn)備工作 114
4.3 Faster RCNN總覽 115
4.4 詳解RPN 117
4.4.1 理解Anchor 117
4.4.2 RPN的真值與預(yù)測(cè)量 119
4.4.3 RPN卷積網(wǎng)絡(luò) 120
4.4.4 RPN真值的求取 122
4.4.5 損失函數(shù)設(shè)計(jì) 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è)計(jì) 131
4.7 Faster RCNN的改進(jìn)算法 131
4.7.1 審視Faster RCNN 132
4.7.2 特征融合:HyperNet 133
4.7.3 實(shí)例分割:Mask RCNN 134
4.7.4 全卷積網(wǎng)絡(luò):R-FCN 137
4.7.5 級(jí)聯(lián)網(wǎng)絡(luò):Cascade RCNN 139
4.8 總結(jié) 141
第5章 單階多層檢測(cè)器:SSD 142
5.1 SSD總覽 142
5.1.1 SSD的算法流程 142
5.1.2 代碼準(zhǔn)備工作 143
5.2 數(shù)據(jù)預(yù)處理 144
5.2.1 加載PASCAL數(shù)據(jù)集 144
5.2.2 數(shù)據(jù)增強(qiáng) 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ò)計(jì)算過(guò)程 153
5.4 匹配與損失求解 154
5.4.1 預(yù)選框與真實(shí)框的匹配 154
5.4.2 定位損失的計(jì)算 155
5.4.3 難樣本挖掘 156
5.4.4 類別損失計(jì)算 156
5.5 SSD的改進(jìn)算法 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)典檢測(cè)器:YOLO 167
6.1 無(wú)錨框預(yù)測(cè):YOLO v1 167
6.1.1 網(wǎng)絡(luò)結(jié)構(gòu) 167
6.1.2 特征圖的意義 168
6.1.3 損失計(jì)算 169
6.2 依賴錨框:YOLO v2 171
6.2.1 網(wǎng)絡(luò)結(jié)構(gòu)的改善 171
6.2.2 先驗(yàn)框的設(shè)計(jì) 173
6.2.3 正、負(fù)樣本與損失函數(shù) 175
6.2.4 正、負(fù)樣本選取代碼示例 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ù)測(cè) 181
6.3.3 Softmax改為L(zhǎng)ogistic 182
6.4 總結(jié) 183
第3篇 物體檢測(cè)的難點(diǎn)與發(fā)展
第7章 模型加速之輕量化網(wǎng)絡(luò) 186
7.1 壓縮再擴(kuò)展: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 標(biāo)準(zhǔn)卷積 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章 物體檢測(cè)細(xì)節(jié)處理 209
8.1 非極大值抑制:NMS 209
8.1.1 NMS基本過(guò)程 210
8.1.2 抑制得分:Soft NMS 212
8.1.3 加權(quán)平均:Softer NMS 213
8.1.4 定位置信度:IoU-Net 215
8.2 樣本不均衡問(wèn)題 217
8.2.1 不均衡問(wèn)題分析 217
8.2.2 在線難樣本挖掘:OHEM 219
8.2.3 專注難樣本:Focal Loss 221
8.3 模型過(guò)擬合 224
8.3.1 數(shù)據(jù)增強(qiáng) 226
8.3.2 L1與L2正則化 227
8.4 總結(jié) 229
第9章 物體檢測(cè)難點(diǎn) 230
9.1 多尺度檢測(cè) 230
9.1.1 多尺度問(wèn)題 230
9.1.2 降低下采樣率與空洞卷積 232
9.1.3 Anchor設(shè)計(jì) 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章 物體檢測(cè)的未來(lái)發(fā)展 248
10.1 重新思考物體檢測(cè) 248
10.1.1 精度與速度的權(quán)衡 249
10.1.2 卷積網(wǎng)絡(luò)的可解釋性與穩(wěn)定性 249
10.1.3 訓(xùn)練:微調(diào)還是隨機(jī)初始化 250
10.1.4 考慮物體間關(guān)系的檢測(cè) 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 基于角點(diǎn)的檢測(cè):CornerNet 258
10.2.3 檢測(cè)中心點(diǎn):CenterNet 262
10.2.4 錨框自學(xué)習(xí):Guided Anchoring 264
10.3 總結(jié) 266