簡介
空間變換網路由三個部分組成:本地化網路(localisation network)、格線生成器(grid generator)及採樣器(sampler)。STNs 可用於輸入層,也可插入到卷積層或者其它層的後面, 不需要改變原 CNN模型的內部結構 。STNs 對於輸入的圖片,先用本地化網路來預測需要進行的變換,即經過連續若干層計算(包括卷積、和全連線計算),然後格線生成器和採樣器對圖片實施變換,變換得到的圖片被放到 CNN 中進行分類。其中網路生成器使用了雙線性插值方法來生成網路,採樣器一種形式上可微的圖像採樣方法,目的是為了讓整個網路保持可以端到端反向傳播BP訓練。
STNs 能夠自適應地對數據進行空間變換和對齊,使得 CNN 模型對平移、縮放、旋轉或者其它變換等保持不變性。此外,STNs 的計算速度很快,幾乎不會影響原有 CNN 模型的訓練速度,和STNs 模組本身可微,可以無縫嵌入現有網路架構,且無需額外的監督信息幫助訓練。
雙線性插值
線性插值是指插值函式為一次多項式的插值方式,其在插值節點上的插值誤差為零。線性插值相比其他插值方式,如拋物線插值,具有簡單、方便的特點。線性插值的幾何意義即為概述圖中利用過A點和B點的直線來近似表示原函式。線性插值可以用來近似代替原函式,也可以用來計算得到查表過程中表中沒有的數值。
雙線性插值,又稱為雙線性內插。在數學上,雙線性插值是對線性插值在二維直角格線上的擴展,用於對雙變數函式(例如x和y)進行插值。在計算機視覺及圖像處理領域,雙線性插值是一種基本的重採樣技術。其核心思想是在兩個方向分別進行一次線性插值。假如我們想得到未知函式 在點 的值,假設我們已知函式 在 四個點的值。
首先在 x方向進行線性插值,得到
然後在 y方向進行線性插值,
注意此處如果先在 方向插值、再在 方向插值,其結果與按照上述順序雙線性插值的結果是一樣的。
單位正方形
如果選擇一個坐標系統使得 f的四個已知點坐標分別為 (0,0)、(0,1)、(1,0) 和 (1,1),那么插值公式就可以化簡為
或者用矩陣運算表示為
非線性
顧名思義,雙線性插值的結果不是線性的,它是兩個線性函式的積。在單位正方形上,雙線性插值可以記作
常數的數目(四)對應於給定的的數據點數目
雙線性插值的結果與插值的順序無關。首先進行方向的插值,然後進行方向的插值,所得到的結果是一樣的。
卷積神經網路
卷積神經網路(Convolutional Neural Network, CNN)是一種前饋神經網路,它的人工神經元可以回響一部分覆蓋範圍內的周圍單元,對於大型圖像處理有出色表現。卷積神經網路由一個或多個卷積層和頂端的全連通層(對應經典的神經網路)組成,同時也包括關聯權重和池化層(pooling layer)。這一結構使得卷積神經網路能夠利用輸入數據的二維結構。與其他深度學習結構相比,卷積神經網路在圖像和語音識別方面能夠給出更好的結果。這一模型也可以使用反向傳播算法進行訓練。相比較其他深度、前饋神經網路,卷積神經網路需要考量的參數更少,使之成為一種頗具吸引力的深度學習結構。CNN 的基本結構由輸入層、卷積層、取樣層、全連線層及輸出層構成。卷積層和取樣層一般會取若干個,採用卷積層和取樣層交替設定,即一個卷積層連線一個取樣層,取樣層後再連線一個卷積層,依此類推。由於卷積層中輸出特徵面的每個神經元與其輸入進行局部連線,並通過對應的連線權值與局部輸入進行加權求和再加上偏置值,得到該神經元輸入值,該過程等同於卷積過程,卷積神經網路也由此而得名。