在 8 層的 UNet 結構中,Residual Block(殘差塊) 最適合加在 深層、中層的 Encoder 部分,這樣能幫助保留細節,同時讓梯度更穩定地回傳。
建議加 Residual Block 的層數
- 建議加在 Encoder(下採樣)的中深層:
- Layer 3、4、5、6
- 這些層負責學習較高層次的字型風格,適合殘差學習
- 避免在最淺(Layer 1,2)或最深(Layer 8)層加入,避免影響低層特徵或輸出收斂
- 不建議加在:
- 最內層(Layer 1):這是 UNet 的 bottleneck,不適合加入額外的殘差學習,避免增加過多計算
- 最外層(Layer 8):這是 Generator 的輸出層,應保持最簡單的學習
最終推薦方案
層數 | Residual Block | Self-Attention | 作用 |
---|---|---|---|
Layer 1 (bottleneck) | ❌ | ❌ | 保持簡單,避免梯度干擾 |
Layer 2 | ❌ | ❌ | 只做基本特徵下採樣 |
Layer 3 | ✅ | ❌ | 深層特徵提取 |
Layer 4 | ✅ | ✅ | 風格特徵學習,加入 Self-Attention |
Layer 5 | ✅ | ❌ | 高層語義學習 |
Layer 6 | ✅ | ✅ | 進一步風格保留 |
Layer 7 | ❌ | ❌ | 主要負責融合 |
Layer 8 (輸出層) | ❌ | ❌ | 只做輸出,不做額外計算 |
理由
- Layer 3–6 負責提取 字型筆劃、風格資訊,適合加入殘差學習
- Layer 4、6 再加 Self-Attention 來捕捉全局風格
- 輸入層 & 輸出層保持乾淨,避免不必要的學習干擾
如果希望 Self-Attention 主要用來捕捉 細部風格,可以稍微調整原本的層級設定,讓 Self-Attention 更集中在 細節資訊較重要的層。
建議的 Self-Attention 層調整
層數 | Residual Block | Self-Attention | 作用 |
---|---|---|---|
Layer 1 (bottleneck) | ❌ | ❌ | 保持簡單,避免梯度干擾 |
Layer 2 | ❌ | ❌ | 低層特徵提取 |
Layer 3 | ✅ | ✅ | 開始捕捉細節,加入 Self-Attention |
Layer 4 | ✅ | ❌ | 深層特徵提取 |
Layer 5 | ✅ | ❌ | 學習字型風格 |
Layer 6 | ✅ | ✅ | 進一步風格保留,加入 Self-Attention |
Layer 7 | ❌ | ✅ | 融合高層 & 細節資訊,加入 Self-Attention |
Layer 8 (輸出層) | ❌ | ❌ | 只做輸出,不做額外計算 |
調整的理由
- Layer 3:這一層剛開始進入深層,加入 Self-Attention 可以讓模型在早期就開始學習局部筆劃特徵(如字的線條、彎曲度)。
- Layer 6:這一層是 UNet 重要的上採樣階段,加入 Self-Attention 讓生成的字型能保留更多 Zen Maru Gothic 的風格資訊。
- Layer 7:這是最接近輸出的高層特徵,這時候加入 Self-Attention 主要是讓字型細節更清楚、邊緣更平滑。
對應的效果
✅ Self-Attention 在 Layer 3, 6, 7 → 確保筆劃細節 + 風格學習 + 邊緣處理都能強化
✅ Residual Block 在 Layer 3–6 → 提高深層特徵學習能力,讓風格轉換更穩定
這樣的配置可以讓模型 更有效學習細部風格,避免只學到整體輪廓而忽略字型細節! 🚀