比較這 4 種 Up-sampling 技術 (Conv, Deconv, Upsample, PixelShuffle) 對字體變換(Noto Sans -> ZenMaruGothic)的影響

為了比較這 4 種 Up-sampling 技術 (Conv, Deconv, Upsample, PixelShuffle) 對字體變換(Noto Sans -> ZenMaruGothic)的影響,我建議進行一個控制變因的對比實驗。

以下是針對您需求的分析與實驗步驟。

1. 四種 Up-mode 的比較分析

  • conv ConvTranspose2d (標準反捲積)
    優點: 參數最多,學習能力強。
    缺點: 容易在生成的筆畫邊緣產生「棋盤格紋 (Checkerboard Artifacts)」。
  • deconv
    預期效果與 conv 極為相似,實際差異取決於程式碼細節(我們確認了它直接呼叫 ConvTranspose2d)。
  • upsample Upsample(bilinear) + Conv2d
    先用雙線性插值放大圖片,再經過一層卷積修飾。
    優點: 完全避免「棋盤格紋」,生成的筆畫最平滑。
    缺點: 細節可能稍微模糊,銳利度可能不如反捲積。
  • pixelshuffle
    將通道(Channel)重新排列成空間(Spatial)維度。
    優點: 保存資訊能力最強,能生成非常銳利且精細的邊緣,是近年超解析度(Super Resolution)的主流。
    缺點: 偶爾會有週期性的高頻噪點。

我的預測: 針對字體(線條明確、高對比)的任務,

pixelshuffle

 通常表現最好,其次是 

upsample

(較為保險但可能不夠銳利),conv 可能會有些微雜訊。

2. 實驗工作流 (Noto Sans -> ZenMaruGothic)

為了「只轉換這兩個字型」,我們不需要重新製作專屬資料集(那很麻煩),我們可以利用 Training 時的靈活性:一樣使用完整的 

train.obj

 進行訓練,但在 Training 過程中只看最終 Loss 下降情況,並在 Inference 階段只針對 ZenMaruGothic 做驗證。

(若您堅持只要訓練這兩個字,需要從原始資料中剔除其他字體並重新打包 pickle,這會耗費大量時間且對於觀察 

up_mode

 差異並非必要。使用現有資料集訓練,觀察效果是一樣的。)

我為您準備了 4 組指令,分別對應 4 種模式。請依序執行(建議將 

experiment_dir

 分開以保留結果):

通用設定 (快速實驗版)

  • Epoch: 40 (足夠觀察收斂差異)
  • NGF: 32 (加速訓練 & 輕量化)
  • Blur: 開啟 (穩定訓練)
  • EMA: 開啟 (預設)

實驗指令

1. 模式: Conv (標準)

python train.py --experiment_dir experiments/compare_conv --up_mode conv --ngf 32 --epoch 40 --g_blur --gpu_ids 0

2. 模式: Deconv (反捲積)

python train.py --experiment_dir experiments/compare_deconv --up_mode deconv --ngf 32 --epoch 40 --g_blur --gpu_ids 0

3. 模式: Upsample (插值+卷積)

python train.py --experiment_dir experiments/compare_upsample --up_mode upsample --ngf 32 --epoch 40 --g_blur --gpu_ids 0

4. 模式: PixelShuffle (像素重組)

python train.py --experiment_dir experiments/compare_pixelshuffle --up_mode pixelshuffle --ngf 32 --epoch 40 --g_blur --gpu_ids 0

3. 推論與比較 (Inference)

訓練完成後,我們針對 “ZenMaruGothic” (假設其 label ID 為 

1

,如果不確定,請查閱您的 dataset label map) 進行生成。

(註:這裡假設您已經知道 ZenMaruGothic 的 label ID。如果它是 Font B,通常 Label 是 1。)

# 比較 Conv
python infer.py --experiment_dir experiments/compare_conv --up_mode conv --ngf 32 --resume latest --g_blur --label 1

# 比較 Upsample
python infer.py --experiment_dir experiments/compare_upsample --up_mode upsample --ngf 32 --resume latest --g_blur --label 1

# 比較 PixelShuffle
python infer.py --experiment_dir experiments/compare_pixelshuffle --up_mode pixelshuffle --ngf 32 --resume latest --g_blur --label 1

執行完畢後,您可以打開各個 

infer 目錄下的圖片進行肉眼對比,重點觀察:

  1. 筆畫邊緣: 是否有鋸齒或格子狀紋理(Conv 會有,Upsample 少,PixelShuffle 銳利)。
  2. 筆畫連結處: 是否平滑自然。
  3. 整體結構: 是否有變形或斷裂。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *