YOLO v4分析
YOLO v4分析
YOLO v4 的作者共有三位:Alexey Bochkovskiy、Chien-Yao Wang 和 Hong-Yuan Mark Liao。其中一作 Alexey Bochkovskiy 是位俄羅斯開發(fā)者,此前曾做出 YOLO 的 windows 版本。
那么,YOLOv4 性能如何呢?
在實際研究中,有很多特性可以提高卷積神經(jīng)網(wǎng)絡(CNN)的準確性。需要在大型數(shù)據(jù)集上對這些特征的組合進行實際測試,并需要對其結(jié)果進行理論上的證明。某些特性僅在某些模型上運行,并且僅在某些問題上運行,或者僅在小型數(shù)據(jù)集上運行;而某些特性(例如批歸一化和殘差連接)適用于大多數(shù)模型,任務和數(shù)據(jù)集。我們假設此類通用屬性包括加權(quán)殘差連接(WRC),跨階段部分連接(CSP),交叉小批量標準化(CmBN),自對抗訓練(SAT)和Mish激活。我們使用以下新功能:WRC,CSP, CmBN,SAT,Mish激活,馬賽克數(shù)據(jù)增強,CmBN,DropBlock正則化和CloU丟失,并結(jié)合其中一些特性來實現(xiàn)最新結(jié)果:在MSCOCO數(shù)據(jù)集以Tesla V10以65FPS的實時速度獲得43.5%AP(AP50為65.7%)。
在相關(guān)論文中,研究者對比了 YOLOv4 和當前最優(yōu)目標檢測器,發(fā)現(xiàn) YOLOv4 在取得與 EfficientDet 同等性能的情況下,速度是 EfficientDet 的二倍!此外,與 YOLOv3 相比,新版本的 AP 和 FPS 分別提高了 10% 和 12%。
接下來,我們看下 YOLO V4 的技術(shù)細節(jié)。
許多特征可以提高 CNN 的準確率,然而真正實行起來,還需要在大型數(shù)據(jù)集上對這些特征組合進行實際測試,并且對測試結(jié)果進行理論驗證。某些特征僅在某些模型上運行,并且僅限于特定的問題,或是只能在小型數(shù)據(jù)集上運行;而另外有些特征(如批歸一化和殘差連接)則適用于大多數(shù)模型、任務和數(shù)據(jù)集。
那么,如何利用這些特征組合呢?
YOLOv4 使用了以下特征組合,實現(xiàn)了新的 SOTA 結(jié)果:
·
加權(quán)殘差連接(WRC)
·
Cross-Stage-Partial-connection,CSP
·
Cross mini-Batch Normalization,CmBN
·
自對抗訓練(Self-adversarial-training,SAT)
·
Mish 激活(Mish-activation)
·
Mosaic 數(shù)據(jù)增強
·
DropBlock 正則化
·
CIoU 損失
據(jù)介紹,YOLOv4 在 MS COCO 數(shù)據(jù)集上獲得了 43.5% 的 AP 值 (65.7%
AP50),在 Tesla V100 上實現(xiàn)了 ~65 FPS 的實時速度。
該研究的主要貢獻如下:
-
建立了一個高效強大的目標檢測模型。它使得每個人都可以使用 1080Ti 或 2080Ti 的 GPU 來訓練一個快速準確的目標檢測器。
-
驗證了當前最優(yōu) Bag-of-Freebies 和 Bag-of-Specials 目標檢測方法在檢測器訓練過程中的影響。
-
修改了 SOTA 方法,使之更加高效,更適合單 GPU 訓練。這些方法包括 CBN、PAN、SAM 等。
YoloV4 如何實現(xiàn)這么好的效果?
YoloV4 的基本目標是提高生產(chǎn)系統(tǒng)中神經(jīng)網(wǎng)絡的運行速度,同時為并行計算做出優(yōu)化,而不是針對低計算量理論指標(BFLOP)進行優(yōu)化。YoloV4 的作者提出了兩種實時神經(jīng)網(wǎng)絡:
· 對于 GPU,研究者在卷積層中使用少量組(1-8 組):CSPResNeXt50 / CSPDarknet53;
· 對于 VPU,研究者使用了分組卷積(grouped-convolution),但避免使用
Squeeze-and-excitement(SE)塊。具體而言,它包括以下模型:EfficientNet-lite / MixNet / GhostNet / MobileNetV3。
在模型結(jié)構(gòu)選擇時,主要考慮了三個問題:為了檢測較小的物體,輸入圖片需要較高的分辨率,為了更大的感受野需要更多層的網(wǎng)絡,為了網(wǎng)絡的容量需要更多的參數(shù)。其中關(guān)于感受野作者分析了三種不同level的感受野:能看到整個目標的感受野,能看到整個圖像的感受野,大于整個圖像的感受野。作者選擇了CSPDarknet53作為主干網(wǎng)絡,SPP與modified-PAN作為Neck,沿用了yolov3的Head。
YOLOv4 包含以下三部分:
· 骨干網(wǎng)絡:CSPDarknet53
· Neck:SPP、PAN
· Head:YOLOv3
具體而言,YOLO v4 使用了:
bag-of-freebies:不會對測試過程的時間造成影響的方法。這里主要包括數(shù)據(jù)增強,dropout等正則化方法,對數(shù)據(jù)不平衡問題進行處理的方法(focal loss等),最后就是bbox回歸問題進行處理的方法(改變mse loss 為IOU loss等)。
bag-of-specials:在網(wǎng)絡中插入模塊使得網(wǎng)絡的測試過程的時間輕微增加的方法。這里主要包括上面講到的各種用于提取并組合特征的Neck,在網(wǎng)絡中加入attention module(注意力模塊),以及一些類似NMS(非最大值抑制)的后處理方法。
· 用于骨干網(wǎng)絡的 Bag of Freebies(BoF):CutMix 和 Mosaic
數(shù)據(jù)增強、DropBlock 正則化和類標簽平滑;
· 用于骨干網(wǎng)絡的 Bag of Specials(BoS):Mish 激活、CSP 和多輸入加權(quán)殘差連接(MiWRC);
· 用于檢測器的 Bag of Freebies(BoF):CIoU-loss、CmBN、DropBlock 正則化、Mosaic 數(shù)據(jù)增強、自對抗訓練、消除網(wǎng)格敏感性(Eliminate grid sensitivity)、針對一個真值使用多個錨、余弦退火調(diào)度器、優(yōu)化超參數(shù)和隨機訓練形狀;
· 用于檢測器的 Bag of Specials(BoS):Mish 激活、SPP 塊、SAM 塊、PAN 路徑聚合塊和
DIoU-NMS。
架構(gòu)選擇
該研究的目標是找出輸入網(wǎng)絡分辨率、卷積層數(shù)量、參數(shù)量(濾波器大小濾波器通道/組)和層輸入數(shù)量(濾波器)四者之間的最優(yōu)平衡。
次要目標則是挑選能夠增加感受野的額外塊(additional block),以及針對不同級別的檢測器從不同骨干層中挑選最佳的參數(shù)聚合方法,如 FPN、PAN、ASFF 和 BiFPN 網(wǎng)絡。
研究者在 CSPDarknet53 上添加了 SPP 塊,因為它能夠極大地增加感受野,分離出最顯著的上下文特征,并且?guī)缀鯖]有降低網(wǎng)絡運行速度。他們針對不同級別的檢測器從不同骨干層中挑選 PANet 作為參數(shù)聚合方法,而放棄了 YOLOv3 中使用的 FPN 網(wǎng)絡。
最后,研究者選擇了 CSPDarknet53 骨干網(wǎng)絡、SPP
額外模塊、PANet 路徑聚合 neck 和 YOLOv3(基于錨的)head 作為
YOLOv4 的整體架構(gòu)。
BoF 和 BoS 的選擇
為了提升目標監(jiān)測的訓練效果,CNN 使用了以下方法:
·
激活函數(shù):ReLU、 leaky-ReLU、parametric-ReLU、ReLU6、SELU、Swish、Mish;
·
邊界框回歸損失(Bounding box regression loss):MSE、IoU、GIoU、CIoU、DIoU;
·
數(shù)據(jù)增強:CutOut、MixUp、CutMix;
·
正則化方法:DropOut,、DropPath、Spatial DropOut、DropBlock;
·
通過均值和方差的歸一化網(wǎng)絡激活函數(shù):批歸一化(BN)、跨 GPU 批歸一化 (CGBN 或 SyncBN)、濾波器響應歸一化(FRN)、交叉迭代批歸一化(CBN);
·
跳躍連接方式:殘差連接、加權(quán)殘差連接、多輸入加權(quán)殘差連接、Cross stage 局部連接(CSP)。
在訓練激活函數(shù)時,因為 PReLU 和 SELU 更難訓練,ReLU6 是專為量化網(wǎng)絡設計的,所以從候選列表里刪除了這幾個函數(shù)。
額外改進
為了使檢測器更適合在單個 GPU 上進行訓練,研究者還做出了以下額外的設計與改進:
·
提出新型數(shù)據(jù)增強方法 Mosaic 和自對抗訓練(SAT);
·
在應用遺傳算法時選擇最優(yōu)超參數(shù);
·
修改現(xiàn)有方法,使新方法實現(xiàn)高效訓練和檢測——modified SAM、modified PAN 和 Cross mini-Batch
Normalization (CmBN)。
新型數(shù)據(jù)增強方法 Mosaic 混合了 4 張訓練圖像,而 CutMix 只混合了兩張輸入圖像,具體如下圖 3 所示:
圖 3:Mosaic 表示的一種新型數(shù)據(jù)增強方法。
自對抗訓練(SAT)也是一種新的數(shù)據(jù)增強方法,它包括兩個階段。第一個階段中,神經(jīng)網(wǎng)絡更改原始圖像;第二階段中,訓練神經(jīng)網(wǎng)絡以正常方式在修改后的圖像上執(zhí)行目標檢測任務。
CmBN 是 CBN 的改進版,它僅收集單個批次內(nèi)
mini-batch 之間的統(tǒng)計數(shù)據(jù)。
圖 4:CmBN 圖示。
研究者還將 SAM 從空間注意力機制(spatial-wise
attention)修改為點注意力機制(point-wise attention),并將 PAN 中的捷徑連接替換為級聯(lián),如下圖 5、6 所示:
圖 5:Modified SAM。
圖 6:Modified PAN。
實驗結(jié)果
YOLO v4 與其他 SOTA 目標檢測器的對比結(jié)果如下圖 7 所示。從圖上可以看出,YOLOv4 位于帕累托最優(yōu)曲線上,并在速度和準確性上都優(yōu)于最快和最精準的檢測器。
圖 7:不同目標檢測器的速度和準確性對比結(jié)果。
總結(jié)