【論文筆記】An Analysis of Scale Invariance in Object Detection - SNIP (一)

SNIP閱讀筆記

Abstract

Basic Analysis

  1. CNN對於尺度變換不具備魯棒性。
  2. 單獨在較大或較小的尺度上檢測大目標和小目標較爲困難。
  3. 數據集:訓練數據集ImageNet與測試機COCO中的物體大小分佈差別大(domain-shift)。

解決方法

SNIP - Scale Normalization for Image Pyramid,將目標在不一樣大小下的梯度信息選擇性反向傳播(selectively back-propogates)。網絡

Introduction

理論依據

issues

  1. 經過上採樣來保留good performance對於目標檢測而言是相當重要的嗎?爲何要把480x480的圖像上採樣爲800x1200?咱們能夠用smaller strides來與訓練ImageNet上的low resolution images而後fine-tune爲目標數據集中的大小嗎?dom

  2. 在與訓練是應當將訓練集中全部大小的目標都參與訓練嗎?仍是應該只取一部分大小的,如64x64~256x256。ide

Improvement

  1. 融合multiple scales
  2. 只對與訓練模型類似的RoI/anchors的梯度進行回傳,來減少domain-shift帶來的影響。

Related Work

對於目標檢測任務,學習尺度變換的信息相當重要。學習

增長feature map的resolution

  1. dilated/atrous convolutions
  2. up-sampling:訓練時1.5-2倍,測試時4倍

SDP、SSH、MS-CNN:對不一樣層進行獨立預測。 FPN、Mask R-CNN、RetinaNet:使用金字塔表示,並將淺層信息與高層信息結合來進行預測。測試

缺陷: 若小目標爲25x25的大小,即便up-sampling後(2倍),仍只有50x50的大小,然而一般預訓練的網絡中樣本目標大小爲224x224,所以對於檢測小目標而言,feature pyramid的做用是有限的。orm

Image Classification at Multiple Scales

研究因爲訓練和測試時出入圖像的分辨率(resolution)不一樣而引發的domain-shift效應cdn

所涉及的模型:blog

實驗一:Naive Multi-Scale Inference

CNN-B:將InamgeNet中的樣本縮小到48x48,64x64,80x80,96x96,128x128,而後上採樣至224x224來模擬不一樣的分辨率。ip

該實驗模擬了訓練數據的分辨率與測試數據的分辨率不一樣時所帶來的影響,結果以下圖:ci

可見,在模型未訓練過的分辨率上進行測試的結果會陷入局部最優(sub-optimal)。

實驗二:Resolution Specific Calssifiers

在實驗一的基礎上,控制訓練數據集與測試數據集的分辨率保持一致,仍選取5種分辨率,但各自訓練不一樣的結構,如48x48的圖像,結構中的ResNet-101的第一層修改成stride 1, kernel_size 3x3,而96x96的圖像預測模型第一層爲stride 2,kernel_size 5x5

卷積層輸出計算式:N = [(W - F + 2 * P) / S] + 1 N:輸出維度 W:輸入維度 F:kernel維度 P:padding(在SAME計算時使用)

[(48 - 3) / 1] + 1 = 46 [(96 - 5) / 2] + 1 = 46

實驗結果以下:

可見CNN-S的結果明顯優於CNN-B,由此可得:用低分辨率的圖像來訓練模型,一次來檢測低分辨率的目標是可行的。

實驗三:Fine-tuning High-Resolution Classifiers

由放大的低分辨率圖像訓練獲得的CNN-B模型fine-tuning後獲得CNN-B-FT模型。

該實驗是爲了說明基於高分辨率圖像訓練的模型也能夠有效提取低分辨率特徵。同時與CNN-S比較能夠看出,下降分辨率圖像上採樣爲原先2倍,比將stride縮小一半的方法效果更好。

Data Variation or Correct Scale?

數據集:COCO 基礎模型:Deformable-RFCN

這是在目標檢測數據集上進行的實驗,實驗方式與ImageNet上的圖像分類實驗類似。

用低分辨率(800x1200)的圖像訓練,用(1400x2000)的圖像測試,兩種分辨率的圖像均由640x480的圖像產生。

實驗一:Training at different resolutions

用兩種分辨率(800x1400,1400x2000)下的全部目標類實體來訓練檢測器,記做800all和1400all。

由Table1所示,1400all的結果優於800all,這是由於1400all的訓練與測試分辨率一致。

然而這種提高並不明顯,做者認爲,這是由於對於一些中等或大型的目標,通過放大後(640x480 ~ 1400x2000) 過大,致使沒法正確區分。

所以,對於小目標檢測而言,放大分辨率確實有效,但對於中大型的目標而言效果反而會變差。

實驗二:Scale Specific detectors

訓練一個分辨率爲1400x2000的檢測器,同時忽略全部80px以上的中大型目標(驗證明驗一的猜測),記爲1400<80px。

這樣獲得的結果比800all更差,做者猜想是由於忽略這些中大型目標(約佔30%)所帶來的數據損失對模型效果影響更大。

實驗三:Multi-Scale Training (MST)

用不一樣尺度的圖像來訓練檢測器,理論上應該會比較不錯,但據結果仍然不如800all。

做者表示,這是由於訓練時那些尺寸很是大或者很是小的目標會影響訓練的效果。

相關文章
相關標籤/搜索