Deconvolutionは何を使えばいい?

画像生成タスクにおいてダウンサンプリングはStrided convolution (stride=2)が一般的である。さて、Deconvolutionはどうなのか。

  1. Transposed Conv (stride=2)
  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の特徴であると適切に学習できていれば、オーバーラップ不均一性は特に問題にならない。

シェアする

フォローする