目標檢測算法丨YOLOv3-Darknet53構(gòu)建特征金字塔及分類預(yù)測和回歸預(yù)測
網(wǎng)絡(luò)構(gòu)建
前面我們已經(jīng)完成了Darknet53的骨干網(wǎng)絡(luò)構(gòu)建,接下來我們來了解一下如何利用前面提取的特征構(gòu)建特征金字塔和進行分類預(yù)測以及回歸預(yù)測。

1.?構(gòu)建FPN特征金字塔,進行加強特征提取
特征圖金字塔網(wǎng)絡(luò)FPN(Feature Pyramid Networks)是2017年提出的一種網(wǎng)絡(luò),F(xiàn)PN主要解決的是物體檢測中的多尺度問題,通過簡單的網(wǎng)絡(luò)連接改變,在基本不增加原有模型計算量的情況下,大幅度提升了小物體檢測的性能。
2.?利用YOLO Head對三組有效特征層進行預(yù)測
YOLO Head 本質(zhì)上是一個3 x 3 卷積加上1 x 1卷積,一個起到特征整合,一個用于調(diào)整通道數(shù)
構(gòu)建FPN特征金字塔進行加強特征提取
我們可以通過YOLO的網(wǎng)絡(luò)結(jié)構(gòu)可以看到,YOLOv3提取多特征層進行檢測的,一共提取了三層特征層,位于骨干網(wǎng)絡(luò)中的不同位置,這個三個特征層的shape分別為(52,52,256)(26,26,512)(13,13,1024)
所以在獲得了這個三個特征層之后,我們就可以進行FPN層的構(gòu)建,構(gòu)建方式如下:
1.?13 x 13 x 1024的特征層會進行5次的卷積處理,然后利用YOLO Head獲得預(yù)測結(jié)果。一部分經(jīng)過上采樣之后和26 x 26 x512特征層進行結(jié)合,
2.?經(jīng)過結(jié)合的特征再進行5次的卷積處理,同樣的會利用YOLO Head獲得預(yù)測結(jié)果,然后進行上采樣與52 x 52 x256特征層進行結(jié)合
3.?然后52 x 52 x256也同樣的會進行5次的卷積處理,然后利用YOLO Head獲得預(yù)測結(jié)果。
通過特征金字塔,我們就可以將不同尺寸的特征層進行融合,能夠提取出更好的特征。
利用YOLO Head獲取預(yù)測結(jié)果
在經(jīng)過特征金字塔加強了特征提取之后,我們就可以利用這三種不同尺寸的特征輸入到Y(jié)OLO Head中得到預(yù)測結(jié)果。
對三個特征層分別進行處理,假設(shè)我們現(xiàn)在要對VOC數(shù)據(jù)進行預(yù)測,那么我們的輸出層的shape分別為(13,13,75)(26,26,75)(52,52,75),最后一個75是通道數(shù),是基于VOC數(shù)據(jù)的,該數(shù)據(jù)集的類別為20種,而YOLOv3針對每一個特征層的每一個特征點存在3個先驗框,所以最后預(yù)測的通道數(shù)為 3 x 25(20個類別 + 4個坐標 + 1個置信度)
使用coco數(shù)據(jù)集的時候,類別數(shù)量為80,所以最后的維度是255。
網(wǎng)絡(luò)代碼實現(xiàn)