8.5 EfficientGAN の問題点と改良

EfficientGAN は AnoGAN よりもかなり推論時間が短くなった。

しかし、EfficientGAN では再構成した画像が入力とは実際には似ていないことがよく起こる。これは、EfficientGANでは「入力と再構成画像が似ている」ことがDiscriminatorの判断によってのみ定義されているからである。 論文 "Combining GANs and AutoEncoders for Efficient Anomaly Detection"では、Query(入力画像)とReconstruction (再構成画像)にずれが生じ、Abs. Difference (絶対値差分) が大きくなることが示されている。Encoder と Discriminator にL1損失を加えることで解決できる(CBiGAN)。

損失関数の変更

論文では ResNet を使っているが、ここではネットワークは変更せずに、損失関数だけを変更して対応する。

入力画像 $x$ と生成画像 $G(E(x))$ の間でのL1損失:
$\displaystyle L_R(x) = || x - G(E(x)) ||_1$

乱数 $z$ とエンコードした潜在変数 $E(G(z))$ の間でのL1損失:
$\displaystyle L_{R'}(x) = || z - E(G(z)) || _1$

損失の和:
$L_C (x, z) = L_R (x) + L_{R'} (z)$

Encoder と Generator の損失:

$\displaystyle L_{E,G}^{*} = (1 - \alpha) L_{E,G} + \alpha L_C$

実装

データのダウンロード

データの読み込み

Model

train

Test Anomaly Detection

正常な画像で実行