【配准】空间变换网络Spatial Transformer Networks原理分析
?
說明:此文只分析STN層的原理。
STN由三個部分組成:
1、定位網(wǎng)絡(luò)
生成空間變換參數(shù),如二維仿射變換參數(shù):a11,a12,a21,a22,t1,t2。
可以是任意的回歸網(wǎng)絡(luò),如卷積網(wǎng)絡(luò),全連接網(wǎng)絡(luò)等
2、柵格生成器 ?
由變換參數(shù)獲取在輸入特征圖上面的采樣位置。下面詳細(xì)解釋。
設(shè)U的shape為(H,W,C),對應(yīng)于高、寬、通道數(shù),我們想要變換之后的特征圖為V,
V的shape為(H’,W’,C)。
首先我們根據(jù)V的尺寸定義一個H’*W’的柵格G,柵格上的每一個節(jié)點(diǎn)Gi就對應(yīng)著變換后特征圖V上對應(yīng)像素的坐標(biāo)(xit,yit)。
接下來我們要做的就是找到柵格上每一節(jié)點(diǎn)在輸入特征圖U上對應(yīng)的坐標(biāo)點(diǎn)(xis,yis),換句話說,就是對于輸出特征圖上的每個像素坐標(biāo)(xit,yit),找到與之對應(yīng)的輸入特征圖上的像素坐標(biāo)(xis,yis),這個由矩陣乘法實(shí)現(xiàn)。
?
這樣,柵格上每一個節(jié)點(diǎn)的位置就發(fā)生了扭曲生成了新的柵格,如下圖。
????????????
3、采樣器
按理說,對于每一個輸出特征圖的位置(xit,yit),已經(jīng)找到了在輸入特征圖上對應(yīng)位置(xis,yis),只需要將(xis,yis)上的像素值復(fù)制到(xit,yit)位置上就可以生成輸出特征圖了。但是呢,(xis,yis)大多數(shù)情況算出來都是小數(shù),所以用插值算法進(jìn)行重采樣就無法避免了。
插值算法由很多,下面以雙線性插值算法為例。
?
Vi代表輸出特征圖V上面坐標(biāo)為(xit,yit)的像素灰度值,Ui代表輸入特征圖U上面坐標(biāo)為(xis,yis)的像素灰度值。
當(dāng)(xis,yis)為整數(shù),最后兩個max函數(shù)要么為0要么為1,因此Vi=Ui。
當(dāng)(xis,yis)為小數(shù),那么Vi就是(xis,yis)四鄰域的加權(quán)和。
?
?
總結(jié):
空間變換網(wǎng)絡(luò)的原理并不復(fù)雜,簡單來說就是生成變換參數(shù),生成扭曲后柵格,插值得到輸出圖像。我認(rèn)為容易弄錯的地方在于柵格的生成,是柵格和插值算法決定了生成特征圖的每個點(diǎn)是由輸入特征圖的哪些點(diǎn)插值得來的。
總結(jié)
以上是生活随笔為你收集整理的【配准】空间变换网络Spatial Transformer Networks原理分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA构建树状结构
- 下一篇: 解决安装Windows10时遇到的0x8