yolov4网络结构_重磅更新!YoLov4最新论文!解读YoLov4框架!
早上刷到YOLOv4之時,非常不敢相信這是真的!今明兩天各大公眾號肯定要炸鍋了!
論文:https://arxiv.org/pdf/2004.10934.pdf
源碼:https://github.com/AlexeyAB/darknet
核心中的核心:作者將Weighted-Residual-Connections(WRC), Cross-Stage-Partial-connections(CSP), Cross mini-Batch Normalization(CmBN), Self-adversarial-training(SAT),Mish-activation Mosaic data augmentation, DropBlock, CIoU等組合得到了爆炸性的YOLOv4,可以吊打一切的YOLOv4.在MS-COCO數據上:43.5%@AP(65.7%@AP50)同時可以達到65fps@TeslaV100.Introduction
大多數基于CNN的目標檢測器僅適用于推薦系統。例如,通過城市攝像機尋找免費停車位
是由緩慢精確的模型執行的,而汽車碰撞警告與快速不準確的模型有關。改善實時目標探測器的精度使我們能夠使用它們不僅用于提示生成推薦系統,而且也用于獨立流程管理和人工輸入減少。傳統圖形處理單元(GPU)上的實時目標檢測器操作允許其質量以合理的價格使用。最精確的現代神經網絡不實時工作,需要很大的用于大批量小批量培訓的GPU數。我們通過創建一個CNN來解決這些問題,該CNN在傳統的GPU上實時運行,并且訓練只需要一個常規的GPU。
這項工作的主要目標是設計生產系統中目標探測器的快速運行速度和并行計算的優化,而不是低計算體積理論指示器(BFLOP)。我們希望所設計的對象可以很容易地訓練和使用。例如,任何使用傳統GPU進行訓練和測試的人都可以獲得實時、高質量和令人信服的目標檢測結果,如圖1所示的YOLOv4結果。我們的貢獻總結如下:
1、我們建立了一個高效而強大的目標檢測模型。它使得每個人都可以使用1080ti或2080ti GPU來訓練一個超快速和精確的目標探測器。
2、在探測器訓練過程中,我們驗證了最先進的免費包和特殊包對目標探測方法的影響。
3、我們修改了最新的方法,使之更有效,更適合于單一GPU訓練,包括CBN[89]、PAN[49]、SAM[85]等。
Contribution
作者設計YOLO的目的之初就是設計一個快速而高效的目標檢測器。該文的貢獻主要有以下幾點:
設計了一種快速而強有力的目標檢測器,它使得任何人僅需一個1080Ti或者2080Ti即可訓練這樣超快且精確的目標檢測器你;
(不會翻譯直接上英文)We verify the influence of SOTA bag-of-freebies and bag-of-specials methods of object detection during detector training
作者對SOTA方法進行改進(含CBN、PAN,SAM)以使其更適合單GPU訓練
Method
作者在現有實時網絡的基礎上提出了兩種觀點:
對于GPU而言,在組卷積中采用小數量的groups(1-8),比如CSPResNeXt50/CSPDarknet53;
對于VPU而言,采用組卷積而不采用SE模塊。
網路結構選擇
網絡結構選擇是為了在輸入分辨率、網絡層數、參數量、輸出濾波器數之間尋求折中。作者研究表明:CSPResNeXt50在分類方面優于CSPDarkNet53,而在檢測方面反而表現要差。
網絡主要結構確定了后,下一個目標是選擇額外的模塊以提升感受野、更好的特征匯聚模塊(如FPN、PAN、ASFF、BiFPN)。對于分類而言最好的模型可能并不適合于檢測,相反,檢測模型需要具有以下特性:
更高的輸入分辨率,為了更好的檢測小目標;
更多的層,為了具有更大的感受野;
更多的參數,更大的模型可以同時檢測不同大小的目標。
一句話就是:選擇具有更大感受野、更大參數的模型作為backbone。下圖給出了不同backbone的上述信息對比。從中可以看到:CSPResNeXt50僅僅包含16個卷積層,其感受野為425x425,包含20.6M參數;而CSPDarkNet53包含29個卷積層,725x725的感受野,27.6M參數。這從理論與實驗角度表明:CSPDarkNet53更適合作為檢測模型的Backbone。
在CSPDarkNet53基礎上,作者添加了SPP模塊,因其可以提升模型的感受野、分離更重要的上下文信息、不會導致模型推理速度的下降;與此同時,作者還采用PANet中的不同backbone級的參數匯聚方法替代FPN。
最終的模型為:CSPDarkNet53+SPP+PANet(path-aggregation neck)+YOLOv3-head = YOLOv4.
Tricks選擇
為更好的訓練目標檢測模型,CNN模型通常具有以下模塊:
Activations:ReLU、Leaky-ReLU、PReLU、ReLU6、SELU、Swish or Mish
Bounding box regression Loss:MSE、IoU、GIoU、CIoU、DIoU
Data Augmentation:CutOut、MixUp、CutMix
Regularization:DropOut、DropPath、Spatial DropOut、DropBlock
Normalization:BN、SyncBn、FRN、CBN
Skip-connections:Residual connections, weighted residual connections, Cross stage partial connections
作者從上述模塊中選擇如下:激活函數方面選擇Mish;正則化方面選擇DropBlock;由于聚焦在單GPU,故而未考慮SyncBN。
其他改進策略
為使得所涉及的檢測器更適合于單GPU,作者還進行了其他幾項額外設計與改進:
引入一種新的數據增廣方法:Mosaic與自對抗訓練;
通過GA算法選擇最優超參數;
對現有方法進行改進以更適合高效訓練和推理:改進SAM、改進PAN,CmBN。
YOLOv4
總而言之,YOLOv4包含以下信息:
Backbone:CSPDarkNet53
Neck:SPP,PAN
Head:YOLOv3
Tricks(backbone):CutMix、Mosaic、DropBlock、Label Smoothing
Modified(backbone): Mish、CSP、MiWRC
Tricks(detector):CIoU、CMBN、DropBlock、Mosaic、SAT、Eliminate grid sensitivity、Multiple Anchor、Cosine Annealing scheduler、Random training shape
Modified(tector):Mish、SPP、SAM、PAN、DIoU-NMS
Experiments
模型的好壞最終還是要通過實驗來驗證,直接上對比表:
更多的消融實驗分析如下:
Results
圖8顯示了與其他最先進物體探測器的結果比較。我們的YOLOv4位于Pareto最優曲線上,在速度和精度方面都優于最快和最精確的檢測器。
由于不同的方法使用不同體系結構的gpu進行推理時間驗證,我們在常用的Maxwell、Pascal和Volta體系結構的gpu上運行YOLOv4,并與其他最新方法進行比較。表8列出了使用Maxwell GPU的幀速率比較結果,可以是GTX Titan X(Maxwell)或Tesla M40 GPU。表9列出了使用Pascal GPU的幀速率比較結果,可以是Titan X(Pascal)、Titan Xp、GTX 1080 Ti或Tesla P100 GPU。至于桌子列出了使用Volta GPU的幀速率比較結果,可以是Titan Volta或Tesla V100 GPU。
Conclusions
我們提供最先進的探測器,比所有可用的替代探測器更快(FPS)和更精確(MS COCO AP50…95和AP50)。所述探測器可在8-16的常規GPU上訓練和使用這使得它的廣泛應用成為可能。一級錨定探測器的最初概念已經證明了它的可行性。我們已經驗證了大量的特征,并選擇使用這些特征來提高分類器和檢測器的精度。這些功能可以是作為未來研究和發展的最佳實踐。
Acknowledgements
作者希望感謝Glenn Jocher提出的馬賽克數據增強思想,使用遺傳算法選擇超參數,以及解決https://github.com/ultralytics/yolov3的網格敏感問題
各位小伙伴還是趕緊去研究一下原文吧,見paper吧!
申明:論文原文來源網絡, 由《計算機視覺社區》公眾號整理分享大家,僅供學習使用,不得用于商用,引用或轉載請注明出處!如有侵權請聯系刪除!
點一下??在看??會更好看哦
總結
以上是生活随笔為你收集整理的yolov4网络结构_重磅更新!YoLov4最新论文!解读YoLov4框架!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python数学知识_数学知识回顾01
- 下一篇: 物联网行业网络解决方案_2021物联网趋