AI大視覺(五) | YOLOv3網絡詳解與代碼實現


 本文來自公眾號“AI大道理”

 

在YOLOv3中繼續改進,提出了一個更深的、借鑒了ResNet和的FPN的網絡Darknet-53。

​darknet-19

YOLO作者自己寫的一個深度學習框架叫darknet,后來在YOLO9000中又提出了一個19層卷積網絡作為YOLO9000的主干,稱為Darknet-19。

 

這兩者都是用於提取特征的主干網絡。


網絡使用了較多的3 * 3卷積核,在每一次池化操作后把通道數翻倍。

借鑒了network in network的思想,網絡使用了全局平均池化(global average pooling)做預測,把1 * 1的卷積核置於3 * 3的卷積核之間,用來壓縮特征。

使用batch normalization穩定模型訓練,加速收斂,正則化模型。

 

最終得出的基礎模型就是Darknet-19,包含19個卷積層、5個最大值池化層(max pooling layers )。

Darknet-19處理一張照片需要55.8億次運算。

 

可以看到, Darknet-19 的 stride 為32, 沒有 fc 層,而是用了 Avgpool。

 

​darknet-53

 

 

  • 主干網絡修改為darknet53,其重要特點是使用了殘差網絡Residual,darknet53中的殘差卷積就是進行一次3X3、步長為2的卷積,然后保存該卷積layer,再進行一次1X1的卷積和一次3X3的卷積,並把這個結果加上layer作為最后的結果, 殘差網絡的特點是容易優化,並且能夠通過增加相當的深度來提高准確率。其內部的殘差塊使用了跳躍連接,緩解了在深度神經網絡中增加深度帶來的梯度消失問題。

 

  • darknet53的每一個卷積部分使用了特有的DarknetConv2D結構,每一次卷積的時候進行l2正則化,完成卷積后進行BatchNormalization標准化與LeakyReLU。普通的ReLU是將所有的負值都設為零,Leaky ReLU則是給所有負值賦予一個非零斜率。

 

  • 主干特征提取網絡進行特征提取,輸入一個416*416*3的圖片,進行5次下采樣,下采樣過程中高和寬不斷被壓縮,通道數不斷增加。上采樣再進行堆疊的過程就是構建特征金字塔的過程,特征金字塔可以進行多尺度特征融合,提取出更有效的特征。

 

  • yolo v3的檢測過程就是將輸入的圖片划分成不同的網格,每個網格有3個先驗框,判斷先驗框里面是否有物體,判斷物體的種類,然后調整先驗框變成預測框。

     

     

 

 

 

 

 

​特征金字塔

 

在特征利用部分,yolo3提取多特征層進行目標檢測,一共提取三個特征層,三個特征層位於主干部分darknet53的不同位置,分別位於中間層,中下層,底層,三個特征層的shape分別為(52,52,256)、(26,26,512)、(13,13,1024)。

 

三個特征層進行5次卷積處理,處理完后一部分用於輸出該特征層對應的預測結果,一部分用於進行反卷積UmSampling2d后與其它特征層進行結合。

 

輸出層的shape分別為(13,13,75),(26,26,75),(52,52,75),最后一個維度為75是因為該圖是基於voc數據集的,它的類為20種,yolo3只有針對每一個特征層存在3個先驗框,所以最后維度為3x25;

如果使用的是coco訓練集,類則為80種,最后的維度應該為255 = 3x85,三個特征層的shape為(13,13,255),(26,26,255),(52,52,255)

 

 

​代碼實現

 

backbone:特征提取

 

 

Residual:殘差網絡

 

 

FPN:特征金字塔

 

 

 

 

 

   

 

 ——————

淺談則止,細致入微AI大道理

掃描下方“AI大道理”,選擇“關注”公眾號

—————————————————————

​     

—————————————————————

投稿吧   | 留言吧

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM