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