上採樣的幾種方法

在做圖像語義分割的時候,編碼器通過卷積層得到圖像的一些特徵,但是解碼器需要該特徵還原到原圖像的尺寸大小,纔可以對原圖像的每個像素點進行分類。從一個較小尺寸的矩陣進行變換,得到較大尺寸的矩陣,在這個過程就是上採樣。

常見的上採樣的方法有(1)插值法(最鄰近插值、雙線性插值等) (2)轉置卷積(又稱爲反捲積) (3)上採樣(unsampling)(4)上池化(unpooling)

插值法

插值法不需要學習任何的參數,只是根據已知的像素點對未知的點進行預測估計,從而可以擴大圖像的尺寸,達到上採樣的效果。常見的插值方法可以參考這篇文章:https://blog.csdn.net/stf1065716904/article/details/78450997

轉置卷積

與插值法不同,轉置卷積需要學習一些參數。我們知道卷積操作如果不加padding會使圖像尺寸縮小;相反地,轉置卷積(反捲積)會讓圖像的尺寸增大。這篇文章介紹轉置卷積非常詳細:https://blog.csdn.net/LoseInVain/article/details/81098502

這裏對該文章做一下簡單的概括。假如我們對一個 444*4 的原圖像矩陣,用 333*3 的卷積核做 stride爲1、padding爲 0 的卷積,則會得到一個 222*2 的特徵圖矩陣。該卷積的過程可以等價爲矩陣的乘法:在上述卷積中, 333*3 的卷積核可以轉化爲 4164*16 的卷積矩陣, 444*4 的原圖像轉化爲 16116*1 的向量,兩者進行矩陣乘法可得到 414*1 的向量,最後resize爲 222*2 的特徵圖矩陣。

所以重點來了,擁有一個 4164*16 的卷積矩陣,可將 444*4 的圖像變爲 222*2;那麼,如果擁有一個 16416*4 的矩陣,可將 222*2 的矩陣變爲 444*4

假如現在的圖像尺寸是 222*2,要將其恢復到 444*4。首先將其轉化爲 414*1,再與卷積矩陣的轉置矩陣 16416*4做乘法,可以得到 16116*1 的向量,最後resize爲 444*4 的圖像矩陣。

轉置卷積的矩陣並不是正向卷積矩陣直接轉置得到,而只是維度上與正向卷積矩陣構成了轉置關係。轉置卷積也不是標準意義上的卷積,但可以當作卷積來使用。在實踐中,可以先將原始矩陣做上池化(即在中間部分填0),再做正向卷積,這樣的效果和轉置卷積是相同的。

unsampling

在這裏插入圖片描述

unsampling 就是在直接將特徵圖的元素進行復制,以擴充feature map

unpooling

在這裏插入圖片描述

unpooling 與 unsampling 類似,只是變爲用 0 元素對特徵圖進行填充

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章