0.總結
SNIP提出了一種適用於2-stage檢測器的Image Pyramid訓練方法。該訓練方法能夠做到:
- 提供多尺度的物體信息,豐富語義信息,也是爲了彌補2中篩選造成的信息缺失
- 限制檢測器在每個Scale上的訓練(篩選Anchor、GT等),讓輸入圖像中物體的尺寸與pretrain的尺寸一致,改進學習效果。
爲此,作者首先做了兩個實驗來驗證
- fintune需要訓練、測試的尺度一致性。
- 簡單篩選(只在小物體上訓練)會造成語義缺失(大物體沒有了),簡單的MST會造成語義混淆(大小物體的尺寸差別太大了,網絡學不進去)。
之後提出了SNIP,結合Image Pyramid和Scale匹配,獲得了SOTA效果。
1.問題
COCO數據集中存在的兩個問題:1.大量小物體 2.尺度變化極大
Therefore,most object instances in COCO are smaller than 1% of image
area! To make matters worse, the scale of the smallest and largest 10%
of object instances in COCO is 0.024 and 0.472 respectively (resulting
in scale variations of almost 20 times!);
這兩個問題迫使檢測器需要具備很強的尺度不變性,同時還要具備從fintune前在ImageNet上訓練的識別任務遷移到檢測任務的能力。
已經有許多論文對該問題進行了探討,但仍然有一些重要的問題沒有被發現。
• Is it critical to upsample images for obtaining good performance for object detection? Even though the typical size of images in detectiondatasets is 480x640, why is it a common practice to up-sample them to00x1200? Can we pre-train CNNs with smaller strides on low resolution images from ImageNet and then fine-tune them on detection datasets for detecting small object instances?
• When fine-tuning an object detector from a pre-trained image classification model, should the resolution of the training object instances be restricted to a tight range (from64x64 to 256x256) after appropriately re-scaling the input images, or should all object resolutions (from 16x16 to 800x1000, in the case of COCO) participate in training after up-sampling input images?
- upsampling是否可以獲得更好的結果?是否能夠在低分辨率圖片上上pre-train,然後fintune到detection數據集上去檢測小物體?
- 當fintune時,訓練用圖像中物體的尺寸是應該嚴格限制還是讓所有尺寸的物體都參與訓練。
作者通過實驗對這些問題進行了回答,同時還進行了一些實驗去驗證多尺度能力。scale-specific designs的檢測器在每個尺度區間中訓練檢測器,這有助於減少和pretraining的模型的domain-shift,但是同時減少了各個尺度上的訓練樣本數目。但另一方面,如果在多尺度上同時訓練,又會需要很大的模型容量。
作者最終提出了一個SNIP模塊訓練範式,能夠減少訓練時的尺度變化,而不減少訓練樣本。具體一點,是通過使用一個在每個尺度上包含正則輸入表示的image-pyramid實現的。爲了最小化domain-shift,只對和pre-trainedCNN分辨率相近的ROI進行BP。
2.相關工作
尺度問題:[4, 30, 28, 21, 14, 5, 23,35, 26]
最後的stride爲32:,解決:[32, 7, 5]
常用策略:上採樣[8, 7, 15]
低級特徵結合:[23, 31, 1, 31]
獨立預測,合併:Methods like
SDP [36], SSH [29] or MS-CNN [3],
多層特徵表示: FPN, Mask-RCNN, RetinaNet [23, 13, 24],
face[17]
3.實驗
1.domain shift
這裏的domain shift指的是測試和訓練的圖像分辨率不一致。
實驗目的
探究該domain shift(測試和訓練的圖像分辨率不一致)的影響,並比較兩種解決方案。
實驗:·
網絡名稱 | 訓練 | 測試 |
---|---|---|
CNN-B | 224*224 | 先下采樣到48* 48,64* 64, 80* 80, 96* 96, 128*128。之後上採樣 |
CNN-S | 48*48 | 48*48 |
CNN-B-FT | 以CNN-B爲基礎。下采樣至48*48,再上採樣 | 同訓練集 |
網絡的訓練和測試結果如圖所示:
實驗結果如圖所示:
解釋:
- 實驗a:當訓練時所用圖像分辨率和測試時所用分辨率差別越大時,即domain shift越嚴重的時候,性能差距越大。
- 實驗b、c:當測試與訓練分辨率一致的時候,採用CNN-B-FT的方法會獲得更好的效果。也就是說,在圖像分辨率相同的情況下。放大圖片以CNN-B爲基礎進行fintune進行訓練可以獲得更好的效果。可能有兩個原因導致這個結果:1. 放大的過程使用了插值,這在某種程度上增加了一些細節。2.fintune前的網絡CNN-B提供了一個很好的初值,並且提供了一些關於高分辨率圖像分類的信息,使得CNN-B-FT表象更好。
結論
測試與訓練使用的分辨率要匹配。
2. image resolution
目的:探究幾種MST的效果吧?主要是爲了展示檢測器的兩個需求:
- 獲得更多物體信息(variation)
- 尺度變化要在網絡的可接受範圍內。
實驗以及結果:
名稱 | 訓練 | 測試 | 結果 |
---|---|---|---|
1400*2000,所有物體 | 1400* 2000,小物體 | 19.9 | |
800*1400,所有物體 | 同上 | 19.6 | |
1400*2000,忽略>80像素的物體 | 同上 | 16.4 | |
MST(Multi-Scale) | 訓練時隨機縮放圖像尺寸 | 同上 | 19.5 |
解釋:
1.
trainingat higher resolutions scales up small objects for better classification, but blows up the medium-to-large objects which degrades performance
對比和,大尺度的提升不明顯,可能是因爲大尺度圖像雖然包含更多小物體的信息,但是大物體也更大了,並且進行了BP。擾亂了網絡對於小物體特徵的學習。
2.
lost a significant source of variation in appearance and pose by ignoring medium-to-large objects (about 30% of the total object instances) that hurt performance more than it helped by eliminating extreme scale objects.
對比和,的效果更差,這可能是因爲減少了大量物體的信息(包括中型物體的信息和一些在小、中之間的物體),降低了perfermance。
- 這個實驗其實不太完善,只進行了的實驗,可以做一個把中型物體包括進來的實驗,這樣子也避免了1中可能出現的擾亂現象,也保留了更多的物體信息。
it is important to train a detector with appropriately scaled objects while capturing as much variation across the objects as possible.
對比MST和其他,MST的效果並不明顯。這可能是因爲雖然能夠增加更多的可利用的物體信息(可利用指的是能夠對網絡識別物體更加有效),但是也增加了很多無效信息,如過小的bbox和過大的bbox。MST更強的改進了2中的問題,但是也加重了1中出現的問題。
結論
總體來說,就是要同時做到兩點纔可以:
- 獲得更多物體信息(variation)
- 尺度變化要在網絡的可接受範圍內。
- 設計更好的實驗
3. Anchor和GT的匹配
*該實驗在SNIP實驗部分出現。
當使用標準配置(15種anchor,5 scales ,3 aspect ratios,IOU 0.7)時,只有30%的GT被匹配(匹配後的Anchor與其IOU超過0.7)。而IOU設置爲0.5時,58%被匹配的GT滿足此IOU。
4.SNIP(Scale Normalization for Image Pyramids)
目標:
maximal variations in appearance and pose whilerestricting scale to a reasonable range.
- 限制尺度訓練
- 保持最大樣本多樣性
做法:
- 只有對應尺度的物體回傳梯度
- 使用所有物體的信息:通過Image Pyramid來讓每個物體都有一個尺度與之對應。
具體的:
訓練過程:
輸入各個尺度的輸入圖像(實現目標1)。
RPN的訓練:
1.對於每個尺度,判斷GT是否是valid,也就是是否在合適的尺度內。
2.之後確認Anchor是否是Valid,如果與invalid的GT的overlap過大則排除。因爲這說明這個Anchor與這個invalid的GT尺度過於相似,也是invalid的。
RCN的訓練(C: Classfication)
3.對於提出的ROI也做與1相同的操作。
(1,2,實現目標1)
推斷過程:
1.RPN生成,如果符合尺度則valid。
2.尺度合併,使用soft-NMS。
備註:如果是大分辨率圖片,則將其隨機裁剪爲小圖片進行訓練(主要是GPU的內存不夠)
5.SNIP實驗
實驗配置:
RPN和RCN分開訓練。
resolution:(480, 800), (800, 1200) and (1400,2000)
RPN valid range:
(1400,2000): [0, 80]
(800,1200): [40, 160]
(480,800): [120, ∞ ]
RCN valid range:
Since in RPN even a one pixel feature map can generate a proposal we use a validity range of [0,160] at (800,1200) for valid ground truths for RPN.
(1400,2000): [0, 80]
(800,1200): [0, 160] : 原因沒讀懂
(480,800): [120, ∞ ]
Improving RPN:將5 scales增加到7。
預訓練使用到了3中實驗1的結論。
實驗結果:
首先是和單尺度、多尺度測試、多尺度訓練+測試的對比。
之後是RPN的效果對比。左邊三列應該是mmAR,IOU閾值爲50的AR,IOU閾值爲75的AR
右邊三列是不同物體尺寸的AR。可以看出來,SNPI能明顯改善在小物體上的AR,但這一部分原因也是因爲大物體的AR本來就夠高了。
最後是整體測試,對比了使用不同Backcone的結果,Ensemble爲綜合所有網絡的結果。
參考:
DPN:
https://blog.csdn.net/darren2015zdc/article/details/78728947