分享一篇新出的重要文章:Scaled-YOLOv4: Scaling Cross Stage Partial Network,做者出自YOLOv4的原班人馬,其聚焦於針對YOLOv4的模型縮放(model scale)。
git
該文做者信息:
github
論文地址:https://arxiv.org/2011.08036
代碼地址: https://github.com/WongKinYiu/ScaledYOLOv4算法
旗下重要的三個模型:
微信
YOLOv4-CSP(面向普通GPU): 網絡
https://github.com/WongKinYiu/ScaledYOLOv4/tree/yolov4-csp架構
YOLOv4-tiny(面向低端GPU): app
https://github.com/WongKinYiu/ScaledYOLOv4/tree/yolov4-tiny編輯器
YOLOv4-large(面向高端GPU):
學習
https://github.com/WongKinYiu/ScaledYOLOv4/tree/yolov4-large測試
在我愛計算機視覺公衆號後臺回覆「YOLOv4」,便可收到包含論文和代碼的打包下載。
實現效果
1)其開發的YOLOv4-large 在COCO數據集達到SOTA精度: 55.4% AP(73.3% AP50) 並以以15 fps 在 Tesla V100運行, 而若是加上測試階段數據加強方法後,YOLOv4-large 達到 55.8% AP (73.2 AP50). 做者稱這一精度是全部已公開文獻的最高精度.
2)另外其 YOLOv4-tiny模型在COCO數據集達到 22.0% AP (42.0% AP50) , ∼443 FPS 在 RTX 2080Ti運行, 當使用 TensorRT作推理, batch size = 4 和 FP16推斷時, YOLOv4-tiny 甚至可達到 1774 FPS!
何爲模型縮放?
爲何要縮放?
首先咱們要搞清楚這篇文章做者的本意,其本不是衝着提升檢測精度而來的。其主要考慮的是在深度學習技術應用領域不斷擴大的今天,面向實際工程部署,每每須要的不是一個模型而是一套模型。
部署在雲端,也許你有高端大氣上檔次的V100 ,部署在我的電腦有大量的消費級GPU可選如2080TI(固然仍是略貴~),部署在嵌入式平臺能夠選擇TX2 、Jetson NANO等「弱機」。
模型縮放即但願一個算法衍生出多個模型,對計算和存儲的需求不一樣(精度固然也不一樣),以知足部署在不一樣平臺的需求。其實這固然不是什麼新概念,EfficientNet、EfficientDet便是一個算法的一系列模型。
做爲工業界寵愛的 YOLOv4, 須要模型縮放。
Scaled-YOLOv4
是怎麼作模型縮放的?
正如以前跟你們分享過YOLOv4論文同樣,做者們依然採用了極其工程化的方法設計 Scaled-YOLOv4 ,沒有發明什麼新思想、新路徑,而是「博採衆長」,「努力調優」。
以往模型縮放,如 EfficientDet 無非是首先選擇網絡基礎模塊,它每每又好又快,而後針對影響目標檢測的重要參數如:網絡寬度w、深度d、輸入圖像分辨率size等進行(知足必定條件下按照必定規律)調參。
雖然神經架構搜索也常被用於設計不一樣平臺的一系列不一樣模型,但EfficientDet 已經證實上述方法實際上是頗有效。
做者針對不一樣的GPU設計不一樣模型。思路依然是尋找基礎模塊,而後調整網絡寬度w、深度d、輸入圖像分辨率size。
做者認爲以前的工做沒有系統性分析各個網絡因素的影響,而做者進行了系統分析。
這裏CV君再也不跟你們分享做者的分析細節,只上結論。
針對普通GPU,對應YOLOv4-CSP,做者選擇了CSPNet (CVPR 2020 Workshop 論文)啓發下的CSP-ized(CSP化的)模型做爲基礎結構。做爲後來者,相比EfficientDet,設計 Scaled-YOLOv4 能選擇的網絡結構更多,固然是有優點的。
YOLOv4-CSP中的reversed CSP dark 結構
針對嵌入式等平臺上的弱GPU,對應YOLOv4-tiny,除了考慮計算量,做者尤爲提到要考慮內存訪問速度、內存帶寬、DRAM 速度的影響,做者選擇了OSANet做爲總體結構,並依然進行了CSP化,即CSPOSANet。CV君以爲這是搞工程化的人最值得參考的地方。
YOLOv4-tiny 計算模塊
對於高端GPU,對應YOLOv4-Large,首要考慮的是追求高精度,因此做者在提升輸入圖像分辨率和增長stage上下功夫,由於這直接影響不一樣分辨率目標和算法感覺野,輸入分辨率高、算法感覺野大能檢測到更多目標。
YOLOv4-P五、P六、P7結構
算法效果
做者在COCO數據集上進行了測試,未使用預訓練權重,從頭開始訓練。
儘管 Scaled-YOLOv4並不單純追求精度高,但跟SOTA算法相比依然很能打。
請注意,表中的YOLOv4 -CSP、P五、P六、P7依然都是實時算法,針對幀率15fps(v100 GPU上測試),固然YOLOv4-P7也取得了最高的精度,但相比相同輸入分辨率的EfficientDet-D7x也並未出現碾壓的架勢,在Large目標上EfficientDet-D7x是最優秀的,YOLOv4-P7對小目標檢測更好。
YOLOv4-Large 加上測試時圖像加強(TTA,這時在工程應用時常常作的)後,精度得到了小幅提高:
YOLOv4-tiny一樣很優秀,相比其餘主打小模型計算量小的算法,取得了速度和精度的雙優。
結論
儘管在算法設計上,該文並無帶來重要亮點,但從工程應用的角度講, Scaled-YOLOv4無疑是極其優秀的選擇!尤爲是YOLOv4-tiny,其設計不只考慮到計算量和參數量還考慮到內存訪問,感謝做者團隊的開源!
本文分享自微信公衆號 - AI科技時訊(aiblog_research)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。