出自**spatial transformer networks
insight:
文章提出的stn的作用類似於傳統的矯正的作用。比如人臉識別中,需要先對檢測的進行關鍵點檢測,然後使用關鍵點來進行對齊操作。但是這樣的乙個過程是需要額外進行處理的。但是有了stn後,檢測完的人臉,直接就可以做對齊操作。關鍵的一點就是這個矯正過程是可以進行梯度傳導的。想象一下,人臉檢測完了,直接使用roi pooling取出人臉的feature map,輸入stn就可以進行矯正,輸出矯正後的人臉。後面還可以再接點卷積操作,直接就可以進行分類,人臉識別的訓練。整個流程從理論上來說,都有梯度傳導,理論上可以將檢測+對齊+識別使用乙個網路實現。當然實際操作中可能會有各種trick。
空間變換基礎:
2d仿射變換(affine):
平移:
旋**
縮放:
整體:
3d透視變換(projection):
平移:
旋**
縮放:
stn網路結構:
stn網路由localisation network ,grid generator,sampler,3個部分組成。
localisation network:
該網路就是乙個簡單的回歸網路。將輸入的進行幾個卷積操作,然後全連線回歸出6個角度值(假設是仿射變換),2*3的矩陣。
grid generator:
網格生成器負責將v中的座標位置,通過矩陣運算,計算出目標圖v中的每個位置對應原圖u中的座標位置。即生成t(g)。
這裡的grid取樣過程,對於二維仿射變換(旋轉,平移,縮放)來說,就是簡單的矩陣運算。
上式中,s代表原始圖的座標,t代表目標圖的座標。a為localisation network網路回歸出的6個角度值。
整個grid生成過程就是,首先你需要想象上圖中v-featuremap中全是白色或者全是黑色,是沒有畫素資訊的。也就是說v-featuremap還不存在,有的只是v-featuremap的座標位置資訊。然後將目標圖v-featuremap中的比如(0,0)(0,1)......位置的座標,與2*3變換矩陣運算。就會生成出在原始圖中對應的座標資訊,比如(5,0)(5,1)......。這樣所有的目標圖的座標都經過這樣的運算就會將每個座標都產生乙個與之對應的原圖的座標,即t(g)。然後通過t(g)和原始圖u-featuremap的畫素,將原始圖中的畫素複製到v-featuremap中,從而生成目標圖的畫素。
sampler:
取樣器根據t(g)中的座標資訊,在原始圖u中進行取樣,將u中的畫素複製到目標圖v中。
實驗結果:
作者分別在mnist,street view house numbers ,cub-200-2011 birds dataset 這3個資料集上做了實驗。
mnist實驗:
r:rotation (旋轉)
rts:rotation, scale and translation (旋轉,縮放,平移)
p:projective transformation (投影)
e:elastic warping (彈性變形)
從作圖可以看出,fcn 錯誤率為13.2% , cnn 錯誤率為3.5% , 與之對比的 st-fcn 錯誤率為2.0% ,st-cnn 錯誤率為 1.7%。可以看出stn的效果還是非常明顯的。
street view house numbers實驗:
可以看出不管是64畫素還是128畫素,st-cnn比傳統的cnn錯誤率要低一些。
cub-200-2011 birds dataset實驗:
右圖紅色框檢測頭部,綠色框檢測身體。
這個資料集是屬於細粒度分類的乙個資料集。好多做細粒度分類的文章都會在該資料集上做實驗。從這個實驗可以看出,stn可以有attention的效果,可以訓練的更加關注roi區域。
實驗結果有0.8個百分點的提公升。
references:
pytorch的STN(空間變換網路)
stn可以直接插入現有的cnn中。localisation network 一cnn生成變換引數。grid genator 生成與輸出影象的每個畫素相對應的座標網路。sampler 輸出結果 定義乙個stn網路 本地網路 卷積池化relu卷積池化relu linear relu linear得到3 ...
CV 空間變換
對於乙個平面圖而言,它是多個畫素點的組合而成的。除去顏色,只剩下一張灰度影象 就連黑白都去掉,它就只是一堆點集的二維陣列。只是乙個帶有顏色和座標的點集。影象變換,就是在不改變集合中點的顏色資訊的同時,去對各點的座標進行變換。p oi nt x,y imag e s poin t tr ansf or...
座標變換,空間變換的本質
座標變換或空間變換,本質是相對座標的變化,絕對座標沒變。世界空間有兩個物體a,b。將a變換到b的座標空間意思是 將a從世界空間變換到b的區域性座標空間,也就是在b的區域性座標系中重新表示a的座標 也就是求出a在b座標系中的相對座標 做法很簡單 1,a b 得到乙個向量 v,2,把v分解 投影 到b的...