上採樣、上池化、反捲積的一點理解

上採樣、反捲積、上池化概念區別

通過卷積和池化等技術可以將圖像進行降維,因此,一些研究人員也想辦法恢復原分辨率大小的圖像,特別是在語義分割領域應用很成熟。通過對一些資料的學習,簡單的整理下三種恢復方法,並進行對比。

目錄

一 Upsampling(上採樣)

二 上池化

三 反捲積

四 一些反捲積的論文截圖

01

Upsampling(上採樣)

在FCN、U-net等網絡結構中,涉及到了上採樣。上採樣概念:上採樣指的是任何可以讓圖像變成更高分辨率的技術。最簡單的方式是重採樣和插值:將輸入圖片進行rescale到一個想要的尺寸,而且計算每個點的像素點,使用如雙線性插值等插值方法對其餘點進行插值來完成上採樣過程。

上採樣、上池化、反捲積的一點理解

02

上池化

Unpooling是在CNN中常用的來表示max pooling的逆操作。這是論文《Visualizing and Understanding Convolutional Networks》中產生的思想,下圖示意:

上採樣、上池化、反捲積的一點理解

對比上面兩個示意圖,可以發現區別:

●兩者的區別在於UnSampling階段沒有使用MaxPooling時的位置信息,而是直接將內容複製來擴充Feature Map。第一幅圖中右邊4*4矩陣,用了四種顏色的正方形框分割為四個區域,每一個區域內的內容是直接複製上採樣前的對應信息。

●UnPooling的過程,特點是在Maxpooling的時候保留最大值的位置信息,之後在unPooling階段使用該信息擴充Feature Map,除最大值位置以外,其餘補0。從圖中即可看到兩者結果的不同。

03

反捲積

在介紹反捲積之前,我們需要深入瞭解一下卷積,一個簡單的卷積層運算,卷積參數為i=4,k=3,s=1,p=0.

意圖如下:

上採樣、上池化、反捲積的一點理解

對於上述卷積運算,我們把上圖所示的3×3卷積核展成一個如下所示的[4,16]的稀疏矩陣C,如下:

上採樣、上池化、反捲積的一點理解

■我們再把4×4的輸入特徵展成[16,1]的矩陣 ,那麼 則是一個[4,1]的輸出特徵矩陣,把它重新排列2×2的輸出特徵就得到最終的結果,從上述分析可以看出卷積層的計算其實是可以轉化成矩陣相乘的。值得注意的是,在一些深度學習網絡的開源框架中並不是通過這種這個轉換方法來計算卷積的,因為這個轉換會存在很多無用的0乘操作。

■通過上述的分析,我們已經知道卷積層的前向操作可以表示為和矩陣相乘,很容易得到卷積層的反向傳播就是和的轉置相乘。

■我們已經說過反捲積又被稱為Transposed(轉置) Convolution,我們可以看出其實卷積層的前向傳播過程就是反捲積層的反向傳播過程,卷積層的反向傳播過程就是反捲積層的前向傳播過程。因為卷積層的前向反向計算分別為乘 C和 ,而反捲積層的前向反向計算分別為乘 和 ,所以它們的前向傳播和反向傳播剛好交換過來。

下圖表示一個和上圖卷積計算對應的反捲積操作,其中他們的輸入輸出關係正好相反。如果不考慮通道以卷積運算的反向運算來計算反捲積運算的話,還可以通過離散卷積的方法來求反捲積。通過詳細參考資料[1]。

上採樣、上池化、反捲積的一點理解

03

一些反捲積的論文截圖

上採樣、上池化、反捲積的一點理解

上圖為反捲積和全卷積網絡為核心的語義分割網絡。

上採樣、上池化、反捲積的一點理解

圖(a)是輸入層;圖b、d、f、h、j是不同featrue map大小的反捲積的結果;圖c、e、g、i是不同featrue map大小的UnPooling結果。


分享到:


相關文章: