(十九)论文阅读 | 目标检测之SNIP
簡介
圖1:論文原文
作者以COCO{\rm COCO}COCO數據集為例分析,并指出當前目標檢測任務存在的一大挑戰是數據集中目標尺寸的分布較大,尤其是對小目標的檢測方法有待改進。由此論文提出ScaleNormalizationfor{\rm Scale\ Normalization\ for}Scale?Normalization?forImagePyramids,SNIP{\rm Image\ Pyramids,SNIP}Image?Pyramids,SNIP方法以改善上述情況。實驗結果為在COCO{\rm COCO}COCO數據集上單個模型的mAP{\rm mAP}mAP為45.7%45.7\%45.7%,集成三個模型的mAP{\rm mAP}mAP為48.3%48.3\%48.3%。
 論文原文 源碼
0. Abstract
作者通過對比在ImageNet{\rm ImageNet}ImageNet數據集上不同分類模型對于小目標的分類結果,指出卷積神經網絡對輸入尺度變化不具魯棒性,即CNN{\rm CNN}CNN不能很好地處理尺度變化的問題。論文提出一種在相同尺度的圖像金字塔上訓練模型,即保持金字塔每一層的訓練樣本尺度在特定的范圍內。
 論文貢獻:(一)指出不同數據集間的遷移學習會帶來domain–shift{\rm domain–shift}domain–shift問題,即數據集分布差異帶來的模型間的不吻合;(二)利用圖像金字塔上訓練模型,在金字塔的特定層上只處理特定尺寸范圍內的樣本,以此保證樣本尺度的標準化。
1. Introduction
在引言部分,作者首先指出自AlexNet{\rm AlexNet}AlexNet以來,基于深度學習的分類模型的分類錯誤率由15%15\%15%降低至2%2\%2%,而目標檢測模型的提升不如前者。隨后,作者認為數據集中目標尺度的多樣化,以及小目標檢測是導致上述問題的主要因素。
圖2:ImageNet和COCO的對比
上圖是ImageNet{\rm ImageNet}ImageNet和COCO{\rm COCO}COCO的對比,其中橫坐標表示目標占整幅圖像的大小,縱坐標表示累計分布。可以看到,在COCO{\rm COCO}COCO數據集曲線上的(0.106,0.5)(0.106,0.5)(0.106,0.5)點可以得出近一半目標的尺寸僅占整幅圖像的1/101/101/10左右,即小目標是COCO{\rm COCO}COCO數據集的主體。此外,在COCO{\rm COCO}COCO數據集中,尺寸最小的第9/109/109/10的目標占比是尺寸最小的第1/101/101/10的目標占比的202020倍,即在COCO{\rm COCO}COCO數據集中,目標尺寸的分布變化較大。由于在訓練目標檢測模型時通常使用基于ImageNet{\rm ImageNet}ImageNet數據集的分類模型,而由圖可知二者目標分布差異較大,使用遷移學習會產生相關問題(文中稱為domain–shift{\rm domain–shift}domain–shift問題)。針對上述問題,前人工作已提出相關解決方案:
2. Related Work
利用較大分辨率的特征圖保留了更豐富的小目標信息的特點,SDP{\rm SDP}SDP、SSH{\rm SSH}SSH、MS–CNN{\rm MS–CNN}MS–CNN等采用在不同分辨率的特征圖下獨立地檢測不同尺度目標的方法;FPN{\rm FPN}FPN、Mask–RCNN{\rm Mask–RCNN}Mask–RCNN、RetinaNet{\rm RetinaNet}RetinaNet等以特征金字塔的形式融合不同分辨率的特征圖,使得檢測特征圖里包含不同尺度的上下文信息。總的來說,對于數據集中尺度變化的問題,主要使用圖像金字塔和特征金字塔兩類方法。本文基于后者,使用SNIP+D–RFCN{\rm SNIP+D–RFCN}SNIP+D–RFCN模型在COCO{\rm COCO}COCO數據集上的AP50{\rm AP_{50}}AP50?達69.7%{\rm 69.7\%}69.7%,相比于原D–RFCN{\rm D–RFCN}D–RFCN模型提高7.4{\rm 7.4}7.4個百分點。
3. Image Classification at Multiple Scales
圖3:對比實驗設計
如上圖,CNN–B{\rm CNN–B}CNN–B的過程是:首先使用ImageNet{\rm ImageNet}ImageNet數據集224×224{\rm 224×224}224×224的圖片訓練CNN{\rm CNN}CNN模型,然后通過下采樣從ImageNet{\rm ImageNet}ImageNet數據集中分別獲得分辨率為48×48{\rm 48×48}48×48、64×64{\rm 64×64}64×64、80×80{\rm 80×80}80×80、96×96{\rm 96×96}96×96、128128128×128×128×128的圖片,最后通過上采樣將其尺寸統一至224×224{\rm 224×224}224×224后作為測試集。可以看到此時的輸入圖像分辨率較低,該部分實驗的目的是測試數據集和訓練數據集使用不同分辨率圖片的對比。依次得到的分類結果如下圖(a)(a)(a):
 
圖4:ImageNet上的分類結果
圖(a){\rm (a)}(a)的橫坐標表示測試數據集的分辨率,由圖可知測試數據集的分辨率與訓練數據集的分辨率相差越大,則效果越差。由此,作者進行了接下來的實驗。CNN–B{\rm CNN–B}CNN–B和CNN–B–FT{\rm CNN–B–FT}CNN–B–FT中訓練數據集和測試數據集的分辨率相同,分別為48×48{\rm 48×48}48×48和96×96{\rm 96×96}96×96。不同的是CNN–B–FT{\rm CNN–B–FT}CNN–B–FT所使用的是在低分辨率圖像上上采樣后的數據。實驗結果如圖(b){\rm (b)}(b)和(c){\rm (c)}(c)所示,圖(b){\rm (b)}(b)表示均使用48×48{\rm 48×48}48×48大小數據集作為測試集的實驗結果,可以得到當訓練數據集的分辨率同測試數據集的分辨率一致時可以提高檢測分類準確率;圖(c){\rm (c)}(c)表示均使用96×96{\rm 96×96}96×96大小數據集作為測試集的實驗結果。由CNN–B{\rm CNN–B}CNN–B和CNN–B–FT{\rm CNN–B–FT}CNN–B–FT的實驗結果可以得到,使用高分辨率的訓練數據的確能夠提高模型的分類準確率。
4. Background
由于論文實驗大都是基于對D–RFCN{\rm D–RFCN}D–RFCN的改進,本部分首先介紹D–RFCN{\rm D–RFCN}D–RFCN的相關內容。RCNN{\rm RCNN}RCNN系列目標檢測方法以RoI{\rm RoI}RoI池化層為界,被分為兩個階段。前一個階段是CNN{\rm CNN}CNN提取特征,第二階段是處理候選框。但這兩個階段基本上是獨立計算的,即RoI{\rm RoI}RoI池化每次僅計算一個感興趣區域,不能實現共享計算。作者為了將FCN{\rm FCN}FCN引入目標檢測任務中,提出位置敏感得分圖,使得池化操作的計算可以共享,從而得到了R–FCN{\rm R–FCN}R–FCN目標檢測模型。
圖5:position-sensitive score maps
上圖展示了R–FCN{\rm R–FCN}R–FCN的核心模塊。首先,輸入圖像經過卷積產生特征圖,然后通過卷積產生一個k2(C+1)k^2(C+1)k2(C+1)維的位置敏感得分圖,其中k=3k=3k=3表示位置敏感得分圖的大小、CCC表示類別數。對于每一個由RPN{\rm RPN}RPN生成的RoI{\rm RoI}RoI區域,通過池化得到一個大小為k×k×(C+1)k×k×(C+1)k×k×(C+1)的特征圖(池化的方式是,對于輸出為橙色的位置,其根據特征圖的對應顏色通道的池化得到;其余位置類似),得分圖上每個位置的值分別對應于該方向上存在類別為ccc的目標的概率。九種不同顏色對應于左上、正上等共九個方向。然后根據對得到的特征圖的值進行投票,判斷該位置是否存在目標。下圖是R–FCN{\rm R–FCN}R–FCN整體結構:
 
圖6:R-FCN
R–FCN{\rm R–FCN}R–FCN是基于Faster–RCNN{\rm Faster–RCNN}Faster–RCNN得到的,上面分支使用RPN{\rm RPN}RPN模塊產生感興趣區域,然后通過論文提出的位置敏感得分圖,結合FCN{\rm FCN}FCN完成目標檢測。而D–RFCN{\rm D–RFCN}D–RFCN就是將可變形卷積模塊集成到R–FCN{\rm R–FCN}R–FCN中,可變形卷積的知識可以參考這里。
5. Data Variation or Correct Scale?
首先來看一組實驗結果:
圖7:實驗結果對比
首先上述實驗結果是在使用1400×2000{\rm 1400×2000}1400×2000大小的圖像訓練的模型,800all800_{all}800all?表示測試集的大小為800×1400{\rm 800×1400}800×1400、1400all1400_{all}1400all?表示測試集的大小為1400×2000{\rm 1400×2000}1400×2000,有圖可知后者的效果要好于前者,這與前面分類模型實驗結果的對比一致。但同時也觀察到,這里的提升非常小,作者猜測是由于對于原數據的分辨率進行放大(原為480×640{\rm 480×640}480×640)后,圖像本來較大的目標變得更大而使得模型難以訓練。對應于圖888中的(1)(1)(1)。
 圖777中的1400<80px1400_{<80px}1400<80px?表示模型使用1400×2000{\rm 1400×2000}1400×2000大小的圖像訓練,同時忽略圖中的大目標(大于808080像素)。但由圖可知,其得到的結果不如前者。作者猜測是由于圖像中的大目標約占總目標數的3/103/103/10左右,大量數據的損失帶來了模型性能的下降。對應于圖888中的(2)(2)(2)。
 MST{\rm MST}MST表示傳統意義上常用的多尺度訓練,即在訓練過程中隨機采樣輸入圖像的尺寸。但由圖可知,該項的實驗結果僅與800all800_{all}800all?相當。這與論文一直貫徹的數據集中目標尺度分布較大是影響目標檢測方法性能的主要因素的觀點一致。對應于圖888中的(3)(3)(3)。圖中最后一項實驗是使用本文方法SNIP{\rm SNIP}SNIP所得到的結果,提升較為明顯。對應于圖888中的(4)(4)(4)。
圖8:實驗設計
6. Object Detection on Image Pyramid
千呼萬喚始出來,經過前面大量對比實驗作者驗證了(1)(1)(1)訓練數據集使用的尺寸與測試數據集使用尺寸不一致時會影響模型的性能;(2)(2)(2)較大的訓練圖像的分辨率的確能夠提高模型的性能;(3)(3)(3)過大的輸入圖像分辨率中大目標會使得模型難以訓練,可能不會帶來想象中的提升;(4)(4)(4)傳統使用的多尺度訓練方法取得的效果可以單純通過增大輸入訓練圖像分辨率而達到等。然后給出SNIP{\rm SNIP}SNIP的細節信息:
 SNIP{\rm SNIP}SNIP是對MST{\rm MST}MST的改進,在訓練過程中,僅使用與預訓練模型采用的數據的分辨率接近的樣本參與訓練。具體地,為了消除極端大或小的樣本帶來的影響,在SNIP{\rm SNIP}SNIP中,只對尺寸在特定范圍內的目標反向傳播訓練。
圖9:SNIP
上圖描述了SNIP{\rm SNIP}SNIP的詳細過程。由輸入圖像得到圖像金字塔,對于圖像金字塔的每一層通過RPN{\rm RPN}RPN產生候選區域。在此過程中,以圖像金字塔中分辨率最大的圖像為例,只選擇位于該層所規定的范圍內的標注框作為有效樣本。如圖中左側的紫色虛線的標注框被視為無效,同時將與其交并比大于0.30.30.3的先驗框視為無效,小于0.30.30.3的視為有效樣本(即使用無效的標注框來篩選出無效的先驗框)。在論文中,RCN{\rm RCN}RCN是一個分類網絡,用于篩選出不符合規定范圍的先驗框(圖中最右部分的紫色邊界看)。這樣,圖像金字塔的每一層都有相應的有效標注框及有效先驗框,規避了使用該層處理過大或過小的目標的問題。(這一段可以參考原文,具體實現細節可能要閱讀源碼了,有不適當的地方歡迎指正)
7. Experiments
圖10:實驗結果對比
8. Conclusion
作者從ImageNet{\rm ImageNet}ImageNet和COCO{\rm COCO}COCO數據集入手分析了數據集中目標分布的不平衡,指出目標檢測性能受目標尺寸分布大的影響。同時采用一系列實驗證明了訓練模型數據集的分辨率同測試集的分辨率差異越大,檢測的結果越差。根據前面實驗的鋪墊,作者提出了SNIP{\rm SNIP}SNIP,基于圖像金字塔實現多尺度訓練。同時,在金字塔的每層限制了在該層處理的標注框和先驗框的尺寸。
由于沒有閱讀源碼,本文只總結了SNIP{\rm SNIP}SNIP的大體結構和信息,詳細內容請閱讀論文原文。
參考
完
總結
以上是生活随笔為你收集整理的(十九)论文阅读 | 目标检测之SNIP的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: git回退版本 简单易懂
- 下一篇: Cloud Rush—聚是一团火
