画像生成タスクにおいてダウンサンプリングはStrided convolution (stride=2)が一般的である。さて、Deconvolutionはどうなのか。
- Transposed Conv (stride=2)
- Upsampling + Conv (stride=1)
一般的にDeconvolutionというとTransposed Convのことを指すケースがほとんどである。
Transposed Convでは畳み込みの前に各ピクセルの間に0を挿入する。しかし、画像生成において問題が発生することがありチェッカーボードパターンが出るケースがある。これはオーバーラップ領域の不均一性に起因する。
(参考)チェッカーボードに関して有名な記事↓
https://distill.pub/2016/deconv-checkerboard/
一方で、Upsampling + Conv (stride=1)によりオーバーラップ領域の不均一性を回避することができる。UpsamplingのメソッドとしてはNearestnavorやBilinearなど何でもよい。
KerasのUpsampling2DやUpsampling3Dを使うと実装も簡単。
しかし実用面で言うと、Discriminatorが適切にチェッカーボードをfakeの特徴であると適切に学習できていれば、オーバーラップ不均一性は特に問題にならない。