YOLOv4: Optimal Speed and Accuracy of Object Detection
作者是來自俄羅斯的Alexey大神
論文連接:https://arxiv.org/pdf/2004.10934.pdf
源碼:https://github.com/AlexeyAB/darknet
摘要
本文假設通用特徵包括:加權殘差連接(WRC),跨階段部分連接(CSP),跨小批量規範化(CmBN),自對抗訓練(SAT)和Mish激活。本文使用了新功能:WRC,CSP,CmBN,SAT,誤激活,馬賽克數據增強,CmBN,DropBlock正則化和CIoU loss。對其中部分功能的結合是在coco數據集上的準確率達到43.5的AP(65.7%的AP50),V100速度65FPS。
1. 介紹
本文貢獻:
a. 本文算法可以在1080ti或者2080ti的GPU上訓練一個超快和超準的目標檢測器。
b. 在檢測訓練期間,驗證了最先進的bag-of-freebies和bag-of-specials方法。
c. 本文修改了最先進的方法,使其更加適合單GPU訓練,包括:CBN,PAN,SAM等等。
2. 相關工作
2.1 目標檢測模型
input:Image,Patches,Image Pyramid
backbone:
GPU:vgg,resnet,resnext,densenet,SpineNet,EfficientNet-B0/B7,CSPResNeXt50,CSPDarknet53
CPU:squeezenet,mobilenet,shufflenet等。
neck
additional blocks:SPP,ASPP,RFB,SAM
path-aggregation blocks:FPN,PAN,BiFPN,Nas-FPN,fully-connect FPN,ASFF,SFAM
head
Sparse Prediction(兩階段)
anchor based:r-cnn,fast-rcnn,faster-rcnn,mask-rcnn,r-fcn,Libra r-cnn。
anchor free:RepPoints
Dense Prediction(一階段)
anchor based:rpn,yolo,ssd,RetinaNet
anchor free:CenterNet,CornerNet,FCOS,ExtremeNet,MatrixNet。
2.2 Bag of freebies
bag of freebias模塊主要目的是通過提高訓練成本,不增加推理成本的條件下提高檢測的魯棒性和準確率。
傳統的圖像數據增強有:亮度,對比度,分辨率,飽和度,噪聲,圖像形變,翻轉,剪切,旋轉,縮放等等。
圖像數據增強和特徵圖數據增強
圖像數據增強
cutout,mixup,cutmix,Mosaic
特徵圖數據增強
dropout,dropblock,dropconnect等等,以及使用GAN對圖像增強。
樣本不均衡問題
兩階段:多使用難例挖掘的方法解決樣本不平衡的問題
一階段:多使用focal loss的方法解決樣本不平衡的問題
目標框檢測中常用的loss函數
L1 loss,L2 loss,MSE,RMSE,Smooth L1 loss,IoU Loss,GIoU Loss,DIoU Loss,CIoU Loss。
2.3 Bag of specials
bag of specials模塊主要目的增加少量的推理成本,但是能夠顯著提高目標檢測的準確度。主要包括插件模塊和後處理方法。
插件模塊:主要增強模型中的某些屬性
擴大接收域,引入注意力機制,增強特徵集成能力等等。
擴大接收域方法:
SPP,ASPP,RFB
引入注意力機制:
channel-wise attention(代表SENet),point-wise attention(代表SAM)
特徵集成:使用Skip-connect,hyper-column去融合低維物理特徵和高維語義特徵。
FPN,SFAM,ASFF,BiFPN,PANet,fully-connect FPN,Nas-FPN等
激活函數:
tanh函數,sigmod函數,ReLU函數,LReLU,PReLU,ReLU6,SELU,Swish,hard-Swish,Mish等
post-processing mothed:
NMS,Soft-NMS,DIoU NMS
3. Methodology
兩個實時的神經網絡:
GPU:CSPResNeXt50,CSPDarknet53
VPU:使用組卷積,EfficientNet-lite ,MixNet,GhostNet,MobileNetV3
3.1 selection of architecture
本文目的是找到一個網絡分辨率,卷積層數量,參數量之間的平衡。
對比兩個backbone:CSDResNeXt50,CSPDarknet53
對比多個block用以增加感受野:FPN,PAN,ASFF,BiFPN
不同的模型,分類效果好,檢測效果不一定好,檢測器需滿足一下要求:
1. 更大的輸入網絡尺寸,能夠檢測小尺寸目標
2. 更多的網絡層數,能夠以更高的感受野覆蓋輸入網絡的尺寸
3. 更多的參數,能夠有更大的能力在單幅圖像上檢測不同尺寸的多個目標
感受野對於不同尺寸的影響,總結爲如下方面:
1. Up to the object size,允許視角覆蓋整個目標
2. Up to network size,允許覆蓋目標周邊的上下文信息
3. Exceeding the network size,增加圖像點和最終激活之間的連接數量
本文使用了SPP,PANet,BOF等結合yolov3,形成了本文yolov4。
3.2 selection of BoF and BoS
爲了改進目標檢測的訓練,CNN通常使用一下技巧:
Activations
ReLU,Leaky-ReLU,parametric-ReLU,ReLU6,SELU,Swish,Mish
Bounding box regression loss
MSE, IoU, GIoU, DIoU, CIoU,
Data augmentation
CutOut, MixUp, CutMix
Regularization method
Dropout, DropPath, Spatial DropOut, DropBlock
Skip-connections
Residual connections, Weighted residual connections, Multi-input weighted residual connections, Cross stage partial connections(CSP)
PReLU和SELU比較難訓練,ReLU6又是針對量化網絡設計,所以被捨棄,本文使用了dropBlock。
3.3 Additional improvements
爲了使得設計的檢測器能夠適應單GPU訓練,進行了額外的設計和提高。
1. 新的數據增強算法,Self-Adversarial Training(SAT)
2. 選擇最佳超參數,genetic algorithms(遺傳算法)
3. 修改已存在的方法,使其更加有效地滿足訓練和檢測,修改了SAM,PAN,CmBN
3.4 YOLOV4
YOLOV4組成如下:
backbone:CSPDarknet53
Neck:SPP,PAN
Head:YOLOv3
YOLOV4使用了:
BOF for backbone:CutMix,Mosaic data augmentation,DropBlock regularization,Class label smoothing
BOS for backbone:Mish activation, Cross-stage partial connections (CSP), Multiinput weighted residual connections (MiWRC)
BOF for detector:CIoU-loss, CmBN, DropBlock regularization, Mosaic data augmentation, Self-Adversarial Training, Eliminate grid sensitivity, Using multiple anchors for a single ground truth, Cosine annealing scheduler , Optimal hyperparameters, Random training shapes
BOS for detector:Mish activation, SPP-block, SAM-block, PAN path-aggregation block, DIoU-NMS
4. Experiment
測試分類數據集:mageNet (ILSVRC 2012 val) dataset
測試檢測數據集:MS COCO (test-dev 2017) dataset
4.1 Experimental setup
4.2 Influence of different features on Classifier training
從實驗中可以發現單純分類來說,CSPResNeXt-50效果好於CSPDarknet-53。
4.3 Influence of different features on Detector training
注:具體表中第一行代表什麼可從原論文中查看。
4.4 Influence of different backbones and pretrained weightings on Detector training
從實驗中可以發現檢測角度來說,CSPDarknet-53的效果好於CSPResNeXt-50。
4.5 Influence of different mini-batch size on Detector training
從表中發現,大的mini-batch對最終結果有一定的益處。
Figure 8: Comparison of the speed and accuracy of different object detectors. (Some articles stated the FPS of their detectors for only one of the GPUs: Maxwell/Pascal/Volta)