一些上取樣操作筆記

2021-09-28 17:24:57 字數 1627 閱讀 6729

所謂上取樣簡單的講就是將一幅影象的分別率提高,比如原始影象是256*256,經過2倍的上取樣變為了512*512的影象。最常見的實現方式是插值,比如雙線性插值,立方插值等,還有一些卷積方式的上取樣操作,比如反卷積,亞畫素卷積等。

unpooling

unpooling是cnn中max pooling的逆操作。這是從2023年紐約大學matthew d. zeiler和rob fergus發表的《visualizing and understanding convolutional networks》中引用的:因為max pooling不可逆,因此使用近似的方式來反轉得到max pooling操作之前的情況。

它的實現方式是:unpooling操作需要記住在做max pooling之前的size以及最大值對應的位置,然後將對應位置填上最大值,其餘位置置為0即可,便得到上取樣後的結果。其實現示意圖如下圖所示:

反卷積

與unpooling不同,使用反卷積來對影象進行上取樣是可以習得的。通常用來對卷積層的結果進行上取樣,使其回到原始的解析度。反卷積也被稱為分數步長卷積(convolution with fractional strides)或者轉置卷積(transpose convolution)或者後向卷積backwards strided convolution。

pixelshuffle

正常情況下,卷積操作會使feature map的高和寬變小。

但當我們的stride<1時,可以讓卷積後的feature map的高和寬變大——即解析度增大,這個新的操作叫做sub-pixel convolution,具體原理可以看espcn這篇**,pytorch中相應的實現方法名叫做pixelshuffle。

pixelshuffle演算法的實現流程如上圖,其實現的功能是:將乙個h × w的低解析度輸入影象(low resolution),通過sub-pixel操作將其變為rh x rw的高解析度影象(high resolution)。

但是其實現過程不是直接通過插值等方式產生這個高解析度影象,而是通過卷積先得到r**2個通道的特徵圖(特徵圖大小和輸入低解析度影象一致),然後通過週期篩選(periodic shuffing)的方法得到這個高解析度的影象,其中r為上取樣因子(upscaling factor),也就是影象的擴大倍數。其輸入輸出可以表示如下:

輸入: (n,c*upscale_factor**2,h,w)

輸出: (n,c,h*upscale_factor,w*upscale_factor)

例如:

>>> ps = nn.pixelshuffle(3)

>>> input = torch.tensor(1, 9, 4, 4)

>>> output = ps(input)

>>> print(output.size())

torch.size([1, 1, 12, 12])

Linux vi的一些操作筆記

2006 10 31 15 28 50 分類 技術研究 標籤 網路 字型大小訂閱 它和windows下的編輯器是不一樣的,基本上所有的操作都不需要先選擇,再操作。vi visual 是以視覺為導向的全螢幕編輯器 共分為三種方式 mode command方式 任何輸入都會作為編輯命令,而不會出現在螢幕...

Ubuntu中一些操作筆記

安裝命令 sudo apt get install sudo pip install 解除安裝 sudo apt remove 軟體名 更新可用軟體包系列 sudo apt update 更新已安裝的包 sudo apt upgrade pip list pip3 v 更新pip python m ...

Linux入門筆記2 一些工作筆記

linux檔案後的 是指該檔案是臨時檔案,主要是編輯文字或源 生成的。linux獲取root許可權 終端輸入 sudo passwd root 然後輸入密碼 再輸入 su root 輸入剛才的密碼就能獲取root許可權。linux退出root許可權 假設推出到使用者kop 終端輸入 su kop 便...