上采樣方法


在語義分割中,要求輸入輸出的分辨率一樣大

在特征提取的時候,需要進行下采樣,所以在encode過程中,要進行相應的上采樣。

上采樣,即擴充圖像的h和w。

常見的上采樣方法有雙線性插值、轉置卷積、上采樣(unsampling)和上池化(unpooling)。

其中前兩種方法較為常見,后兩種用得較少。

1. 插值法

雙線性插值是目前在語義分割中用的最多的一種方式,其特點是不需要學習,運行速度快,

 

 

接着,同樣的方法,在Y方向上插值,就可以推導出P點處的像素值。

在pytorch中的API調用

output = F.interpolate(output, size=input_size, mode='bilinear')
 
2. 反卷積或轉置卷積
2.1
一個正常卷積的過程:

卷積核kernel尺寸為3X3

 

 

設strides=1, padding=0, 

按照卷積計算公式  

 

所以輸出的output尺寸為 2X2

2.2

用矩陣乘法描述卷積

把input 的元素矩陣展開為一個列向量

輸出output展開為一個列向量

用矩陣運算描述整個過程

 

通過推導,可以得到稀疏矩陣

 

2.3 反卷積

反卷積就是要對這個矩陣運算進行逆運算,即通過C和Y得到X

 

 所以反卷積也叫轉置卷積

需要注意的一點是,反卷積只是恢復了矩陣X的大小,不能恢復其數值

反卷積輸入輸出的關系

  正常卷積: 

    o = (i + 2*p - k)/s + 1

  反卷積相當於輸入輸出對調:

       i = s * (o - 1) + k - 2*p

  所以反卷積的輸出為

    o = s * (i  - 1) + k - 2*p

  pytorch 中API調用

       self.up_output = nn.ConvTranspose2d(num_classes, num_classes, kernel_size=4, stride=2, bias=False)

3. Upsampling 和 Uppooling

  uppooling 用的比較少,具體如下圖示意

  圖片來源:上采樣方法原理簡介 - 簡書 (jianshu.com)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM