一文了解YOLO-v4目标检测
一、YOLO-v4主要做了什么?
通俗的講,就是說(shuō)這個(gè)YOLO-v4算法是在原有YOLO目標(biāo)檢測(cè)架構(gòu)的基礎(chǔ)上,采用了近些年CNN領(lǐng)域中最優(yōu)秀的優(yōu)化策略,從數(shù)據(jù)處理、主干網(wǎng)絡(luò)、網(wǎng)絡(luò)訓(xùn)練、激活函數(shù)、損失函數(shù)等各個(gè)方面都有著不同程度的優(yōu)化,雖沒(méi)有理論上的創(chuàng)新,但是會(huì)受到許許多多的工程師的歡迎,各種優(yōu)化算法的嘗試。文章如同于目標(biāo)檢測(cè)的trick綜述,效果達(dá)到了實(shí)現(xiàn)FPS與Precision平衡的目標(biāo)檢測(cè) new baseline。
①論文主要有以下三點(diǎn)貢獻(xiàn):[1]
②作者把訓(xùn)練的方法分成了兩類(lèi):
附:論文地址及主流框架的實(shí)現(xiàn)源碼[2]
二、網(wǎng)絡(luò)結(jié)構(gòu)
目前主流two-stage檢測(cè)器的主要架構(gòu)
- Input部分:Image,Patches,Images Pyramid(圖像金字塔)
- Backbone部分:VGG16,ResNet-50,SpineNet,EfficientNet-B0 / B7,CSPResNeXt50,CSPDarknet53
- neck部分:
- Additional blocks:SPP,ASPP,RFB,SAM
- Path-aggregation blocks:FPN,PAN,NAS-FPN,Fully-connected FPN,BiFPN,ASFF,SFAM
- Heads部分:
- Dense Predictions(one-stage):
- RPN,SSD,YOLO,RetinaNet (基于anchor)
- CornerNet,CenterNet,MatrixNet,FCOS(無(wú)anchor)
- Sparse Predictions(two-stages):
- Faster R-CNN,R-FCN,Mask R-CNN(基于anchor)
- RepPoints(無(wú)anchor)
- Dense Predictions(one-stage):
2. 下圖為 yolov4 網(wǎng)絡(luò)結(jié)構(gòu)的采用的算法,其中保留了yolov3的head部分,修改了主干網(wǎng)絡(luò)為CSPDarknet53,同時(shí)采用了SPP(空間金字塔池化)的思想來(lái)擴(kuò)大感受野,PANet作為neck部分。
Yolo-v4網(wǎng)絡(luò)架構(gòu)圖
3. 下圖為yolov4在技術(shù)處理的思維導(dǎo)圖:
YOLO-v4的backbone與detector的主要技術(shù)實(shí)現(xiàn)
三、算法知識(shí)點(diǎn)相關(guān)釋義[4]
在文中是指那些能夠提高精度而不增加推斷時(shí)間的技術(shù)。
- 比如數(shù)據(jù)增廣的方法:圖像幾何變換、Cutout、grid mask等,
- 網(wǎng)絡(luò)正則化的方法:Dropout、Dropblock等,
- 類(lèi)別不平衡的處理方法,
- 難例挖掘方法,
- 損失函數(shù)的設(shè)計(jì)等,
2.?BoS(bag of specials)
是指那些增加稍許推斷代價(jià),但可以提高模型精度的方法。
- 比如增大模型感受野的SPP、ASPP、RFB等,
- 引入注意力機(jī)制Squeeze-and-Excitation (SE) 、Spatial Attention Module (SAM)等 ,
- 特征集成方法SFAM , ASFF , BiFPN等,
- 改進(jìn)的激活函數(shù)Swish、Mish等,
- 或者是后處理方法如soft NMS、DIoU NMS等,
3.在目標(biāo)檢測(cè)訓(xùn)練中,通常對(duì)CNN的優(yōu)化改進(jìn)方法:
- 激活函數(shù):ReLU,leaky-ReLU,parameter-ReLU,ReLU6,SELU,Swish或Mish
- bbox回歸loss函數(shù):MSE,IoU,GIoU,CIoU,DIoU
- 數(shù)據(jù)增強(qiáng):CutOut,MixUp,CutMix
- 正則化方法:DropOut,DropPath,Spatial DropOut或DropBlock
- 通過(guò)均值和方差對(duì)網(wǎng)絡(luò)激活進(jìn)行歸一化:Batch Normalization (BN), Cross-GPU Batch Normalization (CGBN or SyncBN), Filter Response Normalization (FRN), orCross-Iteration Batch Normalization (CBN)
- 跨連接:Residual connections, Weightedresidual connections, Multi-input weighted residualconnections, or Cross stage partial connections (CSP)
4.CSPDarknet53
由論文可知,CSPDarknet53包含29個(gè)卷積層,725*725的感受野,27.6M參數(shù)。
backbone對(duì)比
5.關(guān)于CmBN
BN是對(duì)當(dāng)前mini-batch進(jìn)行歸一化。CBN是對(duì)當(dāng)前以及當(dāng)前往前數(shù)3個(gè)mini-batch的結(jié)果進(jìn)行歸一化,本文提出的CmBN則是僅僅在這個(gè)Batch中進(jìn)行累積。在消融實(shí)驗(yàn)中,CmBN要比BN高出不到一個(gè)百分點(diǎn)。
CmBN
6.關(guān)于SAM
Attention機(jī)制中的CBAM, CBAM含有空間注意力機(jī)制和通道注意力機(jī)制,
SAM就是其中的空間注意力機(jī)制.
SAM
7.?PANet
PANet融合的時(shí)候使用的方法是Addition, 詳解見(jiàn):CVPR 2018 PANet
YOLOv4算法將融合的方法由加法改為乘法。
PANet
?
四、算法的實(shí)驗(yàn)效果
2.因?yàn)椴煌乃惴ü紩r(shí)可能在不同的GPU上進(jìn)行測(cè)試,作者根據(jù)不同的GPU(Maxwell/Pascal/Volta)分別列出了YOLOv4與其他算法的更詳細(xì)的比較,即Table 8、9、10,幀率大于等于30的用藍(lán)底標(biāo)出。
圖一
圖二
圖三
YOLOv4 算法在實(shí)時(shí)目標(biāo)檢測(cè)算法中精度最高,實(shí)現(xiàn)了精度和速度的最佳平衡。
參考
總結(jié)
以上是生活随笔為你收集整理的一文了解YOLO-v4目标检测的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 在conda环境中pip使用清华源秒速安
- 下一篇: Keras搭建YoloV4目标检测平台