---
# System prepended metadata

title: 'Upsampling Methods: Comparison and Pitfalls'

---

# Upsampling Methods: Comparison and Pitfalls

## 🌱 簡短結論

* **Transposed Convolution (Deconv)**：想讓網路學會上採樣 → 精細但容易 checkerboard artifact。
* **Bilinear / Nearest Interpolation**：快速、平滑，但無法學習，只是固定插值。
* **Unpooling + Convolution**：能利用 pooling indices 恢復結構，特別適合語意分割（如 SegNet），比 transposed conv 穩定。

## 🔍 詳細比較

### 1. Transposed Convolution

* **原理**：在 feature map 上插 0，再做卷積，等效於「學習的上採樣」。
* **優點**：上採樣過程可學習 → 更靈活。
* **缺點**：容易出現 **棋盤格 (checkerboard) artifact**，需要設計 kernel/stride 避免。
* **適用**：GAN、超解析度，或需要高表達力的 decoder。

### 2. Bilinear / Nearest Interpolation

* **原理**：直接用插值公式放大（例如 bilinear = 周邊 4 像素加權平均）。
* **優點**：計算快，無參數，效果穩定。
* **缺點**：固定映射，不能學習，細節恢復有限。
* **適用**：影像分割的 baseline FCN，或當 decoder 不需要太多表達力時。

### 3. Unpooling + Convolution

* **原理**：上採樣時根據 max pooling 保存的 index 把值放回原位，再用卷積學習細節。
* **優點**：結合「結構性上採樣 (unpooling) + 學習能力 (conv)」，能保留更多幾何資訊。
* **缺點**：需要在 forward 時保存 pooling indices，記憶體消耗較大。
* **適用**：語意分割（SegNet）、需要結構還原的任務。


## 📊 選擇指南

| 方法              | 學習能力  | 成本 | 特點            | 適合場景                |
| --------------- | ----- | -- | ------------- | ------------------- |
| Transposed Conv | ✅ 可學習 | 中等 | 可能有 artifact  | GAN, SR, 分割         |
| Bilinear Interp | ❌ 固定  | 最低 | 平滑、穩定         | baseline 分割, 上游特徵對齊 |
| Unpool + Conv   | ✅ 可學習 | 較高 | 保留 pooling 結構 | SegNet, 高精度分割       |

## Unpooling + Convolution 使用情境 
SegNet 與高精度分割

### SegNet

* 發表於 2015 年，用於語意分割。
* **Encoder**：卷積 + Max Pooling 壓縮特徵。
* **Decoder**：使用 **Max Unpooling**（依據 pooling indices 還原位置）+ Conv，避免隨機插值模糊。
* **優點**：對邊界恢復更好，避免棋盤格。
* **應用**：自駕車道路、室內場景、醫療影像。

### 高精度分割

* 指需要像素級別準確性的任務，特別是邊界或小物體：

  * 醫療影像（腫瘤邊界）
  * 自駕車（車道線、路緣）
  * 遙測（建築物、農田區域）
* SegNet 專為此類需求設計。

## 棋盤格 Artifact 的解釋

### 原因

* Transposed Conv = 插 0 + 卷積。
* 輸出像素被覆蓋次數不均勻，有些多次、有些少次 → 亮暗格子。

### 結果

* 模型輸出呈現「格子狀」明暗紋路 → 棋盤格 artifact。

### 解決方法

1. 使用 kernel size 可被 stride 整除（例 stride=2, kernel=2）。
2. 改用插值 (bilinear/nearest) + Conv。
3. 使用 Sub-pixel Convolution / PixelShuffle。

### 視覺化舉例

![illustration of Transposed Conv.](https://hackmd.io/_uploads/rJP2SgL6le.png)
 
![checkboard effect example - Odena et al. 2016 (Deconvolution and Checkerboard Artifacts)](https://distill.pub/2016/deconv-checkerboard/thumbnail.jpg)


✨ **總結**

* **快又穩定** → Bilinear Interpolation。
* **學習細節** → Transposed Convolution（注意 artifact）。
* **還原結構** → Unpooling + Convolution（SegNet 等高精度分割）。
