CNN 的機理使得 CNN 在處理圖像時可以做到 transition invariant,卻沒法做到 scaling invariant 和 rotation invariant。即使是現(xiàn)在火熱的 transformer 搭建的圖像模型 (swin transformer, vision transformer),也沒辦法做到這兩點。(注:spatial transformer和這兩個transformer原理不一樣,雖然都叫transformer)因為他們在處理時都會參考圖像中物體的相對大小和位置方向。不同大小和不同方向的物體,對網(wǎng)絡來說是不同的東西。
創(chuàng)新互聯(lián)專注于本溪企業(yè)網(wǎng)站建設,成都響應式網(wǎng)站建設公司,商城開發(fā)。本溪網(wǎng)站建設公司,為本溪等地區(qū)提供建站服務。全流程按需設計,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務其實 pooling layer 有一定程度上解決了這個問題,因為在做pooling 的時候,只要這個特征在,就可以提取出來,但池化層的感受野(receptive field)是固定(fixed)且局部(local)的,ST的行為取決于單個數(shù)據(jù)樣本(意思是對于不同input image,ST的行為是隨之改變的),因此是非局部的(non-locally)、動態(tài)的。
STN(spatial transformer network) 引入了一個新的可學習模塊,空間變換器(ST),它可以對網(wǎng)絡內(nèi)的數(shù)據(jù)進行空間變換操作。
ST可以用反向傳播機制(back-propagation,BP)進行端到端(end-to-end)訓練。
這個可微模塊可以插入到現(xiàn)有的卷積架構(gòu)中,使神經(jīng)網(wǎng)絡能夠以特征圖本身為條件,主動地對特征圖進行空間轉(zhuǎn)換,而不需要任何額外的訓練監(jiān)督或?qū)?yōu)化過程進行修改。
STN 能夠在沒有標注關(guān)鍵點的情況下,根據(jù)任務自己學習圖片或特征的空間變換參數(shù),將輸入圖片或者學習的特征在空間上進行對齊,從而減少物體由于空間中的旋轉(zhuǎn)、平移、尺度、扭曲等幾何變換對分類、定位等任務的影響。
a是輸入圖片,b 是 STN 中的 localisation 網(wǎng)絡檢測到的物體區(qū)域,c是 STN 對檢測到的區(qū)域進行線性變換后輸出,d 是有 STN 的分類網(wǎng)絡的最終輸出。
2 模型說明STN(spatial transformer network) 更準確地說應該是 STL(spatial transformer layer),它就是網(wǎng)絡中的一層,并且可以在任何兩層之間添加一個或者多個。
如下圖所示,spatial transformer 主要由兩部分組成,分別是 localisation net 和 grid generator。
輸入的特征圖U被本地網(wǎng)絡處理得到參數(shù)theta,然后經(jīng)過網(wǎng)格生成器得到采樣器,映射到原圖U上,從而得到輸出V。
2.1 Localisation Network我們的目的是把第
l
?
1
l?1
l?1 層的第
n
n
n 行,第
m
m
m 列的特征移動到第
l
l
l層的某行某列。如下圖 2-2 所示,一個
3
×
3
3 × 3
3×3 的特征要變換的話,第
l
l
l 層的每個位置都可以表示為
l
?
1
l-1
l?1 層的特征的加權(quán)和。通過控制權(quán)重 ,
w
n
m
,
i
j
l
w_{nm,ij}^l
wnm,ijl?就可以實現(xiàn)任何仿射變換。
但如果直接加一層全連接讓模型學的話,模型可能學出來的就不是仿射變換了,參數(shù)量也很大,很難學,很難控制。所有就設計了一個 localisation net,直接讓模型學仿射變換的參數(shù),這相當于是一個歸納偏置。
localisation net 的輸入是前一層的特征,輸出是仿射變換的參數(shù),如果是平面的放射變換就是 6 個參數(shù),通過這六個參數(shù)可以控制整個圖像的平移,旋轉(zhuǎn),縮放。
圖 2-3 通過參數(shù)進行仿射變換示例
圖 2-3 中的
[
a
,
b
,
c
,
d
,
e
,
f
]
[a,b,c,d,e,f]
[a,b,c,d,e,f]參數(shù)就是 localisation net 的輸出。仿射變換公式就是
其中, x x x 和 y y y 是當前層的坐標, x ′ x′ x′ 和 y ′ y' y′ 是前一層的坐標, a a a 和 d d d 主要控制縮放, b b b 和 c c c 主要控制旋轉(zhuǎn), e e e 和 f f f 主要控制平移。
2.2 Parameterised Sampling Gridlocalisation net 輸出了仿射變換參數(shù)之后,仿射變換公式告訴了我們當前層 ( x , y ) (x,y) (x,y) 這個位置的特征是前一層的 ( x ′ , y ′ ) (x', y') (x′,y′) 位置的特征拿過來的。但是,如圖 2-4 中的例子所示, ( x ′ , y ′ ) (x', y') (x′,y′) 可能是小數(shù),位置需要是正整數(shù),如果采用取整的操作的話,網(wǎng)絡就會變得不可梯度下降,沒法更新參數(shù)了。
我們想要的是,當
[
a
,
b
,
c
,
d
,
e
,
f
]
[a,b,c,d,e,f]
[a,b,c,d,e,f] 發(fā)生微小的變化之后,下一層的特征也發(fā)生變化,這樣才可以保證可以梯度下降。
圖 2-4 帶插值的仿射變換示意圖
于是,作者就采用了插值的方法來進行采樣。比如當坐標為 [ 1.6 , 2.4 ] [1.6,2.4] [1.6,2.4] 時,就用 [ a 12 l ? 1 , a 13 l ? 1 , a 22 l ? 1 , a 23 l ? 1 ] [a_{12}^{l-1}, a_{13}^{l-1}, a_{22}^{l-1}, a_{23}^{l-1}] [a12l?1?,a13l?1?,a22l?1?,a23l?1?]這幾個值進行插值。這樣一來 [ a , b , c , d , e , f ] [a,b,c,d,e,f] [a,b,c,d,e,f] 發(fā)生微小的變化之后, [ x , y ] [x,y] [x,y] 位置采樣得到的值也會有變化了。這也使得 spatial transformer 可以放到任何層,跟整個網(wǎng)絡一起訓練。
雙線性插值的基本思想是通過某一點周圍四個點的灰度值來估計出該點的灰度值,如圖所示.
在實現(xiàn)時我們通常將變換后圖像上所有的位置映射到原圖像計算(這樣做比正向計算方便得多),即依次遍歷變換后圖像上所有的像素點,根據(jù)仿射變換矩陣計算出映射到原圖像上的坐標(可能出現(xiàn)小數(shù)),然后用雙線性插值,根據(jù)該點周圍 4 個位置的值加權(quán)平均得到該點值。過程可用如下公式表示:
將 (11) 代入 (12) 整理得:
因為 Q 11 , Q 12 , Q 21 , Q 22 Q11,Q12,Q21,Q22 Q11,Q12,Q21,Q22
是相鄰的四個點,所以 y 2 ? y 1 = 1 , x 2 ? x 1 = 1 y2?y1=1,x2?x1=1 y2?y1=1,x2?x1=1,則(13)可化簡為:
P = ( y 2 ? y ) ( x 2 ? x ) Q 11 + ( y 2 ? y ) ( x ? x 1 ) Q 21 + ( y ? y 1 ) ( x 2 ? x ) Q 12 + ( y ? y 1 ) ( x ? x 1 ) Q 22 P=(y_2-y)(x_2-x)Q_{11}+(y_2-y)(x-x_1)Q_{21}+(y-y_1)(x_2-x)Q_{12}+(y-y_1)(x-x_1) Q_{22} P=(y2??y)(x2??x)Q11?+(y2??y)(x?x1?)Q21?+(y?y1?)(x2??x)Q12?+(y?y1?)(x?x1?)Q22?
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧