到底什么是上采样、下采样
上采樣
語義分割/實例分割等任務(wù),由于需要提取輸入圖像的高層語義信息,網(wǎng)絡(luò)的特征圖尺寸一般會先縮小,進行聚合;這類任務(wù)一般需要輸出于原始圖像大小一致的像素級分割結(jié)果,因而需要擴張較小的特征圖這就用到了上采樣
上采樣常見方法
常見上采樣方法有雙線性插值、轉(zhuǎn)置卷積、unpooling
常用的是雙線性插值和轉(zhuǎn)置卷積
雙線性插值
雙線性插值:顧名思義就是在兩個方向分別進行一次線性插值(要求一個坐標的像素值,先去找他四個周圍已知像素的坐標,通過兩次單線性插值,得到他的像素值)
單線性插值:
將距離作為權(quán)重對y0與y1進行加權(quán)
雙線性插值:
已知的紅色數(shù)據(jù)點與待插值得到的綠色點
假如我們想得到未知函數(shù) f 在點P= (x,y) 的值,假設(shè)我們已知函數(shù)f在Q11 = (x1,y1)、Q12 = (x1,y2),Q21 = (x2,y1) 以及Q22 = (x2,y2) 四個點的值。
首先在x方向進行線性插值,得到R1和R2,然后在y方向進行線性插值,得到P.
這樣就得到所要的結(jié)果f(x,y).
其中紅色點Q11,Q12,Q21,Q22為已知的4個像素點.
第一步:X方向的線性插值,在Q12,Q22中插入藍色點R2, Q11,Q21中插入藍色點R1;
第二步 :Y方向的線性插值 ,通過第一步計算出的R1與R2在y方向上插值計算出P點。
線性插值的結(jié)果與插值的順序無關(guān)。首先進行y方向的插值,然后進行x方向的插值,所得到的結(jié)果是一樣的。雙線性插值的結(jié)果與先進行哪個方向的插值無關(guān)
轉(zhuǎn)置卷積
轉(zhuǎn)置卷積(Transposed Convolution) 在語義分割或者對抗神經(jīng)網(wǎng)絡(luò)(GAN)中比較常見,其主要作用就是做上采樣(UpSampling
對于普通的卷積操作可以形式化為一個矩陣乘法運算
其中卷積核可以通過一個稀疏矩陣表示,其是由卷積核,滑動步長決定的常對角矩陣,維度為d1*d2 (d1為輸出的維度(展平為一維向量的形式);d2為輸入的維度(展平為一維向量的形式))
每一行向量表示在一個位置的卷積操作,0填充表示卷積核未覆蓋到的區(qū)域。
將輸入X展平為向量則:
同時根據(jù)矩陣運算的求導(dǎo)知識可以知道
轉(zhuǎn)置卷積的信息正向傳播與普通卷積的誤差反向傳播所用的矩陣相同
普通卷積的信息正向傳播與轉(zhuǎn)置卷積的誤差反向傳播所用矩陣相同
由上可知轉(zhuǎn)置卷積就是一個對輸入數(shù)據(jù)進行適當變換(上采樣/補零)的普通卷積操作
在具體實現(xiàn)是對應(yīng)的卷積操作如下:
(S表示滑動步長(Sw,Sh),K表示轉(zhuǎn)置卷積核大小,P表示轉(zhuǎn)置卷積的padding)
- 對輸入的特征圖進行擴張(上采樣):相鄰的數(shù)據(jù)點之間,在水平方向填充Sw-1個零,在垂直方向填充Sh-1個零
- 對輸入特征圖進行邊界填充:四周分別填充K-P-1零行
- 將卷積核參數(shù)上下、左右翻轉(zhuǎn)
- 做正常卷積運算
unpooling
unpooling記錄了原來pooling是取樣的位置,在unpooling的時候?qū)⑤斎雈eature map中的值填充到原來記錄的位置上,而其他位置則以0來進行填充。
下采樣
下采樣通常來講也叫做抽取,比如從多數(shù)集中抽取少部分
下采樣在圖像領(lǐng)域?qū)嶋H上就是縮小圖像,主要目的是為了使得圖像符合顯示區(qū)域的大小,生成對應(yīng)圖像的縮略圖。比如說在CNN中的池化層或卷積層就是下采樣。不過卷積過程導(dǎo)致的圖像變小是為了提取特征,而池化下采樣是為了降低特征的維度。
下采樣層有兩個作用:
一是減少計算量,防止過擬合;
二是增大感受野,使得后面的卷積核能夠?qū)W到更加全局的信息。
下采樣常見方法
1 池化:如Max-pooling和Average-pooling,目前通常使用Max-pooling,因為他計算簡單而且能夠更好的保留紋理特征;
2 卷積
總結(jié)
以上是生活随笔為你收集整理的到底什么是上采样、下采样的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CF 1529C Parsa‘s Hum
- 下一篇: F. It‘s a bird! No,