# 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。 ### 視覺化舉例   ✨ **總結** * **快又穩定** → Bilinear Interpolation。 * **學習細節** → Transposed Convolution(注意 artifact)。 * **還原結構** → Unpooling + Convolution(SegNet 等高精度分割)。
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.