小目标检测--SNIP
出發點
這篇文章的出發點,就是**「數據集」** 。如果將數據集按照圖像中目標的尺寸除以圖像尺寸的比例來排序的話,那么在ImageNet中這個比例的中位數是「0.5444」,而在COCO數據集中,這個比例的中位數是「0.106」 ,如下面的Figure1中兩個「Median」 代表的點所示。
 
 Figure1是針對ImageNet和COCO數據集中目標尺寸和圖像尺寸比例的關系曲線,其中橫坐標表示 「目標尺寸/圖像尺寸」 的值,而縱坐標則表示比例。我們看到在COCO數據集中大部分目標的面積只有圖像面積的1%以下,這「說明在COCO數據集中小目標占的比例比ImageNet多」。此外,在COCO數據集中,第90%(0.472)的倍數差不多是第10%的倍數(0.106)的20倍,這「說明COCO數據集中目標尺寸變化范圍非常大」。
「那么這兩種差異會對目標檢測帶來什么影響呢?」
在目標檢測算法如Faster RCNN/SSD中常用基于ImageNet數據集預訓練的模型來提取特征,也就是遷移學習,但是從Figure1發現ImageNet和COCO數據集在目標的尺寸分布上差異比較大,這樣在做遷移學習時可能會存在一些問題,論文將其稱為**「domain-shift」**,也可以簡單理解為是訓練集和測試集的分布有較大差異,后面也有實驗來說明這一點。
創新點
在本文之前已經有一些算法針對數據集中目標尺度變化大進行入手了,例如FPN實現多尺度特征融合來提升效果,Dilated/Deformable卷積通過改變卷積核的感受野來提升效果,通過多尺度訓練/測試引入圖像金字塔來提升效果。不同于上面這些思路,基于對數據集的深入分析,本文提出了一種新的模型訓練方式即:「Scale Normalization for Image Pyramids (SNIP)」 ,主要包含兩個創新點:
「為了減少第二節提到的Domain-Shift,在梯度回傳的時候只將和預訓練模型所基于的訓練數據尺寸相對應的ROI的梯度進行回傳。」
 「借鑒多尺度訓練的思想,引入圖像金字塔來處理數據集中不同尺寸的數據。」
核心實驗
1.
我們來首先來看一下論文在ImageNet數據集上做的關于尺寸變化的實驗,也就是去驗證第二節提到的Domain-Shift對模型效果的影響。實驗結果如Figure3和Figure4所示,這里主要是基于不同分辨率的圖像來訓練模型以及不同分辨率的圖像作為驗證集來驗證模型的方式去評估訓練集和測試集的尺度差異對模型效果的影響,首先來看Figure3:
 
 Figure3中一共展示了3種模型,下面我們分別來描述一下:
「CNN-B」。分類模型基于ImageNet數據集常規的224*224大小來訓練,但是驗證數據集進行了尺度變化,即先將驗證數據圖片縮小到48*48,64*64,80*80和128*128,然后再將這些圖片放大到224*224作為模型的輸入,這樣放大后的圖像分辨率較低。因此這個實驗模擬的就是訓練數據的分辨率和驗證數據的分辨率不一致的時候對模型效果的影響,實驗效果如Figure4(a)所示。
 「CNN-S」。 這個實驗中,訓練數據的分辨率和驗證數據的分辨率保持一致,這里主要針對的是48*48和96*96的分辨率,并且對網絡結構的第一層做了修改。例如對于48*48的數據進行訓練,將卷積核大小為7*7的卷積層改成卷積核大小為3*3,滑動步長為1的卷積層。而基于96*96的數據訓練時,將卷積核大小為7*7的卷積層變成卷積核尺寸為5*5,步長為2的卷積層。這個實驗模擬的是訓練數據和驗證數據的分辨率一致的效果,實驗結果如Figure4(b),(c)所示。
 「CNN-B_FT」。這個模型是CNN-B在放大的低分辨率圖像上fine-tune后的模型,并且輸入圖像也使用放大的低分辨率模型。可以看出這個實驗驗證的是基于高分辨率圖像進行訓練的模型是否可以有效提取低分辨率圖像的特征,實驗結果如Figure4(b),?所示。
 
 Figure4是Figure3中三種實驗的實驗結果展示,從(a)可以看出如果驗證集數據的分辨率和訓練數據的分辨率差別越大,則實驗效果越差,這說明CNN對數據的尺度變化的魯棒性還不夠好。而從(b),?的結果我們可以看出當訓練數據的分辨率和驗證數據的分辨率相同時,模型的效果會好很多,并且CNN-B-FT的效果更好,而二者的差別僅僅是模型是否在放大的低分辨率圖像上做fine-tune,因此可以得出下面的結論:
基于高分辨率圖像訓練的模型也可以有效提取放大的低分辨率圖像的特征。
2.
上面介紹了在ImageNet上的實驗細節,下面來說說在COCO數據集上關于特定尺度檢測器 和 多尺度檢測器的實驗,如Table1和Figure5所示。
 
 Table1是檢測器在小目標驗證集上的檢測效果對比結果,用的驗證圖像尺寸都是[公式]。
800all和1400all分別代表檢測器基于800*1400和1400*2000兩種尺寸的圖像進行訓練,從兩者的mAP結果對比可以看出1400all的效果稍好,猜測原因是雖然基于放大圖像 (原始圖像大概640*480,放大成1400*2000)訓練的模型在訓練過程中可以提高對小目標物體的檢測,但是由于訓練數據中尺寸中等或較大的目標的尺寸太大所以難以訓練,這就影響了模型最終的效果 。檢測的效果如Figure5(1)所示。
 
 1400<80ps表示訓練數據尺寸是1400*2000,但是訓練過程中忽略中等尺寸和大尺寸的目標,其中中等和大尺寸的標準是在原始圖像中目標寬高的像素大于80,這樣就可以減少Domain-Shift。所以,這個實驗的目的是驗證上面那個實驗的猜想,即:**基于1400*2000大小的圖像訓練時由于訓練數據中尺寸中等及較大的目標對模型訓練有負作用,**因此這里直接在訓練過程中忽略這樣的數據。 但是從Table1的實驗結果看出,這個模型的效果更差了,猜測原因是因為忽略這些訓練數據(大概占比30%)所帶來的的數據損失對模型的影響更大,具體的檢測結果如Figure5(2)所示。
 「MST」 表示訓練一個檢測器時采用不同尺度的圖像進行訓練,即前面說的多尺度檢測器。按道理來說這個實驗的效果應該會比前面2個實驗好,可是結果卻不是這樣,這是為什么呢?主要原因是訓練數據中的那些尺寸非常大或者非常小的目標會影響訓練效果。
 因此,基于上面的實驗結果,本文在引入MST思想的同時限定了不同尺寸的目標在訓練過程中的梯度回傳,這就是SNIP的核心思想。從Table1可以看出效果提升是比較明顯的。
算法框架
SNIP算法
SNIP借鑒了多尺度訓練的思想,在多尺度訓練方法中,由于訓練數據中尺寸極大或極小的目標會影響實驗結果,因此SNIP的做法就是只對尺寸在指定范圍內的目標回傳損失(該范圍需接近預訓練模型的訓練數據尺寸),這樣就可以減少Domain-Shift的影響。又因為訓練過程中采用了類似多尺度訓練的方法,所以每個目標在訓練時都會有幾個不同的尺寸,那么總有一個尺寸在指定的尺寸范圍內。
還需要注意的一點是在SNIP中,對目標的尺寸限制是在訓練過程,而不是預先對訓練數據進行過濾,訓練數據仍然是基于所有的數據進行的。實驗證明這種做法對小目標檢測非常有效。
下面的Figure6是SNIP算法的示意圖。
 
 整個流程是基于Faster RCNN的,不管是訓練ROI Head還是訓練RPN網絡,都是基于所有Ground Truth來定義候選框和Anchor的標簽。具體來說就是某個ROI在某次訓練中是否進行梯度回傳是和預訓練模型的數據尺寸有關的,也就是說當某個ROI的面積在指定范圍內時,該ROI就是valid,也就是會在此次訓練中回傳梯度,否則就是invalid(如Figure6的紫色框所示)。這些invalid 的ROI所對應的invalid ground truth會用來決定RPN網絡中Anchor的有效性。具體來說,invalid Anchor就是和invalid ground truth的IOU大于0.3的Anchor,如Figure6左邊的黑色框所示。
另外,作者還分析了RPN網絡中不同標簽的Anchor比例(一共就2種Anchor,正負樣本),我們知道在RPN網絡中,一個Anchor的標簽是根據Anchor和Ground Truth的IOU值來確定的,只有下面2種情況才會認為Anchor是正樣本:
1.假如某個Anchor和某個ground truth的IOU超過某個閾值(默認[公式]),那么這個Anchor就是正樣本。
 2.假如一個ground truth和所有Anchor的IOU都沒有超過設定的閾值,那么和這個ground truth的IOU最大的那個Anchor就是正樣本。
 遵循Faster RCNN的設定,將conv4的輸出作為RPN網絡的輸入,然后在此基礎上設定了15種Anchor(5種尺度,三種比例),然后作者介紹了一個有趣的發現,那就是在COCO數據集上(圖像大小為800*1200)只有30%的Ground Truth滿足Anchor是正樣本的第一個條件,即使將閾值調節成0.5,也只有58%的Ground Truth滿足Anchor是正樣本的第一個條件。
這就說明,即使閾值等于0.5,仍然有42的正樣本Anchor和Ground Truth的IOU值小于0.5。 顯然,這種正樣本的質量是不高的。所以SNIP引入的多種分辨率圖像作為輸入一定程度上可以緩解這種現象。
實驗結果
下面的Table2展示了SNIP算法和其它算法的對比。
 
第二行的多尺度測試比第一行的單尺度效果好,而第三行是在多尺度測試的基礎上加入了多尺度訓練的情況,這個時候在大尺寸目標(APL)上的檢測結果要比只有多尺度測試的時候差,主要是因為訓練數據中那些極大和極小的目標對訓練產生了負作用。
下面的Table3展示了優化RPN后的對比試驗結果:
 
下面的Table4進一步展示了幾個目標檢測算法的對比結果。D-RFCN表示Deformable RFCN,D-RFCN+SNIP(RCN+RPN)表示在D「eformable RFCN」算法的檢測模塊和「RPN」網絡中同時加入SNIP。
 
結論
總的來說,SNIP這個算法從數據集入手,證明了尺度和圖像金字塔在目標檢測中的重要性。然后針對性的提出SNIP算法,即我們不需要在高分辨率圖像中對大型的目標進行反向傳播,不需要在中分辨率圖像中對中型目標進行反向傳播,不需要在低分辨率圖像中對小目標進行反向傳播以更好的緩解預訓練的尺寸空間中的Domain-Shift從而獲得精度提升。
轉載:
 https://zhuanlan.zhihu.com/p/139371879
 論文鏈接:
 SNIP
總結
以上是生活随笔為你收集整理的小目标检测--SNIP的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 匈牙利算法(简单易懂)
- 下一篇: 我在CSDN的2021--一次没有专栏的
