上採樣:算法
即放大圖像。其目的是在更高分辨率的顯示設備上。圖像放大幾乎都是採用內插值方法,即在原有圖像像素的基礎上在像素點之間採用合適的插值算法插入新的元素。上採樣有3種常見的方法:雙線性插值(bilinear),反捲積(Transposed Convolution),反池化(Unpooling)。spa
下采樣:blog
即縮小圖像。其目的是一、使得圖像符合顯示區域的大小;二、生成對應圖像的縮略圖。數學
反捲積:io
咱們首先已經知道,3*3的過濾器用於鏈接輸入矩陣的9個值和輸出矩陣的1個值,卷積運算造成了一種多對一的關係。基礎
而反捲積與之相反,反捲積運算造成了一種一對多的關係,它想把矩陣中的1個值和另外一個矩陣的9個值聯繫起來。反捲積不是正向卷積的徹底逆過程,由於反捲積只能保證獲得的矩陣和原矩陣大小一致,但各元素的值不必定能一致。用一句話來解釋反捲積的過程就是:反捲積是一種特殊的正向卷積,先按照必定的比例經過補0來擴大輸入圖像的尺寸(padding),接着轉置過濾器,再進行正向卷積。sed
在解釋反捲積以前,咱們先再回顧一下卷積的過程,不過咱們把卷積這一步驟再詳細的解釋一下,那就是若是這是過濾器:方法
這是輸入矩陣:im
那麼實際上卷積的過程是這樣的:d3
將過濾器轉換成稀疏矩陣,也就是這樣操做:
由於輸入矩陣有4行,因此這個操做也要重複四遍,變成這個樣子:
而後輸入矩陣須要像全鏈接層那樣變成一列:
最後把稀疏矩陣乘上輸入矩陣,就獲得了輸出矩陣,也就完成了卷積計算。
只須要把這個4*1的列向量,變成2*2的矩陣就能夠了!
Fine,這就是卷積的結果,跟之前所認識的是同樣的,只不過咱們把conv2D拆開看了看它是如何運做的而已。
好了,咱們如今能夠講解反捲積了!
既然差很少是逆過程,那麼從數學公式來說,若是輸出矩陣是Y,輸入矩陣是X,稀疏矩陣是C那麼就有:
實際上剛纔所講的過程已經印證了這個事情,不是嗎?好,既然如此,若是咱們知道了Y和C,如何求X呢?答案是:
可能你難以接受,但事實上咱們就是這麼作的。剛纔也說了,反捲積並不能獲得與原矩陣如出一轍的矩陣,只能獲得和原矩陣大小同樣的矩陣。
接受了這一點,咱們繼續講。按照公式,咱們須要將稀疏矩陣轉置,而後去乘輸出矩陣,這樣就獲得了輸入矩陣。不過一樣的,咱們也要把Y給變換成正向卷積中的X那樣,一列的樣子。
老規矩,把獲得的列變成矩陣:
wow,amazing,這是我獨享的moment!我獲得了一個與原矩陣同樣大小的矩陣,可是元素卻不相同。但它就是這個樣子的,這就是反捲積的整個過程了。
經過這個圖,能夠看到,同一個過濾器,卷積的時候是9對1,反捲積的時候是1對9.