天天看點

【尺度不變性】An Analysis of Scale Invariance in Object Detection – SNIP 論文解讀 【尺度不變性】An Analysis of Scale Invariance in Object Detection – SNIP 論文解讀 前言論文概述引用文章1

【尺度不變性】An Analysis of Scale Invariance in Object Detection – SNIP 論文解讀

前言

本來想按照慣例來一個overview的,結果看到1篇十分不錯而且詳細的介紹,是以copy過來,自己在前面大體總結一下論文,細節不做贅述,引用文章講得很詳細,另外這篇paper引用十分詳細,如果做detection可以從這篇文章去讀更多不同類型的文章。

論文概述

  卷積網絡具有較好的平移不變性,但是對尺度不變性有較差的泛化能力,現在網絡具有的一定尺度不變性、平移不變性往往是通過網絡很大的capacity來“死記硬背”,小目标物體難有效的檢測出來,主要原因有:1.物體尺度變化很大,CNN學習尺度不變性較難。2.通常用分類資料集進行預訓練,而分類資料集物體目标通常相對較大,而檢測資料集則較小。這樣學習到的模型對小物體更難有效的泛化,存在很大的domain-shift。3.有的CNN的卷積核stride過大,小尺度中的小物體很容易被忽略,下圖可以很好的展現這一問題。

【尺度不變性】An Analysis of Scale Invariance in Object Detection – SNIP 論文解讀 【尺度不變性】An Analysis of Scale Invariance in Object Detection – SNIP 論文解讀 前言論文概述引用文章1

人們提出了一些解決小目辨別别的問題,作者也分别進行分析,實驗:

  1. 使用空洞卷積(dilated/atrous convolution)。減小stride的,增加feature map大小,但不會減小感受野的大小。這樣做不影響檢測大目标的性能
  2. 訓練時将圖像放大1.5到2倍,預測時,放大4倍
  3. 使用CNN中不同層的特征分别進行預測,淺層負責檢測小目标,深層負責檢測大目标
  4. 深淺層特征結合進行預測,使淺層特征結合深層的語義特征,如FPN。但當目标尺寸較小時,如25x25,特征金字塔生成的高層語義特征也可能對檢測小目标幫助不大

      作者的第一個實驗證明了當訓練圖檔的尺度與測試圖檔的尺度相差較大時性能會很差,越接近性能越好,具體可以看下圖。另外作者比較了一個新的網絡(CNN-S)來專門針對小目标檢測(如小卷積核,減少stride)與在低分辨率的資料集上來fine-tuning高分辨率訓練訓練的檢測器之間的性能,發現與其設計針對小物體的網絡不如按到傳統pre-trained模型在低分辨率的資料集進行微調(這個實驗好像對文章主旨沒什麼用?),實驗結果具體如下:

    【尺度不變性】An Analysis of Scale Invariance in Object Detection – SNIP 論文解讀 【尺度不變性】An Analysis of Scale Invariance in Object Detection – SNIP 論文解讀 前言論文概述引用文章1

  對于小目标檢測困難的原因,最容易想到的解決方法就是放大圖檔,讓小物體變大,進而不在卷積過程中丢失太多資訊,作者也就此做了實驗,發現提升并不明顯,作者分析原因是放大圖檔小物體變大,中-大的物體也變大了,進而較難分類,是以整個分類器性能下降。是以,作者又設計了一組實驗。使用1400分辨率進行訓練,同時忽略原圖中的中大目标(大于80像素)。然而,結果更差了。作者分析,這樣做忽略了很多中-大目标(30%左右)的外形特征,pose之類的特征,特征減少對網絡的學習能力産生了影響。作者又嘗試訓練具有尺度不變特性的檢測器。随機采樣圖像,用不同分辨率的圖像進行訓練(Multi-Scale Training, MST),雖然包含了各類物體的各種尺度,物體特征較多,然而效果也不太好,原因是随機采樣,會出現極大極小的樣本,影響訓練效果,又回到了最初的問題。是以作者得出結論:圖像縮放後,使用尺度接近的目标來訓練分類器很重要。

  然後SNIP登場了!

  作者提出,在訓練時,既希望訓練資料有盡可能多的外觀變化以及多種不同的尺度來提高大/小物體的檢測能力,又想訓練的尺度與預訓練的尺度較為接近進而提高檢測器的性能同時減少domain-shift。是以作者提出了SNIP訓練方法,使用MST(多尺度圖像訓練)方法時,隻訓練目标尺度在特定範圍(與預訓練的圖像尺寸接近)的圖像,在反向傳播時,忽略其他過大過小的圖像。實驗表明,效果比其他訓練方法都好。

網絡圖如下:

【尺度不變性】An Analysis of Scale Invariance in Object Detection – SNIP 論文解讀 【尺度不變性】An Analysis of Scale Invariance in Object Detection – SNIP 論文解讀 前言論文概述引用文章1

  從上圖可以發現:(轉自:點選打開)

  1. 每個pipe-line的RPN隻負責一個scale range的proposal生成。
  2. 對于大size的feature map,對應的RPN隻負責預測被放大的小物體;對于小size的feature map,對應的RPN隻負責預測被縮小的大物體;這樣的設計保證了每個CNN分支在判别proposal是否為前景時,隻需針對最易分類的中等range的proposal進行訓練。
  3. 在Image Pyramid的基礎上加入了 每層scale 的 proposal有效生成範圍,發揚本scale的優勢,回避其他scale的劣勢,大大降低了前景分類任務的難度,進而“作弊式”地實作了Scale Invariance。

  two-stage的檢測器,包括RPN提取proposals,對proposals分類和bbox回歸兩個階段,規則如下:

  1. 在分類階段,訓練時,不選擇那些proposals和GT boxes在特定大小範圍外的。
  2. RPN階段,和無效GT boxes(大小不在範圍内)的IoU大于0.3的anchor認為是無效的,忽略這些anchor。
  3. 在測試階段,使用多個分辨率的圖像進行檢測;在分類階段,去除那些回歸後bboxes大小不在特定範圍的檢測結果。然後使用Soft-NMS将不同分辨率圖像的檢測結果合并。

訓練圖像采樣方法

為了降低訓練對GPU記憶體的要求,作者将原圖進行裁剪,處理過程如下。

目标是在原圖裁剪盡可能少的1000x1000的區域,并且這些裁剪區域包含所有的小目标

具體方法:

  1. 選擇一幅圖像
  2. 随機生成50個1000x1000的裁剪區域
  3. 選擇包括目标最多的裁剪區域
  4. 如果所有裁剪區沒有包含原圖所有的目标,繼續 (2)
  5. 由于很多目标在原圖邊界,再加上是随機裁剪,為了加快速度,裁剪時,保證裁剪區域的至少一個邊在原圖邊界上。對于分辨率小于1000*1000的,或者不包含小目标的圖像,不處理。

并且作者通過實驗證明,裁剪原圖不是提高精度的原因。

訓練細節

對于預訓練的分類器,通常訓練圖像大小為224x224。為了盡可能減少domain-shift,訓練檢測器時,我們期望proposals的大小與預訓練時差不多。是以作者設定了如下的有效範圍,注意的是COCO資料集中的圖像大多在480x640左右。

左為訓練圖像分辨率,右為原圖中有效尺寸的範圍,使用了三種尺度進行訓練:

1400x2000,[0,80]

800x1200,[40,160]

480x800,[120,∞]

假設原圖短邊尺寸為480,經過簡單計算可知,有效尺寸映射到訓練圖像的分辨率上,邊長為200左右,與預訓練圖像尺寸接近。

  本文提出了一種訓練方法:圖像金字塔尺度歸一化(Scale Normalization for Image Pyramids, SNIP),該方法使用圖像金字塔來訓練網絡,并根據目标大小選擇性的反向傳播梯度,使得訓練時的scale與原始圖檔的scale相近,進而提高準确率減少domain-shift。

引用文章1

以下内容來自:http://lowrank.science/SNIP/

這篇日志記錄一些對下面這篇 CVPR 2018 Oral 文章的筆記。

Singh B, Davis L S. An Analysis of Scale Invariance in Object Detection–SNIP[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 3578-3587.

論文連結:https://arxiv.org/abs/1711.08189

代碼連結:https://github.com/bharatsingh430/snip

論點

論文一開始作者擺了個事實,對于 Image Classification 已經能夠做到 super-human level performance 了,但是 Object Detection 還差得很遠很遠,是以作者問了一個問題:Why is object detection so much harder than image classification?

作者給出的解釋是 Large scale variation across object instances,這個 scale variation 不僅僅存在于要 apply 的 target dataset 自身内部,還存在與 pre-trained dataset 和要 apply 的 target dataset 之間。

  • 對于要 apply 的 target dataset 自身内部的 extreme scale variation,作者給了下面這張圖來說明。縱坐标的 CDF 是 Cumulative Distribution Function,累積分布函數;這個 Relative Scale 應該就是 Object 應該是長或寬,占據圖像的長或寬的比例。從這張圖上能看出,COCO 的大部分目标集中在 relative scale 0.1 之下,面積小于 1 %。這裡其實有兩個問題:
    • 一個是目标本身很小,怎麼樣才能比較好的特征表示小目标,也就是讓 CNN 本身能檢測出小目标。
    • 另一個問題是,因為 COCO 裡面大部分都是小目标,而小目标因為很小,是以彼此之間尺度的倍數其實很大,scale 為 0.0001 的和 scale 為 0.1 的之間差了 1000 倍,但因為一半的目标都集中在 0.1 一下,是以特别小的尺度的其實也有大量目标,并不能被忽略。也就是說是大量、數目不可忽略的 very small objects 的存在,使得 object detection 資料集上的 scale variation 很大。是以對于 COCO,就要求 CNN 必須要有在極小的 scale 和 很大的 scale 上(這兩者之間的比例值很大,比如 0.0001 vs 0.9)之間的目标都有很好的分類能力才會有很好的性能,也就要要有對 extreme scale variation 的魯棒性,即 scale-invariant。
【尺度不變性】An Analysis of Scale Invariance in Object Detection – SNIP 論文解讀 【尺度不變性】An Analysis of Scale Invariance in Object Detection – SNIP 論文解讀 前言論文概述引用文章1
  • 對于 pre-trained dataset 和要 apply 的 target dataset 之間的 scale variation,作者給了 domain-shift 這個名詞來形容。ImageNet 是用來圖像分類的,目标一般 scale 比較大,而 object detection 資料集中的目标的 scale 差異就很大了。在 ImageNet 這種大目标資料集上 pre-trained 的 features,直接用在檢測 object detection 中的那些小目标,可以預期到效果并不會很好,這就是 domain-shift 造成的。

歸根到底,object detection 目前做不好,還是因為有大量 very small objects 存在的本身,而 small objects 檢測很難,因為:

  1. small objects 因為 small,内部 scale 就差異很大(倍數,因為分母很小,一除就會很大),檢測器需要很強的 scale-invariance 能力,而 CNN 就其設計本身其實是沒有 scale-invariance 的;
  2. small objects 本身 small,在 ImageNet 這樣 Median Scale Objects 為主的 Datasets 上 Pre-trained 的 Features 直接用來 Detect Small Objects 效果不好,因為 domain-shift。
  3. CNN 抽取 semantic feature 導緻的 coarse representation 和 detect small objects 需要 fine resolution 之間的沖突,small objects 因為 small,很難在 coarse representation 還有很好的表示,很可能就被忽略了
    • The deeper layers of modern CNNs have large strides (32 pixels) that lead to a very coarse representation of the input image, which makes small object detection very challenging.
    • 是以本質上是因為 strides 太大導緻的 原圖像 的表示是非常 coarse 的表示,在這種 coarse 的表示中,小目标本身很容易就會被忽視掉了
    • 實際上這個問題,在 Semantic Segmentation 中也是存在的,我們希望能夠有既是 Fine Resolution 又是 Semantic 的表示,這也是為什麼後面的一些改進方法和 Semantic Segmentation 方法做法相同的原因。

為了 alleviate 由 scale variation 和 small object instances 本身導緻的問題,目前大概有下面這些思路:

  1. features from the layers near to the input, referred to as shallow(er) layers, are combined with deeper layers for detecting small object instances [23, 34, 1, 13, 27],
    • 典型代表是 FPN、SSD
    • 這個路線其實用來處理上面的難點 3,coarse representation vs fine resolution 的
    • 但作者點出了 the high level semantic features (at conv5) generated even by feature pyramid networks will not be useful for classifying small objects,高層特征沒用如果目标小,這個很合理,因為這個途徑并沒有來處理難點 1 和 難點 2 是以當然束手無措
  2. dilated/deformable convolution is used to increase receptive fields for detecting large objects [32, 7, 37, 8]
    • 這個路線也是用來處理上面的難點 3,為了最後有一個 fine resolution 的 representation
  3. independent predictions at layers of different resolutions are used to capture object instances of different scales [36, 3, 22]
    • 這個路線還是用來處理上面的難點 3,做 Prediction 的時候能夠在合适的 Feature 抽象程度(Resolution)上做
  4. context is employed for disambiguation [38, 39, 10]
    • 這個不了解,需要去看論文
  5. training is performed over a range of scales [7, 8, 15] or, inference is performed on multiple scales of an image pyramid
    • 這條路線對于小目标來說其實也就是 上采樣,很暴力但也很有效,同時來處理上面的難點 1 scale variation 和 難點 3 目标太小在 coarse representation 中殘留不多的問題,當然這種方式也有問題,這個會在後面讨論
  6. predictions are combined using nonmaximum suppression [7, 8, 2, 33]

總之,檢測小目标,要麼解決問題,也就是對小目标做很好的特征表示,要麼消滅問題本身,把小目标消滅掉,統統 upsampling 成大目标,在對小目标進行 scale-invariant 的特征表示束手無策的情況下,upsampling 似乎就成了比較可行的方案了。不過還需要有很多問題要搞清楚:

  • upsampling 到底有沒有用?
  • 到底要怎麼做 upsampling?
  • 要對誰做 upsampling?隻對 training,還是隻對 test,還是都做?
  • 如果都做 upsampling,彼此又該怎麼用?都周遊所有尺度麼?還是要固定尺度,為了和 pre-trained datasets 的尺度一緻。

對應到作者原文中,作者問的是下面兩個問題:

  • Is it critical to upsample images for obtaining good performance for object detection? Even though the typical size of images in detection datasets is 480x640, why is it a common practice to up-sample them to 800x1200? Can we pre-train CNNs with smaller strides on low resolution images from ImageNet and then fine-tune them on detection datasets for detecting small object instances?
  • When fine-tuning an object detector from a pre-trained image classification model, should the resolution of the training object instances be restricted to a tight range (from 64x64 to 256x256) after appropriately re-scaling the input images, or should all object resolutions (from 16x16 to 800x1000, in the case of COCO) participate in training after up-sampling input images?

在本文中,作者依次回答了上面這些問題:

  • 首先,up-sampling 對于 small object detection 來說非常重要,這也是為什麼對于 detection datasets, it is a common practice to up-sample 480x640 to 800x1200。
  • pre-train CNNs with smaller strides on low resolution images from ImageNet 然後再 fine-tune them on detection datasets for detecting small object instances 這種是方式是可以的而且是本文提倡的,隻不過 fine-tuning 和 test 都要在本文提出的特殊的 Pyramid 上做
  • 為了消除 domain-shift,在做 fine-tuning 的時候,需要将 training object instances 大小限制在 a tight range (from 64x64 to 256x256) 以保持與 pre-trained datasets 的 object scales 一緻這種方式效果最好,而不是 all object resolutions (from 16x16 to 800x1000, in the case of COCO) 都參與到訓練中。

是以,綜上所述,本文的貢獻或者說 argument 就在于提倡訓練 detector 的時候要用 Pyramid,但隻有固定尺度内的目标才被拿來參與訓練,作者把這種訓練方式叫作 Scale Normalization for Image Pyramids (SNIP)。本文本質上是一篇讨論怎麼來使用 Image Pyramid 的論文,故而後面的論文都是比較不同的 Image Pyramid 使用方式的。

最典型的就是下面兩種使用方式:

  1. scale-specific detectors:variation in scale is handled by training separate detectors - one for each scale range.
    • 一個 detector 負責一個 scale 的 objects
    • 這裡的樣本應該是沒有做過 Image Pyramid 的 Datasets,這樣的話,對于每個 scale 來說,樣本數量就減少了,訓練樣本少了,對于訓練一個 detector 來說,并沒有把全部的 samples 用上
  2. scale invariant detector:training a single object detector with all training samples
    • 這個雖然叫作 scale invariant detector,其實不過隻是一個美好的期許而已,實際上 CNN 本身是沒有 scale invariance 這個性質的。即使最後表現出了一定的能夠檢測 multi-scale object 的能力,但這隻是「『假象』,那不過 CNN 是用其強大的拟合能力來強行 memorize 不同 scale 的物體來達到的capacity 來強行memorize 不同 scale 的物體來達到的capacity,這其實浪費了大量的 capacity」[1],也就是說 capacity 并沒有被用到該用的地方去

是以,這裡就有一個取舍了,scale-specific detector 沒有用上全部 samples 可能會導緻性能不佳;scale invariant detector 浪費了大量的 capacity 來強行 memorize 不同 scale 的物體,而不是用來學習語義資訊,也會導緻性能不佳。最好的當然是,不做取舍,兩個都要,即能用上全部 samples,而且不将 capacity 浪費在強行 memorize 不同 scale 的物體上。實際上,這個是可以做到的。

本文的 SNIP,通過 Image Pyramid,使得每個 Object 都能有一個落在與 Pre-trained 的 ImageNet 資料集的 Scale 相同的表達,并且隻對經過 Image Pyramid 後與 Pre-trained 的 ImageNet 資料集的 Scale 相同的 Sample 進行訓練,既保證了用上全部 samples,又将capacity 都用在了學習語義資訊上。

論證

作者在「3. Image Classification at Multiple Scales」和「5. Data Variation or Correct Scale?」兩處安排了兩個論證明驗。

Fining-tuning, whether or not?

「3. Image Classification at Multiple Scales」這一節研究 domain shift 的影響,除此之外,作者其實還要回答另外一個問題,那就是既然 domain-shift 有影響,那還要不要采用 fine-tuning 這種方式,也就是拿 pre-trained weights 做初始化,直接在 object detection 的 target dataset 上 train from scratch 不好嗎?

作者安排了三個論證明驗,最後證明了即使有 domain shift,還是應該要采用 pre-trained + fine-tuning 這種方式。也就是回答了作者一開始提出來的問題:

Can we pre-train CNNs with smaller strides on low resolution images from ImageNet and then fine-tune them on detection datasets for detecting small object instances?

答案是 yes, we can.

此外,其實 domain shift 不僅僅是在 pre-trained datasets 和 target datasets 之間存在,其實我們在做 Test 的時候,為了檢測小目标通常會做 Image Pyramid,會縮小、放大圖像,這個時候,Test 的 Pyramid 裡面的 object 也會跟 Training 時候的 object scale 不一緻,是以這裡就提醒我們一點,在使用 Image Pyramid 的時候還要考慮 domain shift 的影響。

是以,Pre-trained Data 與 Training Data 之間有 domain shift,Training Data 與 Test Data 之間也會有 domain shift. 但這兩個雖然都叫 Domain Shift,其實還有點不同,Pre-trained Data 與 Training Data 之間有 domain shift 是由于 Object 在原有 Resolution 下本身的 Scale 分布造成的;而 Training Data 與 Test Data 之間的 domain shift,則是由 Test 時候采用 Image Pyramid 造成的。

Naive Multi-Scale Inference

  1. 這個實驗所采用的是直接拿在 Full Resolution 的資料集上得到的 Pre-trained Weights 拿來應用于 Target Dataset,不做 Fine-tuning。
  2. 但是對于 Detection,這個實驗的啟示是 Training Data 與 Test Data 之間由于 Image Pyramid 造成的 domain shift 的影響。
  3. 這個實驗是在原尺寸的 ImageNet 上 Training,然後在經過 down-sampling 再 up-sampling 的圖像上做 Test;
  4. 對原圖像做 down-sampling 是為了獲得 low-resolution 的圖,再把 low-resolution 的圖 up-sampling 成跟 training image 一樣大小是為了模拟 Pyramid 裡面的 up-sampling 的行為,因為 Detection 最後還是對一個 Region Proposal 的區域做 Classification,是以,這個實驗雖說是在審視 Training Set 和 Test Set 在 Resolution 上的差異對 Classification 的影響,但其實也解釋了做 Detection 的時候,Training Set 和 Test Set 在 Resolution 上的差異的影響。
  5. 這裡的 Resolution 指的是圖像的清晰程度。
  6. 結論自然是 Training Set 和 Test Set 的 Resolution 差異越大,效果越差,是以要保證 Training Set 和 Test Set 的 Resolution 一緻。
說明直接放大小物體去測試是不行的,是要把放大後的小物體真正參與到訓練裡。

Resolution Specific Classifiers

  1. 這個實驗所采用的是直接在 Low Resolution 的 Target Dataset 上 Training from scratch,不做 pre-training。
  2. Naive Multi-Scale Inference 這個 Network 是應用于 Full Resolution 資料的網絡,網絡本身相對複雜,CNN-B 的 B 應該是 Base 的意思吧,也就是基準網絡,模拟的是在 Full Resolution 上訓練的基準網絡在 Low Resolution 圖像上測試的效果。
  3. Resolution Specific Classifiers 這個 Network,是在 Low Resolution 資料上訓練并在 Low Resolution 資料上測試,但是為了能夠讓網絡應用在 Low Resolution 的圖像上,采用的是 Simplified network,是以叫 CNN-S。此時,雖然 Training Data 和 Test Data 的 Resolution 一緻了,但是因為 Network 簡單了,capacity 弱了,也會造成預測效果不好。
  4. 這時候就要看,究竟是 簡化網絡造成的預測效果不好影響大,還是 Training 和 Test 資料的 Resolution 不一緻的 Domain Shift 對預測效果不好的影響大了,從實驗結果上看,CNN-S 遠好于 CNN-B,注意這裡的前提是 資料充足。
  5. 是以可以得到的結論是,在資料充足的前提下,Domain Shift 會造成很大的性能損失,也就是說 CNN 并沒有學習 Scale Invariance 的能力,可以遇見即使在 Image Pyramid 做 Test 的時候,CNN 對于在 Training 沒見過的 Scale 的 Object 的時候,效果會很差,這其實也說明了一定要讓 Training Data 和 Test Data 在一個尺度的重要性。

Fine-tuning High-Resolution Classifiers

  1. 這個實驗所采用的是先在 Full Resolution 的 Pre-trained Dataset 上做 Pre-training,然後再在 Low Resolution 的 Target Dataset 上做 Fine-tuning。當然為了輸入網絡,Low Resolution Image 要做下 Upsampling.
  2. 因為這個是在 CNN-B 的基礎上做了 Fine-tuning,是以叫作 CNN-B-FT。
  3. CNN-B-FT 的效果明顯好于 CNN-S,這說明為了 Low Resolution Data 去削足适履采用 low capacity 的簡單網絡,不如還是采用 Pre-trained on Full Resolution Dataset + Fine-tuning on Low Resolution Dataset 這種方式。
  4. 其實這是很合理的,相比 Learning from Scratch 的随機初始化權重,Pre-trained weights 至少給了一個合适的權重初始化。反正最後還是要在 Target Dataset 上做。但要注意,Fine-tuning 的時候,Target Dataset 是被 up-scaling 了跟 Pre-trained Dataset 一樣的大小。這樣做應該是為了保證 pre-trained datasets 和 target datasets 之間的 object 大小一緻。

Fine-tuning, how?

Training on 800 x 1400,test on 1400 x 2000

  1. 這個是模拟僅僅 inference is performed on multiple scales of an image pyramid;在 800 x 1400 的圖檔上 Training,然後在 1400 x 2000 上的圖檔上做 Test 是為了檢測小目标常常采用的是政策。
  2. 這是基準,後面的都要跟這個比,這個叫做 800-all。

Training on 1400 x 2000,test on 1400 x 2000

  1. 這個 upsampling 了 小目标,而且 Training 和 Test 在同一尺度上,但最後的效果僅僅比 800-all 好了一點點,可以忽略的一點。
  2. 作者給的話就是 up-sampling 會 blows up the medium-to-large objects which degrades performance,median size object become too big to be correctly classified!
  3. 我自己的了解是 up-sampling,雖然減小了小目标在 target dataset 與 pre-trained dataset 之間 domain shift,但是又增加了 medium size 的 objects 在 target dataset 與 pre-trained dataset 之間 domain shift,大量 median objects 變成了超大目标, scale 和 ImageNet 這樣的 pretrained dataset 上大部分目标的 scale 不一緻

Scale specific detectors

  1. 為了去除 Scale Variation 讓 CNN 把能力都用在 Memorizing 而不是 Learning Semantic 上帶來的性能下降,作者隻對一定 scale 的小目标做了訓練,也就是沒有了 scale variation,但 training data 的數量減少了。
  2. 實驗結果表明,這比 800-all 的效果還要差,因為去除掉了 median-to-large 的 objects,并不有利于 CNN 學習語義,也就是說,去掉一些 scale 的樣本不利于學習語義,塞給 CNN 各種 scale 的樣本讓它去強行記憶也不利于 CNN 學習語義。
單純隻用小物體效果也不好是因為資料不足,大物體其實對于語義資訊是很有幫助的。你隻用了部分資料還不如全用了雖然用的不特别好。

Multi-Scale Training (MST)

  1. 用 Image Pyramid 生成多個 Resolution,然後用一個 CNN 去 fit 所有這些不同 Resolution 的 object,最後的結果是跟 800-all 差不多。
  2. 說明 CNN 沒有學習 Scale Invariance 的能力,強行讓它記住不同尺寸的目标,會損害它 Learning Semantic 的能力,進而雖然 Data 經過 Image Pyramid 數量增加了會帶來一點增益,也随着 Learn 到的 Semantic 能力的損失下降了。
  3. 這要要求我們理想的 detector,即能夠利用上所有的樣本,但喂它的這些樣本又能夠都處于合适的尺度内,進而能夠讓 CNN 把能力都放在 Learning Semantic Information 上。
是以由 DNN 學到的特征不具有: 旋轉不變性,尺度不變性?都是資料堆起來的假象,或者說是通過 capacity 由不同 neuron 死記硬背

結論

  1. 對于 Scale-Variation,有兩種思路,一種是增大學到 Scale-Variation 的能力,進而能夠 handle Scale-Variation,另一種是 減少面對資料中的 Scale-Variation,這樣就相當于把任務給 simplified 的了。作者采用了後面一種,可以說是簡單粗暴,也可以說是治标不治本。
  2. 如果要想賦予 CNN 尺度不變性,還是要考慮怎麼樣的結構在設計上考慮了 scale invariance,以及怎麼從 data 中抽取出或者說學習到這個 scale invariance。
  3. 除了尺度不變性,CNN 其實也學不到旋轉不變性,如果你的 target dataset 裡面旋轉不變性很重要,那可以考慮采取跟本文一樣的操作。

感想

我很喜歡這篇文章,它給了我們這些做應用的人一個清晰的怎麼做應用研究的範式。通過仔細分析現在存在的問題背後的原因,然後找出可以解決這個問題的手段,而不是堆疊一些 fancy 時髦的東西,是值得我學習的榜樣?。

Reference

下面是一些寫這篇筆記時的一些參考資料,對我嘗試了解 SNIP 提供了很大的幫助。

[1] CVPR18 Detection 文章選介(下)

[2] 目标檢測論文閱讀:An Analysis of Scale Invariance in Object Detection – SNIP

[3] 目标檢測 - SNIPER-Efficient Multi-Scale Training - 論文筆記

posted @ 2018-10-17 22:20 向前奔跑的少年 閱讀( ...) 評論( ...) 編輯 收藏