空間轉換器網路功能

2015 年 9 月 7 日 作者 Alban Desmaison

tl;dr

幾個星期前,Google DeepMind 發表一篇精彩的論文,名為空間轉換器網路,目標是以非常優雅的方式提升 CNN 的幾何不變性。

Moodstocks,我們非常喜歡這種方法,因此決定執行這項方法,看看在一個稱為 GTSRB 的不太簡單的資料集上會如何運作。

到最後,空間轉換器網路使我們透過一個更簡單的管道(沒有抖動、平行網路、精緻的正規化技術,…),超過現有技術。

GTSRB 資料集

GTSRB 資料集(德國交通標誌辨識基準)由 Institut für Neuroinformatik 小組在此提供。此資料集在 2011 年舉辦的比賽中發布(結果)。圖片涵蓋 43 種不同的交通標誌,總計有 39,209 個訓練範例和 12,630 個測試範例。

dataset-samples

Moodstocks 非常喜歡這個資料集:它很輕巧,但足夠難以測試新想法。根據紀錄,比賽得主透過由 25 個網路組成的委員會,並使用大量增強和資料正規化技術,達到了 99.46% 的最高 1 個準確度。

空間轉換器網路

空間轉換器 [1] 的目標是將一個可對輸入執行明確幾何轉換的層加入到你的基本網路中。這些轉換的參數仰賴標準的反向傳播演算法,表示不需要額外的資料或監督。

st-structure

該層由 3 個元素組成

  • 定位網路會將原始圖片當作輸入,並輸出我們要套用的轉換參數。
  • 網格生成器會在輸入圖片中針對從輸出圖片來的每個像素,產生一個座標網格。
  • 取樣器會使用網格生成器所提供的網格,產生輸出圖片。

舉例來說,以下是你訓練一個網路(第一個層是 ST)後所得到的東西

st-exemple

左側是你看到的輸入圖片。中間是你看到的輸入圖片的取樣部分。右側是你看到的空間轉換器輸出圖片。

結果

IDSIA 這個團隊在 2011 年的比賽中,以最高 1 個達 99.46% 的準確度獲勝。我們透過一個更簡單的管道,達到了最高 1 個準確度 99.61%

| 管線 | IDSIA | Moodstocks | | ------------- | --------- | ---------- | | 增強 | 是 (i) | 否 | | 抖動 | 是 (ii) | 否 | | 網路 | ~90M 個權重 (iii)| ~20M 個權重 (iv)|
  • (i) 5 種原始資料集版本,歸功於新奇正規化技術
  • (ii) 調整大小之平移和旋轉變換
  • (iii) 25 個網路,每個具有 3 個捲積層和 2 個全連接層
  • (iv) 1 個網路,具有 3 個捲積層和 2 個全連接層 + 2 個空間轉換層

詮釋

有了這些不錯的結果,我們想要深入了解空間轉換器學習了哪一種變換。由於我們在網路的最開始處有一個空間轉換器,因此透過檢視轉換的輸入影像,我們可以很輕鬆地將其影響視覺化。

在訓練期間

此處的目標是將空間轉換器在訓練期間的表現視覺化。

在下列動畫中,您可以看到

  • 在左側是作為輸入所使用的原始影像,
  • 在右側是空間轉換器產生的轉換影像,
  • 在底部是代表訓練步驟的計數器 (0 = 訓練前,10/10 = epoch 1 結束)。

st-structure

注意: 輸入影像上的白點顯示作為取樣的影像部分的角落。下方適用相同規則。

如同預期,我們看到在訓練期間,空間轉換器學習專注於交通號誌,逐漸學習移除背景。

訓練後

此處的目標是將空間轉換器在經過訓練後的,即使輸入包含幾何噪聲也能產生穩定輸出的能力視覺化。

值得記錄的是,GTSRB 資料集最初是透過擷取影像從影片序列中生成,是在接近交通標誌時拍攝的影片。

下列動畫顯示此類序列中的每一張影像 (位於左側),以及相應的空間轉換器輸出 (位於右側)。

st-structure

我們可以看到即使輸入影像有大幅度的變異 (影像中的大小和位置),空間轉換器的輸出仍維持幾乎靜止的狀態。

這驗證了我們對於空間轉換器如何簡化網路中其他部分的工作的直覺:學習僅轉送輸出的有趣部分並移除幾何噪聲。

空間轉換器以端對端的形式學習這些變換,未修改反向傳播演算法,也未新增任何額外的註解。

代碼

我們在 Maxime Oquab 在其出色的 stnbhwd 專案中編寫的格線產生器和取樣器中發揮影響力。我們在局部化網路和格線產生器之間新增一個模組,讓我們限制可能的變換。

使用這些模組,建立一個使用火炬邏輯的空間轉換器層就像下方的範例一樣簡單:

完整程式碼可於 Moodstocks Github 上獲得。我們設計它讓您能針對資料集執行廣泛的測試。如果您想要重現我們的成果,所有您需要做的就是執行以下指令碼

# This takes ~5 min per epoch and 1750MB ram on a Titan X
luajit main.lua -n -1 --st --locnet 200,300,200 --locnet3 150,150,150 --net idsia_net.lua --cnn 150,200,300,350 -e 14

它將於基準 IDSIA 網路 (idsia_net.lua --cnn 150,200,300,350) 中新增兩個空間轉換器層次 (--st --locnet 200,300,200 --locnet3 150,150,150),並執行 14 個時期 (-e 14)。當然,您能使用我們的程式碼執行更多工作,所以歡迎檢視我們的儲存庫中的 文件

結論

空間轉換器網路是很吸引人的方式來提高 CNN 的幾何不變性,進而提升您的頂級 1 準確度。它會學習針對與您的資料集相關的幾何轉換,不需要額外的監督。使用它們,我們設法在一個不太簡單的資料集 (GTSRB) 上勝過最先進的技術,同時大幅化簡化程序流程。歡迎使用 我們的程式碼 來重現我們的成果或甚至取得更佳的成果:我們提供一種美觀的方式用於 大量基準測試 組態,以協助您執行該項工作。玩得愉快!

  1. Max Jaderberg、Karen Simonyan、Andrew Zisserman、Koray Kavukcuoglu,空間轉換器網路 [arxiv]
  2. P. Sermanet、Y. LeCun,使用多層級捲積網路辨識交通標誌 [連結]
  3. D. Ciresan、U. Meier、J. Masci、J. Schmidhuber,用於交通標誌分類的多欄深度神經網路 [連結]
comment 由 Disqus 提供技術支援