論文:You Only Look One-level Feature
下載地址:https://arxiv.org/abs/2103.09460
代碼: https://github.com/megvii-model/YOLOF
Introduction
構建特征金字塔最普遍使用的方式是FPN,FPN的成功主要有兩點,一是多尺度特征融合,二是分而治之,所謂分而治之就是對不同尺度的目標在不同的分辨率上檢測。
作者基於FPN進行了一項實驗。針對多尺度特征融合提出多層輸入和單層輸入的方式,針對分而治之提出在單層檢測和多層檢測的方式,兩者結合就是如下圖所示的MiMo,SiMo,MiSo,SiSo。
根據圖a和b可得出多尺度融合的特征所帶來的精度提升很少。對比圖a和c,分而治之的方式可帶來12的mAP的提升。
這可以得出兩個結論:
(1) 這表明C5層基本融合了全部語義信息,沒必要進行多尺度融合。
(2) 分而治之帶來的益處遠多於多尺度特征融合。
然而相比於單層檢測,使用分而治之意味着需要更多的內存,降低推理速度,且對於one-stages的檢測器來說結構更復雜。
基於第一個實驗的結論,作者進行了第二個實驗--比較MiMo和SiSo這兩種Encoder-Decoder方式。
實驗結果如下圖所示,MiMo的精度比SiSo更高,但推理速度慢了很多,且MiMo與SiSo的內存之比為134G vs 6G。
經過分析,SiSo精度低的原因是有兩個:
(1) 與C5的特征感受野的匹配的尺度范圍有限。
(2) 在單層通過稀疏anchor方式產生的positive anchor數量極其不平衡。
基於以上兩個實驗,作者提出不再使用多尺度融合,而是要擴大C5所能匹配的尺度范圍,這樣能在提高精度的同時,充分利用SiSo的速度和低內存的優點。所使用的方式就是對這兩個問題進行改進。
Methods
提出Dilated Encoder來解決C5的尺度匹配范圍的問題,提出Uniform Matching來解決單層positive anchors數量不平衡的問題。
Dilated Encoder
為方便讀者理解,先補充一點說明,特征金字塔的一種方式就是FPN這種使用降采樣來構建,另一種方式就是通過多支路使用不同空洞率的空洞卷積 (dilation convolution)來構建。
關於特征金字塔這種技術,在很多論文中提出了一些新的特征融合方式,在下一篇中將對特征金字塔進行技術總結,感興趣的讀者請關注公眾號《CV技術指南》的技術總結部分。
在這里就是使用了第二種方式來構建特征金字塔,但有所不同的是,這里並不是使用多支路,而是將其串聯,一條支路中使用四種空洞率的空洞卷積,看圖更容易理解。
Dilated Encoder由一個Projector和四個Residual Blocks組成,其中Residual Blocks中3x3卷積的空洞率是不一樣的。
Uniform Matching
MiMo和SiSo產生的anchor的數量比為100K vs 5K,由於使用Max-IOU這種匹配方式,大的GT boxes會比小的GT boxes產生更多的positive anchor,這使得網絡在訓練過程中將更多的注意放在了大的 GT boxes,而忽視了小的。
因此Uniform Matching的方式是使用最近鄰方式來匹配。具體方式是選擇GT boxes最近的K個boxes, 這樣的方式不管GT boxes大小可以匹配相同數量的Boxes。
conclusion
1.以608x608的輸入,YOLOF 在2080Ti上以60fps的速度實現了44.3 mAP的精度。
2.與YOLO_v4相比,在提高了0.8mAP的基礎上快了13%。
3.達到RetinaNet的精度,並比它快2.5倍。
4.僅用了一層特征就達到了DETR的精度,訓練速度快了7倍。
本文來源於公眾號 CV技術指南 的論文分享系列。
公眾號更多技術總結內容
更多相關技術總結請掃描文末二維碼關注公眾號。