1. 程式人生 > >YOLOv3網路結構解析

YOLOv3網路結構解析

先貼一張結構圖鎮樓: 
layer filters size input output 
0 conv 32 3 x 3 / 1 416 x 416 x 3 -> 416 x 416 x 32 0.299 BFLOPs 
1 conv 64 3 x 3 / 2 416 x 416 x 32 -> 208 x 208 x 64 1.595 BFLOPs 
2 conv 32 1 x 1 / 1 208 x 208 x 64 -> 208 x 208 x 32 0.177 BFLOPs 
3 conv 64 3 x 3 / 1 208 x 208 x 32 -> 208 x 208 x 64 1.595 BFLOPs 
4 res 1 208 x 208 x 64 -> 208 x 208 x 64 
5 conv 128 3 x 3 / 2 208 x 208 x 64 -> 104 x 104 x 128 1.595 BFLOPs 
6 conv 64 1 x 1 / 1 104 x 104 x 128 -> 104 x 104 x 64 0.177 BFLOPs 
7 conv 128 3 x 3 / 1 104 x 104 x 64 -> 104 x 104 x 128 1.595 BFLOPs 
8 res 5 104 x 104 x 128 -> 104 x 104 x 128 
9 conv 64 1 x 1 / 1 104 x 104 x 128 -> 104 x 104 x 64 0.177 BFLOPs 
10 conv 128 3 x 3 / 1 104 x 104 x 64 -> 104 x 104 x 128 1.595 BFLOPs 
11 res 8 104 x 104 x 128 -> 104 x 104 x 128 
12 conv 256 3 x 3 / 2 104 x 104 x 128 -> 52 x 52 x 256 1.595 BFLOPs 
13 conv 128 1 x 1 / 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BFLOPs 
14 conv 256 3 x 3 / 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BFLOPs 
15 res 12 52 x 52 x 256 -> 52 x 52 x 256 
16 conv 128 1 x 1 / 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BFLOPs 
17 conv 256 3 x 3 / 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BFLOPs 
18 res 15 52 x 52 x 256 -> 52 x 52 x 256 
19 conv 128 1 x 1 / 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BFLOPs 
20 conv 256 3 x 3 / 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BFLOPs 
21 res 18 52 x 52 x 256 -> 52 x 52 x 256 
22 conv 128 1 x 1 / 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BFLOPs 
23 conv 256 3 x 3 / 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BFLOPs 
24 res 21 52 x 52 x 256 -> 52 x 52 x 256 
25 conv 128 1 x 1 / 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BFLOPs 
26 conv 256 3 x 3 / 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BFLOPs 
27 res 24 52 x 52 x 256 -> 52 x 52 x 256 
28 conv 128 1 x 1 / 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BFLOPs 
29 conv 256 3 x 3 / 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BFLOPs 
30 res 27 52 x 52 x 256 -> 52 x 52 x 256 
31 conv 128 1 x 1 / 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BFLOPs 
32 conv 256 3 x 3 / 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BFLOPs 
33 res 30 52 x 52 x 256 -> 52 x 52 x 256 
34 conv 128 1 x 1 / 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BFLOPs 
35 conv 256 3 x 3 / 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BFLOPs 
36 res 33 52 x 52 x 256 -> 52 x 52 x 256 
37 conv 512 3 x 3 / 2 52 x 52 x 256 -> 26 x 26 x 512 1.595 BFLOPs 
38 conv 256 1 x 1 / 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BFLOPs 
39 conv 512 3 x 3 / 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BFLOPs 
40 res 37 26 x 26 x 512 -> 26 x 26 x 512 
41 conv 256 1 x 1 / 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BFLOPs 
42 conv 512 3 x 3 / 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BFLOPs 
43 res 40 26 x 26 x 512 -> 26 x 26 x 512 
44 conv 256 1 x 1 / 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BFLOPs 
45 conv 512 3 x 3 / 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BFLOPs 
46 res 43 26 x 26 x 512 -> 26 x 26 x 512 
47 conv 256 1 x 1 / 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BFLOPs 
48 conv 512 3 x 3 / 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BFLOPs 
49 res 46 26 x 26 x 512 -> 26 x 26 x 512 
50 conv 256 1 x 1 / 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BFLOPs 
51 conv 512 3 x 3 / 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BFLOPs 
52 res 49 26 x 26 x 512 -> 26 x 26 x 512 
53 conv 256 1 x 1 / 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BFLOPs 
54 conv 512 3 x 3 / 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BFLOPs 
55 res 52 26 x 26 x 512 -> 26 x 26 x 512 
56 conv 256 1 x 1 / 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BFLOPs 
57 conv 512 3 x 3 / 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BFLOPs 
58 res 55 26 x 26 x 512 -> 26 x 26 x 512 
59 conv 256 1 x 1 / 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BFLOPs 
60 conv 512 3 x 3 / 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BFLOPs 
61 res 58 26 x 26 x 512 -> 26 x 26 x 512 
62 conv 1024 3 x 3 / 2 26 x 26 x 512 -> 13 x 13 x1024 1.595 BFLOPs 
63 conv 512 1 x 1 / 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BFLOPs 
64 conv 1024 3 x 3 / 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BFLOPs 
65 res 62 13 x 13 x1024 -> 13 x 13 x1024 
66 conv 512 1 x 1 / 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BFLOPs 
67 conv 1024 3 x 3 / 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BFLOPs 
68 res 65 13 x 13 x1024 -> 13 x 13 x1024 
69 conv 512 1 x 1 / 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BFLOPs 
70 conv 1024 3 x 3 / 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BFLOPs 
71 res 68 13 x 13 x1024 -> 13 x 13 x1024 
72 conv 512 1 x 1 / 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BFLOPs 
73 conv 1024 3 x 3 / 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BFLOPs 
74 res 71 13 x 13 x1024 -> 13 x 13 x1024 
75 conv 512 1 x 1 / 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BFLOPs 
76 conv 1024 3 x 3 / 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BFLOPs 
77 conv 512 1 x 1 / 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BFLOPs 
78 conv 1024 3 x 3 / 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BFLOPs 
79 conv 512 1 x 1 / 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BFLOPs 
80 conv 1024 3 x 3 / 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BFLOPs 
81 conv 75 1 x 1 / 1 13 x 13 x1024 -> 13 x 13 x 75 0.026 BFLOPs 
82 yolo 
83 route 79 
84 conv 256 1 x 1 / 1 13 x 13 x 512 -> 13 x 13 x 256 0.044 BFLOPs 
85 upsample 2x 13 x 13 x 256 -> 26 x 26 x 256 
86 route 85 61 
87 conv 256 1 x 1 / 1 26 x 26 x 768 -> 26 x 26 x 256 0.266 BFLOPs 
88 conv 512 3 x 3 / 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BFLOPs 
89 conv 256 1 x 1 / 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BFLOPs 
90 conv 512 3 x 3 / 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BFLOPs 
91 conv 256 1 x 1 / 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BFLOPs 
92 conv 512 3 x 3 / 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BFLOPs 
93 conv 75 1 x 1 / 1 26 x 26 x 512 -> 26 x 26 x 75 0.052 BFLOPs 
94 yolo 
95 route 91 
96 conv 128 1 x 1 / 1 26 x 26 x 256 -> 26 x 26 x 128 0.044 BFLOPs 
97 upsample 2x 26 x 26 x 128 -> 52 x 52 x 128 
98 route 97 36 
99 conv 128 1 x 1 / 1 52 x 52 x 384 -> 52 x 52 x 128 0.266 BFLOPs 
100 conv 256 3 x 3 / 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BFLOPs 
101 conv 128 1 x 1 / 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BFLOPs 
102 conv 256 3 x 3 / 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BFLOPs 
103 conv 128 1 x 1 / 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BFLOPs 
104 conv 256 3 x 3 / 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BFLOPs 
105 conv 75 1 x 1 / 1 52 x 52 x 256 -> 52 x 52 x 75 0.104 BFLOPs 
106 yolo

然後逐層解析:

卷積層:

  • layer filters size input output 
    0 conv 32 3 x 3 / 1 416 x 416 x 3 -> 416 x 416 x 32 0.299 BFLOPs 
    輸入層: 
    • 輸入:畫素為416*416,通道數為3的的圖片(開啟random引數的話可以自適應以32為基礎的變化,)
    • BN操作:對輸入進行BN操作(這裡未顯示)。
    • 卷積操作:32層卷積核(filters),每個卷積核大小為3*3,步伐為1(每個卷積視窗逐步進行卷積)。
    • 輸出:32個通道的416*416大小的feature map

res層(shortcut操作):

  • layer filters size input output 
    4 res 1 208 x 208 x 64 -> 208 x 208 x 64 
    res層: 
    • 輸入與輸出:輸入與輸出一般保持一致,並且不進行其他操作,只是求差。
    • 處理操作:res層來源於resnet,為了解決網路的梯度彌散或者梯度爆炸的現象,提出將深層神經網路的逐層訓練改為逐階段訓練,將深層神經網路分為若干個子段,每個小段包含比較淺的網路層數,然後用shortcut的連線方式使得每個小段對於殘差進行訓練,每一個小段學習總差(總的損失)的一部分,最終達到總體較小的loss,同時,很好的控制梯度的傳播,避免出現梯度消失或者爆炸等不利於訓練的情形。

darknet-53:

  • 從第0層一直到74層,一共有53個卷積層,其餘為res層。這就是Joseph Redmon大神提出的darknet-53經典的卷積層了。作為yolov3特徵提取的主要網路結構。預訓練(以imagenet資料集為訓練基礎)的權重檔案可以通過官網下載。該結構使用一系列的3*3和1*1的卷積的卷積層。這些卷積層是從各個主流網路結構選取效能比較好的卷積層進行整合得到。它比darknet-19效果好很多,同時,它在效果更好的情況下,是resnet-101效率的1.5倍,幾乎與resnet-152的效果相同的情況下,保持2倍於resnet-152的效率。

YOLO部分

從75到105層我為yolo網路的特徵互動層,分為三個尺度,每個尺度內,通過卷積核的方式實現區域性的特徵互動,作用類似於全連線層但是是通過卷積核(3*3和1*1)的方式實現feature map之間的區域性特徵(fc層實現的是全域性的特徵互動)互動。

  • 最小尺度yolo層: 
    • 輸入:13*13的feature map ,一共1024個通道。
    • 操作:一系列的卷積操作,feature map的大小不變,但是通道數最後減少為75個。
    • 輸出;輸出13*13大小的feature map,75個通道,在此基礎上進行分類和位置迴歸。
  • 中尺度yolo層:

    • 輸入:將79層的13*13、512通道的feature map進行卷積操作,生成13*13、256通道的feature map,然後進行上取樣,生成26*26、256通道的feature map,同時於61層的26*26、512通道的中尺度的feature map合併。再進行一系列卷積操作,
    • 操作:一系列的卷積操作,feature map的大小不變,但是通道數最後減少為75個。
    • 輸出:26*26大小的feature map,75個通道,然後在此進行分類和位置迴歸。
  • 大尺度的yolo層:

    • 輸入:將91層的26*26、256通道的feature map進行卷積操作,生成26*26、128通道的feature map,然後進行上取樣生成52*52、128通道的feature map,同時於36層的52*52、256通道的中尺度的feature map合併。再進行一系列卷積操作,
    • 操作:一系列的卷積操作,feature map的大小不變,但是通道數最後減少為75個。
    • 輸出:52*52大小的feature map,75個通道,然後在此進行分類和位置迴歸。

整個網路結構就是這樣了。