在語義分割中,要求輸入輸出的分辨率一樣大
在特征提取的時候,需要進行下采樣,所以在encode過程中,要進行相應的上采樣。
上采樣,即擴充圖像的h和w。
常見的上采樣方法有雙線性插值、轉置卷積、上采樣(unsampling)和上池化(unpooling)。
其中前兩種方法較為常見,后兩種用得較少。
1. 插值法
雙線性插值是目前在語義分割中用的最多的一種方式,其特點是不需要學習,運行速度快,
接着,同樣的方法,在Y方向上插值,就可以推導出P點處的像素值。
在pytorch中的API調用

卷積核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)