摘要:本文將詳細介紹Yolov3的網絡結構相關內容。
Yolov3 網絡結構
在博客“Yolo發展歷史及網絡結構”中我們已經詳細的解釋了Yolov1的網絡結構,並簡要的提到了Yolov2與Yolov3對於網絡結構的改進,本篇博客將詳細介紹Yolov3的網絡結構,內容比較簡單。
Yolov3網絡結構圖
從圖中可以看出,Yolov3主要有以下幾部分組成:
- 輸入
- 基礎網絡:基礎網絡是可以根據具體的需求選擇,作者原文用的是自己設計的:Darknet-53
- YOLOv3網絡的三個分支:Y1,Y2,Y3
網絡部件介紹
DBL: 如圖1左下角所示,也就是代碼中的Darknetconv2d_BN_Leaky,是yolo_v3的基本組件。就是卷積+BN+Leaky relu。對於v3來說,BN和leaky relu已經是和卷積層不可分離的部分了(最后一層卷積除外),共同構成了最小組件。
resn:n代表數字,有res1,res2, … ,res8等等,表示這個res_block里含有多少個res_unit。這是yolo_v3的大組件,yolo_v3開始借鑒了ResNet的殘差結構,使用這種結構可以讓網絡結構更深(從v2的darknet-19上升到v3的darknet-53,前者沒有殘差結構)。對於res_block的解釋,可以在圖1的右下角直觀看到,其基本組件也是DBL。
concat:張量拼接。將darknet中間層和后面的某一層的上采樣進行拼接。拼接的操作和殘差層add的操作是不一樣的,拼接會擴充張量的維度,而add只是直接相加不會導致張量維度的改變。
YOLOv3網絡的三個分支
多尺度檢測-Y1
適用目標:大目標
路徑:綠色線標注
輸出維度:13×13×255
輸出維度具體解釋:13×13:圖片大小;255=(80+5)×3;80:識別物體種類數;5=x,y,w,h和c(置信度);3:每個點預測3個bounding box。
多尺度檢測-Y2
適用目標:中目標
路徑:黃色線標注
輸出維度:26×26×255
輸出維度具體解釋:26×26:圖片大小;255=(80+5)×3;80:識別物體種類數;5=x,y,w,h和c(置信度);3:每個點預測3個bounding box。
多尺度檢測-Y3
適用目標:小目標
路徑:紫色線標注
輸出維度:52×52×255
輸出維度具體解釋:52×52:圖片大小;255=(80+5)×3;80:識別物體種類數;5=x,y,w,h和c(置信度);3:每個點預測3個bounding box。