純幹貨:深度學習實現之空間變換網絡-part2
https://www.jianshu.com/p/854d111670b6
純幹貨:深度學習實現之空間變換網絡-part1
在第一部分中,我們主要介紹了兩個非常重要的概念:仿射變換和雙線性插值,並了解到這兩個概念對於理解空間變換網絡(Spatial Transformer Networks)非常重要。
在這篇文章中,我們將詳細介紹一篇空間變壓器網絡這一論文——Go
ogle Deepmind的研究人員Max Jaderberg,Karen Simonyan,Andrew Zisserman和Koray Kavukcuoglu最早提出了這一概念。
讀完本文,希望你能夠對這個模型有一個清晰的認識和理解。我們將在後續第三部分中使用Tensorflow實現該網絡。
目的
在進行分類任務時,我們通常希望系統對變化的輸入具有較強的魯棒性。 也就是說,如果輸入需要經過某種“轉換”,我們的分類模型理論上應該在轉換之前輸出相同的類標簽。一般情況下,圖像分類模型可能會面臨以下“挑戰”:
1.規模變化:現實世界和圖像中的尺寸變化。
2.視角變化:隨著觀察者的角度變化,物體的取向不同。
3.變形:非剛體可以變形並扭曲成不尋常的形狀。
對於人類來說,將上圖中的對象進行分類,這很簡單。但是,計算機算法僅適用於原始3維亮度值數組,因此輸入圖像的微小變化也可能會改變相應數組中的像素值。因此,理想的圖像分類模型理論上應該能夠從紋理和形狀中分離出物體的形態和變形,如下面的貓咪圖像。
如果我們的模型可以使用某種組合來從左到右執行,從而簡化後續的分類任務,那麽這是不是非常理想?
池化層
事實證明,我們在神經網絡架構中使用池化層,這使模型具有一定程度的空間恒定性。池化操作也是一種降采樣機制,它逐層降低了深度維度上特征映射的空間大小,同時也減少了參數的數量和計算成本。
池化層在空間上對數組進行下采樣。上圖中,左圖為大小為[224*224*64]的輸入數組與維度為2、步長為2的濾波器做最大池化操作,輸出大小為[112*112*64]的數組。右圖為2*2的最大池化數組。
它是如何具有恒定性的?我們可以這樣理解,池化的思想是采用復雜的輸入,將其分解為一個個單元,並將這些復雜單元中的信息“池化”,產生一組更簡單的單元集,來描述輸出。舉例來說,假設我們有3張數字7的圖片,每張圖片的方向不同。我們通過聚合像素值可以捕獲到大致相同的信息,因此不管數字在網格中的哪個位置,每張圖像網格上的池化都會檢測到數字7。
池化之所以不受歡迎,有以下限制因素。首先,池化具有破壞性。在使用池化時,75%的特征激活會面臨丟失,這就意味著我們會丟失確切的位置信息。由於我們之前提到過,池化賦予了網絡一定的空間魯棒性,而位置信息在視覺識別中尤為重要。想想上面提到的貓咪分類器,相對於鼻子的位置,知道胡須的位置可能更重要。當我們使用最大池化時,這些信息就已經丟失了。
池化的另一個限制因素是,它是本地和預定義的。由於感受野較小,池化操作只會對網絡的更深層產生影響,這就意味著中間特征映射可能會有更大的輸入失真。請記住,由於只增加感受野會過於降低我們的特征映射,因此,我們不能隨意的只增加感受野。
另外一個主要的問題就是,對於相對較大的輸入失真,卷積網絡並不是恒定的。這種限制源於,只有一個用於處理數據空間變化的受限預定義池化機制。這就是空間變換網絡發揮作用的地方!
Geoffrey Hinton曾表示:在卷積神經網絡中使用池化操作是一個很大的錯誤,並且網絡能夠穩定運作本身也是一場災難。
空間變換網絡(STNs)
通過為卷積神經網絡提供確切的空間變換,空間變換機制解決了上述問題,它擁有3個屬性。
1.模塊化:只需要進行微小的調整,就可以將空間變換網絡插入到現有體系結構的任何地方。
2.可區分性:可以使用反向傳播算法進行訓練,允許對所插入的模型進行端到端的訓練。
3.動態的:在每個輸入樣本的特征映射上執行主動空間變換,而池化層則是對所有輸入樣本進行操作。
正如你所看到的,空間變換在所有方面都優於池化運算符。那麽,什麽是空間變換呢?
如上圖所示,空間變換模塊由三個部分組成:一個定位網絡(localisation network),一個網格生成器(grid generator )和一個采樣器(sampler)。我們不能盲目的對輸入圖像進行仿射變換,首先需要創建一個采樣網格,對其進行轉換,然後使用網格對輸入圖像進行采樣,這一點非常重要。下面我們來看一下空間變換的核心部分。
定位網絡
定位網絡是作用於輸入特征映射,輸出仿射變換參數θ。其定義如下:
1.輸入:形狀為(H,W,C)的特征映射U。
2.輸出:形狀為(6,)的變換矩陣θ。
3.架構:全連接網絡或卷積網絡。
在訓練網絡時,我們希望定位網絡能夠輸出越來越精確的θ。精確意味著什麽呢?試想一下數字7逆時針旋轉90度。經過2次訓練以後,定位網絡能夠輸出一個變換矩陣,來執行45度的順時針旋轉,經過5次訓練以後,實際上可以學習完成90度的順時針旋轉。我們的輸出圖像看起來就像一個標準數字7,這是我們的神經網絡在訓練數據中看到的,並且可以對其進行輕松的分類。
另一種方式則是,定位網絡學習存儲如何將每個訓練樣本轉換為其所在層的權重。
參數化的采樣網格
網格生成器的作用是輸出一個參數化的采樣網格,這是一組點集,即輸入映射經過采樣產生期望的轉換輸出。
具體來說,網格生成器首先創建與輸入圖像U(格式為(H,W))相同大小的歸一化網格,即覆蓋整個輸入特征映射的一個索引集(xt,yt)映射(上標t代表輸出特征映射的目標坐標)。由於我們對這個網格做了仿射變換,並且想要使用變換,我們繼續在坐標矢量上添加一行進行計算。最後,我們將6個參數θ塑造為一個2*3矩陣,並執行下面的乘法運算,就會得到我們所需要的參數化采樣網格。
輸出的列向量包含一組索引,告訴我們應該在哪裏對輸入進行采樣,就能得到所需的轉換輸出。但是,如果這些指數是分數呢?這就是即將要介紹雙線性插值的原因。
可微分的圖像采樣
由於雙線性插值是可微的,因此非常適用於空間變換網絡。通過輸入特征映射和參數化采樣網格,我們進行雙線性采樣並獲得形狀為(H‘,W‘,C‘)的輸出特征映射V。這就意味著,我們可以通過指定采樣網格的形狀,來執行下采樣和上采樣。我們絕對不僅限於雙線性采樣,還可以使用其他的采樣內核,但重要的一點是:它必須是可微的,以便允許損失梯度一直流回的定位網絡。
圖為將參數化采樣網格應用於圖像U(輸出為V)的兩個例子。(a)恒等變換(即U = V)(2)仿射變換(即旋轉)上述為空間變換的內部工作原理,可將其歸結為我們一直在談論的兩個關鍵概念:仿射變換和雙線性插值。我們讓網絡學習最佳的仿射變換參數,這將有助於獨立完成分類任務。
有趣的空間變換
最後,我們來舉兩個例子,說明下空間變換的應用。
失真MINIST數據集
下圖是將空間變換作為全連接網絡的第一層,對失真MNIST數據集的數字進行分類的結果。
註意它是怎樣學會理想的“魯棒性”圖像分類模型?通過放大和消除雜亂的背景,將輸入進行“標準化”進行分類。如果你想查看變換的實時動畫,請點擊這裏。
德國交通標誌識別GTSRB數據集
左圖:訓練期間空間變換的行為。註意它是如何逐漸消除背景來學習交通標誌。右圖為不同輸入圖像的輸出。請註意,無論輸入如何變化和失真,輸出都保持近似恒定。總結
本文概覽了Google Deepmind的空間變換網絡論文。我們首先介紹了分類模型所面臨的挑戰,主要是輸入圖像失真導致分類失敗。一種解決方案是使用池化層,但是有明顯的局限性——使用率很低。另一個解決方案就是本文的空間變換網絡。
這其中包含一個可微的模塊,可以插入到卷積網絡中任何一個位置以增加其幾何不變性。它賦予了網絡空間變換特征映射,而無需額外增加數據或監督成本。最後,整個機制歸結為兩個熟悉的概念:仿射變換和雙線性插值。
以上為譯文。
本文由阿裏雲雲棲社區組織翻譯。
文章原標題《Deep Learning Paper Implementations: Spatial Transformer Networks - Part II》,譯者:Mags,審校:袁虎。
詳細內容請查看原文。
作者:阿裏雲雲棲社區
鏈接:https://www.jianshu.com/p/854d111670b6
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並註明出處。
純幹貨:深度學習實現之空間變換網絡-part2