摘要:總結一下,我們這篇工作從小物體精度低這個問題入手分析,提出了一種新的multi-scale training方式 Stitcher,在常用的數據集、檢測器、訓練方式上均漲點明顯,沒有引入任何Inference負擔,有一定的簡潔實用性。不管是普通訓練還是Multi-scale training,我們發現在COCO上訓練出來的模型,小物體的AP永遠是比中物體和大物體低很多。

昨天向大家推薦了 小目標檢測的福音:Stitcher,簡單又有效 ,引起了不少朋友的興趣。這篇文章 爲 Stitcher 原作者所寫,介紹了Stitcher的來龍去脈、方法和分析,歡迎參考。

https://www.zhihu.com/question/390191723/answer/1185984775

很榮幸也很尷尬地做了一個和YOLO v4 中的Mosaic技巧部分撞車的工作,嚇得我趕緊把我們的工作放出來。

01

Stitcher: Feedback-driven Data Provider for Object Detection

在這個問題下面和大家分享一下我們的工作,正好解釋一下我們和YOLO v4 - Mosaic的區別與聯繫,以及這種類似的做法爲什麼能漲點,以及其他可以挖掘的點。

02

Motivation

去年打COCO比賽的時候,我負責研究detection的training方式,當時嘗試了Multi-scale training的各種settings、SNIP[1]/SNIPER[2]、CSN[3]等。發現Multi-scale training對模型訓練是真的很有幫助,即使在接近50 AP的高baseline上還有不俗的提升。

然而,普通的Multi-scale training太低效了,而SNIPER是真的複雜,需要處理好label assignments, valid range tuning, positive/negative chip selection,費了我們很大的力氣才把它從MXNet源碼遷移到我們自己的框架上。

這樣的心態和需求,迫使我們去研究一種更簡潔實用的multi-scale training 方法。

不管是普通訓練還是Multi-scale training,我們發現在COCO上訓練出來的模型,小物體的AP永遠是比中物體和大物體低很多。

比如,在最常用的baseline: Faster R-CNN + ResNet 50-FPN (1x) 的結果(AP: 36.7 %, AP small: 21.1 % , AP mid: 39.9 %, AP large : 48.1 % )中,AP small 比 AP large 低了兩倍還多。

接下來,我們就開始研究,小物體到底出了什麼問題,以及怎樣解決這樣的問題。

首先,我們統計了小物體在數據集中的分佈,發現訓練集中小物體的數量並不少。

如下表所示,在所有boxes中,有41.4 %是小物體,是這三類物體之中最多的;但小物體的分佈卻非常不均勻,只有52.3%的圖片中包含了小物體,而中物體和大物體分佈都相對均勻。

換句話說,小物體數量很多、但分佈非常不均勻,有 接近50% 的圖片中都沒有小物體。

接下來,我們又統計了一下,在訓練過程中小物體的loss分佈。能直接反應模型學習情況的是loss,進一步發現,還是在這個Baseline: Faster R-CNN + ResNet 50-FPN (1x)的訓練過程中,有 超過50% iterations中,小物體所產生的loss都非常低(不到總loss的0.1)。

這說明在模型訓練過程中,小物體提供給網絡的監督是不足的。

通過上述分析,我們的猜疑鍊形成:數據集中小物體分佈不均勻 --> 訓練中小物體學習不充分(Loss不足) --> 訓練完的模型小物體精度差。而接下來就是按照這個邏輯逐步設計解決方法。

03

Method

在已經有了前面multi-scale training和SNIPER的實驗結果後,我們想到可以把圖像縮小,並拼接在一起(逆SNIPER而行,SNIPER是裁剪,Stitcher是拼接)。

如下圖所示,我們把batch內每4張圖都縮小到同樣大小,之後拼成一張與正常普通同樣大小的圖作爲訓練。通過這樣的方式,把大物體和中物體縮小成中物體和小物體,來均衡不同Scale物體在訓練過程中的分佈。

(這裏與YOLOv4-Mosaic類似,但不同的是我們沒想到拼接的時候可以調整4張圖爲不同大小。)

接下來就是緊張刺激的實驗環節,完全採用這種拼接圖進行訓練,在上文36.7% 的baseline上得到了32.1%的驚人結果。

然而,就算在32.1% 的 AP 中(AP small: 21.9, AP mid: 36.4, AP large: 36.8)的AP small仍然比36.7% 的baseline中的AP small要高,這讓我們看到了希望。

這說明,拼接圖是有用的,只是我們沒用好,所以影響了最終效果。

前面對訓練過程中loss的分析,給我們提供了一個自然而然的思路,就是直接用loss 作爲反饋信號,來指導拼接圖的使用。

我們採用了一種“缺啥補啥”的簡單思路:如果上一個iteration中,小物體產生的loss不足(比例小於一個閾值),則下一個iteration就用拼接圖;否則就用正常圖片訓練。

這個思路將32.1%的結果一下子增長到了38.6%,且統計loss比例幾乎不需要額外的計算量。

04

Experimental Result

  1. 我們在Faster R-CNN、RetinaNet的1x / 2x上都進行了實驗,有2個點左右的AP提升,且漲點主要來自於AP small。這符合我們最初的Motivation和方法設計。

  2. 此外,我們還在更大的backbone / 更高的baseline (ResNext + Deformable) 、其他數據集 (PASCAL VOC)、Instance Segmentation (Mask R-CNN) 等settings上都做了實驗驗證,都有不同程度的效果提升。

05

Further Analysis

除了常規實驗以外,還有一些其他的效果分析可供討論。

1. 只能4張 (平方數) 拼接嗎?

答案是否定的。

不管是我上文介紹的拼接方式還是YOLO v4,都是在Spatial維度 (h,w)上進行拼接的。如下圖(c)中所示,本文還提供了一種在batch維度n上拼接的等價的實現方式,也能達到一樣的效果。

這樣的做法可以帶來如下好處:

  1. 拼接圖像的數目不再需要因爲spatial的限制侷限於平方數,可以自由選擇2、3、4、5、6等張數圖像進行拼接。

  2. 對於那些讀寫內存有限制的訓練設備平臺,提供了一定的自由度。

2. 過擬合問題(更長訓練時間的增益)

在後續實驗中,我們還發現Stitcher可以起到防止過擬合的作用。在不用SyncBN之類的騷操作的情況下,把一個最普通的Faster R-CNN + FPN模型直接訓練時間較長(6x)是會有嚴重的過擬合的(36.7-->35.6),但Stitcher卻沒有這個問題。

因爲在Stitcher訓練過程中,拼接圖像的挑選組合是隨機的,拼接圖像的多樣性防止了過擬合的發生。

3. 計算量代價

  1. 對於Inference階段,Stitcher 沒有做任何修改,不需要調multi-scale testing之類的操作。所以,如果使用者只關心Inference time 的話,Stitcher帶來的漲點可以說是完全免費的。

  2. 對於Training階段,Stitcher 額外引入的操作包括:image stitching 和 loss ratio calculation這兩步。經實測,後者可以忽略不計,額外的耗時集中在於前者對圖像的interpolation. 我們在同一臺 8 GPUs RTX 2080 TI 的機器上實測,對於Faster R-CNN + ResNet 50 + FPN的baseline上,加上Stitcher需要額外多訓練15分鐘左右。這相比於8個多小時的訓練來說,多等15分鐘也是可以接受的。

06

Conclusion

總結一下,我們這篇工作從小物體精度低這個問題入手分析,提出了一種新的multi-scale training方式 Stitcher,在常用的數據集、檢測器、訓練方式上均漲點明顯,沒有引入任何Inference負擔,有一定的簡潔實用性。 代碼和模型都會在近期開源。

歡迎各位大佬對我們的文章提出意見建議!

論文地址:

https://arxiv.org/pdf/2004.12432.pdf

參考:

1、An Analysis of Scale Invariance in Object Detection - SNIP

http://openaccess.thecvf.com/content_cvpr_2018/papers/Singh_An_Analysis_of_CVPR_2018_paper.pdf

2、SNIPER: Efficient Multi-Scale Training

https://papers.nips.cc/paper/8143-sniper-efficient-multi-scale-training.pdf

3、Consistent Scale Normalization for Object Recognition

https://arxiv.org/pdf/1908.07323.pdf

END

備註:目標檢測

目標檢測交流羣

2D、3D目標檢測等最新資訊, 若已爲CV君其他賬號好友請直接私信。

我愛計算機視覺

微信號:aicvml

QQ羣:805388940

微博知乎:@我愛計算機視覺

投稿:[email protected]

網站:www.52cv.net

在看,讓更多人看到  

相關文章