SNIP理解
An Analysis of Scale Invariance in Object Detection – SNIP
出發(fā)點(diǎn)
文章分析了小尺度與預(yù)訓(xùn)練模型尺度之間的關(guān)系, 并且提出了一個和 Cascade R-CNN 有異曲同工之妙的中心思想: 要讓輸入分布接近模型預(yù)訓(xùn)練的分布(本文主要探討尺度的分布不一致帶來的問題).
之后利用分析的結(jié)論, 提出了一個多尺度訓(xùn)練(MST)的升級版:Scale Normalization for Image Pyramids (SNIP).
 用于解決檢測數(shù)據(jù)集上尺寸極端變化問題。
由于小尺寸與大尺寸對象很難分別在較小和較大的尺寸下識別出來,本文提出了一個新的訓(xùn)練方案,圖像金字塔的尺寸歸一化(SNIP),有選擇地反向傳播不同尺寸的目標(biāo)實(shí)例的梯度作為圖像尺寸的公式。
作者發(fā)現(xiàn)如果將數(shù)據(jù)集按照圖像中目標(biāo)的尺寸除以圖像尺寸的比例來排序的話,那么在ImageNet中這個比例的中位數(shù)是「0.5444」,而在COCO數(shù)據(jù)集中,這個比例的中位數(shù)是「0.106」 ,如下面的Figure1中兩個「Median」 代表的點(diǎ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)檢測算法如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」。
研究現(xiàn)狀
為了緩解待檢測目標(biāo)尺寸變化以及尺寸偏小的問題,有許多方法被提出:
l 將淺層的特征與深層的特征相結(jié)合,用于檢測小目標(biāo)實(shí)例。
l 拓展 / 變形的卷積被用來增加檢測對象的感受野,用于檢測大尺寸實(shí)例。
l 在不同分辨率網(wǎng)絡(luò)層上進(jìn)行的獨(dú)立預(yù)測,用于檢測不同尺寸的對象實(shí)例。
l 利用上下文信息來進(jìn)行消歧。
l 在一個大范圍的尺寸內(nèi)進(jìn)行訓(xùn)練。
l 在一個多尺寸的圖片金字塔上進(jìn)行推斷,并且結(jié)合非極大值抑值進(jìn)行預(yù)測。
創(chuàng)新點(diǎn)
「為了減少第二節(jié)提到的Domain-Shift,在梯度回傳的時候只將和預(yù)訓(xùn)練模型所基于的訓(xùn)練數(shù)據(jù)尺寸相對應(yīng)的ROI的梯度進(jìn)行回傳?!?/p>
借鑒多尺度訓(xùn)練的思想,引入圖像金字塔來處理數(shù)據(jù)集中不同尺寸的數(shù)據(jù)。」
分辨率、尺寸與圖片大小的關(guān)系?
很多人說分辨率越高的圖片越清晰、越大,這是半錯誤的看法,分辨率其實(shí)是密度,是1英寸里有多少像素,所以,文件大小(重量)=面積×密度。舉個簡單例子:比如現(xiàn)在有一小堆沙子,文件大小是重量,像素是一顆沙,不管你怎么裝這堆沙子,它的重量和數(shù)量都一樣,就算你在1cm地方放幾萬顆沙子,跟你在1cm的地方只放1顆沙子的都一樣的,因?yàn)樯匙?#xff08;像素)總量不變,只是密度變了而導(dǎo)致面積變了而已。圖片的大小由像素的多少決定,分辨率是單位密度,同量像素圖片的分辨率越高,面積越小。
核心實(shí)驗(yàn)
實(shí)驗(yàn)一:
針對創(chuàng)新點(diǎn)一,給出實(shí)驗(yàn)解釋。在ImageNet數(shù)據(jù)集上做的關(guān)于分辨率變化的實(shí)驗(yàn),也就是「去驗(yàn)證第二節(jié)提到的Domain-Shift對模型效果的影響。如下三個模型:
l CNN-B」。分類模型基于ImageNet數(shù)據(jù)集常規(guī)的分辨率來訓(xùn)練(其中分辨率為224*224),但是驗(yàn)證數(shù)據(jù)集進(jìn)行了尺度變化,即先將驗(yàn)證數(shù)據(jù)圖片縮小到48,64,80和128,然后再將這些圖片上采樣到與訓(xùn)練數(shù)據(jù)相同尺寸作為模型的輸入,這樣上采樣后的圖像分辨率較低。訓(xùn)練集與驗(yàn)證集尺寸相同,分辨率不同?!敢虼诉@個實(shí)驗(yàn)?zāi)M的就是訓(xùn)練數(shù)據(jù)的分辨率和驗(yàn)證數(shù)據(jù)的分辨率不一致的時候?qū)δP托Ч挠绊憽?/p>
l 「CNN-S」。 這個實(shí)驗(yàn)中,訓(xùn)練數(shù)據(jù)的分辨率和驗(yàn)證數(shù)據(jù)的分辨率保持一致,這里主要針對的是48和96的分辨率,且尺寸相同。并且對網(wǎng)絡(luò)結(jié)構(gòu)的第一層做了修改。例如對于分辨率48的數(shù)據(jù)進(jìn)行訓(xùn)練,將卷積核大小為77的卷積層改成卷積核大小為33,滑動步長為1的卷積層。而基于分辨率96的數(shù)據(jù)訓(xùn)練時,將卷積核大小為77的卷積層變成卷積核尺寸為55,步長為2的卷積層。訓(xùn)練集與驗(yàn)證集尺寸相同,分辨率相同?!高@個實(shí)驗(yàn)?zāi)M的是訓(xùn)練數(shù)據(jù)和驗(yàn)證數(shù)據(jù)的分辨率一致的效果。
l 「CNN-B_FT」。這個實(shí)驗(yàn)中,先在224*224常規(guī)分辨率上進(jìn)行預(yù)訓(xùn)練,然后再在上采樣的低分辨率圖片上進(jìn)行微調(diào),且以上采樣的低分辨率圖片作為驗(yàn)證。訓(xùn)練集與驗(yàn)證集尺寸相同,分辨率一部分相同?!缚梢钥闯鲞@個實(shí)驗(yàn)驗(yàn)證的是基于高分辨率圖像進(jìn)行訓(xù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)練的模型也可以有效提取放大的低分辨率圖像的特征?!?/p>
實(shí)驗(yàn)二:
對于創(chuàng)新點(diǎn)二,給出實(shí)驗(yàn)解釋。在COCO數(shù)據(jù)集上關(guān)于「特定尺度檢測器」
 和 「多尺度檢測器」 的實(shí)驗(yàn)
結(jié)果如下圖:
l 和分別代表檢測器基于將原始圖片640480放大到8001400和1400*2000兩種尺寸的圖像進(jìn)行訓(xùn)練,從兩者的mAP結(jié)果對比可以看出的效果稍好。提升非常小,猜測原因是雖然基于放大圖像訓(xùn)練的模型在訓(xùn)練過程中可以提高對小目標(biāo)物體的檢測,但是由于訓(xùn)練數(shù)據(jù)中尺寸中等或較大的目標(biāo)的尺寸太大所以難以訓(xùn)練,這就影響了模型最終的效果」
 。
l 表示訓(xùn)練數(shù)據(jù)尺寸是14002000,但是訓(xùn)練過程中忽略中等尺寸和大尺寸的目標(biāo),其中中等和大尺寸的標(biāo)準(zhǔn)是在原始圖像中目標(biāo)寬高的像素大于80,這就是前面提到的「特定尺度檢測器」,即基于單一尺度的輸入進(jìn)行訓(xùn)練,這樣就可以減少Domain-Shift。所以,這個實(shí)驗(yàn)的目的是驗(yàn)證上面那個實(shí)驗(yàn)的猜想,即:「基于14002000大小的圖像訓(xùn)練時由于訓(xùn)練數(shù)據(jù)中尺寸中等及較大的目標(biāo)對模型訓(xùn)練有負(fù)作用,因此這里直接在訓(xùn)練過程中忽略這樣的數(shù)據(jù)。」 但是從實(shí)驗(yàn)結(jié)果看出,這個模型的效果更差了,猜測原因是因?yàn)楹雎赃@些訓(xùn)練數(shù)據(jù)(大概占比30%)所帶來的的數(shù)據(jù)損失(降低數(shù)據(jù)豐富性)對模型的影響更大。
l 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)練效果」。
l SNIP: 「本文在引入MST思想的同時限定了不同尺寸的目標(biāo)在訓(xùn)練過程中的梯度回傳,這就是SNIP的核心思想」。
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)橛?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)行的。
可以看到整個流程還是基于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」,否則就是「invalid」(如上圖的紫色框所示)。這些「invalid」 的ROI所對應(yīng)的「invalid ground truth」 會用來決定RPN網(wǎng)絡(luò)中Anchor的有效性。具體來說,「invalid Anchor」 就是和「invalid ground truth」的IOU大于0.3的Anchor,如上圖左邊的黑色框所示。
關(guān)于RPN網(wǎng)絡(luò)中不同標(biāo)簽的anchor比例作者也做了分析,我們知道在RPN網(wǎng)絡(luò)中,一個anchor的標(biāo)簽是根據(jù)該anchor和ground truth的IOU來決定的,只有兩種情況下才會認(rèn)為某個anchor的標(biāo)簽是正樣本(標(biāo)簽為1):1、假如該anchor和某個ground truth的IOU超過某個閾值(閾值默認(rèn)采用是0.7),那么該ancho就是正樣本。2、假如一個ground
 truth和所有anchor的IOU都沒超過該閾值,那么和該ground truth的IOU最大的那個anchor就是正樣本。同樣,作者將conv4的輸出作為RPN網(wǎng)絡(luò)的輸入,然后設(shè)置了15種anchor(5 scales,3 aspect ratios),接下來就有意思了,作者發(fā)現(xiàn)在COCO數(shù)據(jù)集上(圖像大小為800*1200),只有30%的ground truth滿足前面第一種情況!即便將閾值調(diào)整為0.5,也只有58%的ground
 truth滿足第一種情況!這說明什么?說明即便閾值等于0.5,仍有40%的正樣本anchor和ground
 truth的IOU小于0.5(這些anchor是因?yàn)闈M足前面的情況2才被定義為正樣本)!顯然,這樣的正樣本質(zhì)量不算很高。而這篇文章因?yàn)橐攵喾N分辨率的圖像作為輸入,所以在一定程度上緩解了這種現(xiàn)象。另外,作者也嘗試將conv4和conv5的特征做融合并預(yù)測,不過這部分文章只是一筆帶過,還需要看源碼才能知道具體是怎么做的。
其中圖片尺寸和有效ROI尺寸分別為:14002000-1080、8001200-40160、480800-120無窮。
RPN階段
對于每一個錨點(diǎn),分配15個anchors,其中有5種scale,每種scale有3中比例
用所有的GroundTruth給Anchors分配好+/-標(biāo)簽,即該anchor屬于前景或背景
根據(jù)GroundTruth在特征圖上的ROI是否落在[si,ei]范圍內(nèi)分為Valid/Invalid GT
去除無效的anchors。「invalid Anchor」 就是和「invalid ground truth」的IOU大于0.3的Anchor
實(shí)驗(yàn)結(jié)果
第二行的multi-scale test顯然比第一行的single scale效果要好。第三行,在multi-scale test的基礎(chǔ)上加入multi-scale train的時候,會發(fā)現(xiàn)在大尺寸目標(biāo)(APL)的檢測效果上要比只有multi-scale test的時候差。這個原因我們在前面也介紹過了,主要是因?yàn)橛?xùn)練數(shù)據(jù)中那些尺寸極大和極小的object對訓(xùn)練產(chǎn)生了負(fù)作用。
總結(jié)
 
                            
                        - 上一篇: ImageMagicK之合成图片
- 下一篇: 漫画 | Linux 内核,简直太形象了
