GAN の画像応用 - スタイル変換、画像生成、修復における敵対的生成ネットワーク
GAN の基本原理 - 敵対的学習による画像生成
GAN (Generative Adversarial Network: 敵対的生成ネットワーク) は、2014 年に Ian Goodfellow が提案した生成モデルのフレームワークです。Generator (生成器) と Discriminator (識別器) の 2 つのネットワークが互いに競い合いながら学習することで、本物と見分けがつかない画像を生成する能力を獲得します。
学習の仕組み:
- Generator (G): ランダムノイズ z から画像を生成する。目標は Discriminator を騙すこと。
- Discriminator (D): 入力画像が本物 (学習データ) か偽物 (G の出力) かを判定する。目標は正しく判定すること。
この 2 者のミニマックスゲーム min_G max_D V(D, G) = E[log D(x)] + E[log(1 - D(G(z)))] を最適化することで、G は学習データの分布を近似する画像を生成できるようになります。
GAN の画像応用分野:
- 無条件生成: ランダムに新しい画像を生成 (StyleGAN)
- 条件付き生成: 入力条件に基づいて画像を生成 (Pix2Pix, SPADE)
- 画像変換: ある画像を別のスタイルに変換 (CycleGAN)
- 画像修復: 欠損領域を自然に埋める (DeepFill)
- 超解像: 低解像度画像を高解像度化 (ESRGAN)
GAN の課題: モード崩壊 (mode collapse: 多様性の喪失)、学習の不安定性、評価の困難さが主な課題です。これらに対して、Progressive Growing、Spectral Normalization、Wasserstein 距離など多くの安定化技術が開発されてきました。
StyleGAN - 高品質な画像生成の到達点
StyleGAN (2019-2024) は NVIDIA が開発した無条件画像生成モデルで、人間の顔、風景、動物など、本物と見分けがつかない高品質な画像を生成します。スタイルベースの Generator アーキテクチャにより、生成画像の属性を細かく制御できます。
StyleGAN のアーキテクチャ: 従来の GAN が潜在変数 z を直接 Generator に入力するのに対し、StyleGAN は z をマッピングネットワーク (8 層 MLP) で中間潜在空間 W に変換し、各解像度レベルで AdaIN (Adaptive Instance Normalization) を通じてスタイルとして注入します。
スタイルの階層的制御:
- 粗いスタイル (4x4-8x8): 顔の形状、ポーズ、髪型
- 中間スタイル (16x16-32x32): 顔の特徴、目の形、鼻の形
- 細かいスタイル (64x64-1,024 × 1,024): 肌の質感、髪の色、照明
StyleGAN2 (2020) の改良: (1) AdaIN を Weight Demodulation に置換しアーティファクト除去。(2) Progressive Growing を廃止し、全解像度を同時に学習。(3) Path Length Regularization で潜在空間の滑らかさを改善。
StyleGAN3 (2021): エイリアシングを根本的に解決し、生成画像の平行移動や回転に対する等変性を実現しました。動画生成への応用が容易になりました。
実用的な応用: 顔画像の生成 (プライバシー保護のための合成データ)、ゲームキャラクターの自動生成、ファッションデザインの探索、建築デザインのバリエーション生成など。FFHQ データセット (70,000 枚の顔画像) で学習した事前学習モデルが公開されており、転移学習で少量データからカスタムモデルを構築できます。
Pix2Pix と条件付き画像変換 - ペア画像からの学習
Pix2Pix (2017) は、入力画像と出力画像のペアデータから画像変換を学習する条件付き GAN です。セグメンテーションマップから写真への変換、線画の着色、昼夜変換など、多様な画像変換タスクに適用できる汎用的なフレームワークです。
アーキテクチャ:
- Generator: U-Net 構造 (エンコーダ-デコーダ + スキップ接続)。入力画像の構造情報をスキップ接続で保持しながら変換。
- Discriminator: PatchGAN (70x70 パッチ単位で本物/偽物を判定)。画像全体ではなく局所的なテクスチャの自然さを評価。
損失関数: L_total = L_cGAN + λ × L_L1。敵対的損失でリアルさを、L1 損失で構造の忠実度を確保します。λ=100 がデフォルトです。
代表的な応用:
- セマンティックマップ → 写真 (Cityscapes: 道路シーン生成)
- エッジ画像 → 写真 (靴、バッグのデザイン生成)
- 白黒 → カラー (自動着色)
- 昼 → 夜 (照明変換)
- 航空写真 → 地図 (地図生成)
SPADE (2019): Pix2Pix の改良で、セマンティックマップからの画像生成に特化しています。Spatially-Adaptive Normalization により、セマンティック情報を正規化層に直接注入し、より高品質で多様な画像を生成します。同じセマンティックマップから異なるスタイルの画像を生成可能です。
学習データの要件: Pix2Pix はペアデータ (入力と正解の対) が必要です。最低 400-500 ペアで学習可能ですが、1000 ペア以上で安定した品質が得られます。データ拡張 (反転、回転、色変換) で実効的なデータ量を増やすことが重要です。
CycleGAN - ペアデータ不要の画像変換
CycleGAN (2017) は、ペアデータなしで 2 つのドメイン間の画像変換を学習する画期的な手法です。「馬 → シマウマ」「写真 → モネ風絵画」「夏 → 冬」など、対応するペア画像を用意することが困難なタスクに適用できます。
サイクル一貫性損失 (Cycle Consistency Loss): CycleGAN の核心的なアイデアです。ドメイン A → B への変換 G と、B → A への変換 F を同時に学習し、G(F(b)) ≈ b かつ F(G(a)) ≈ a という制約 (サイクル一貫性) を課します。これにより、ペアデータなしでも意味のある変換が学習されます。
ネットワーク構成:
- Generator G: A → B (ResNet ベース、9 残差ブロック)
- Generator F: B → A
- Discriminator D_A: ドメイン A の画像を判定
- Discriminator D_B: ドメイン B の画像を判定
損失関数: L = L_GAN(G, D_B) + L_GAN(F, D_A) + λ × L_cycle(G, F)。λ=10 がデフォルトで、サイクル一貫性の重みを制御します。
代表的な応用:
- 写真 → 絵画スタイル変換 (モネ、ゴッホ、浮世絵)
- 馬 ↔ シマウマ (動物の外見変換)
- 夏 ↔ 冬 (季節変換)
- Apple ↔ Orange (物体変換)
- 衛星画像 → 地図 (ペアデータ不要版)
限界と注意点: CycleGAN は形状の大きな変更が苦手です (犬 → 猫は困難)。テクスチャや色の変換は得意ですが、構造的な変換には限界があります。また、学習に 200 エポック以上 (GPU で 1-2 日) が必要で、計算コストが高いです。
CUT (Contrastive Unpaired Translation, 2020): CycleGAN の改良で、サイクル一貫性の代わりにコントラスティブ学習を使用します。片方向の Generator のみで学習可能で、計算コストが半減し、品質も向上しています。
GAN による画像修復と編集 - DeepFill と GAN Inversion
GAN の生成能力を画像修復 (Inpainting) や画像編集に活用する手法を解説します。GAN は欠損領域に意味的に整合する内容を生成でき、従来のパッチベース手法を大幅に上回る品質を実現します。
DeepFill v2 (2019): Gated Convolution を使用した GAN ベースの Inpainting モデルです。ユーザーがフリーフォームのマスク (任意形状) を指定でき、自然な修復結果を生成します。Contextual Attention モジュールにより、画像内の遠い位置からも参照情報を取得できます。
GAN Inversion: 既存の画像を GAN の潜在空間に逆マッピングする技術です。画像を潜在コード w に変換し、w を操作することで画像を編集します。
- 最適化ベース: 各画像に対して w を最適化。高精度だが遅い (1 枚 1-5 分)。
- エンコーダベース: エンコーダネットワークで w を推定。高速 (1 枚 50ms) だが精度は劣る。
- ハイブリッド: エンコーダで初期値を推定し、最適化で精緻化。
潜在空間での画像編集: GAN の潜在空間には意味的な方向が存在します。例えば StyleGAN の W 空間で特定の方向に移動すると、「年齢を変える」「笑顔にする」「髪色を変える」「眼鏡を追加する」といった編集が可能です。InterFaceGAN、GANSpace、StyleCLIP などの手法で編集方向を発見できます。
顔修復 (GFPGAN, 2021): 劣化した顔画像を高品質に復元する専用モデルです。StyleGAN2 の事前学習済み顔生成能力を活用し、ぼけた顔、低解像度の顔、古い写真の顔を鮮明に復元します。Real-ESRGAN と組み合わせて使用されることが多いです。
GAN の現在と未来 - Diffusion モデルとの関係
2022 年以降、拡散モデル (Diffusion Model) の台頭により、GAN の位置づけが変化しています。両者の特性を比較し、今後の画像生成技術の方向性を考察します。
Diffusion モデルの優位性:
- 学習の安定性: モード崩壊が発生しない
- 多様性: より多様な画像を生成可能
- 条件付け: テキスト、画像、セグメンテーションなど多様な条件に対応
- 品質: FID スコアで GAN を上回る (ImageNet で FID 2-3)
GAN が依然として優れる領域:
- 推論速度: 1 回のフォワードパスで生成 (Diffusion は 20-50 ステップ必要)
- リアルタイム処理: 動画処理、インタラクティブ編集
- 潜在空間の解釈性: 編集方向の発見と制御が容易
- 軽量モデル: モバイルデバイスでの実行が可能
ハイブリッドアプローチ: GAN と Diffusion の長所を組み合わせる研究が進んでいます。(1) GAN で高速に初期画像を生成し、Diffusion で精緻化する 2 段階アプローチ。(2) Diffusion の学習に GAN の Discriminator を補助損失として使用。(3) 蒸留 (Distillation) で Diffusion の品質を GAN の速度で実現。
実務での選択指針:
- リアルタイム処理が必要 → GAN (StyleGAN, Pix2Pix)
- 最高品質が必要 → Diffusion (Stable Diffusion, DALL-E 3)
- 潜在空間での編集が必要 → GAN (StyleGAN + Inversion)
- テキスト条件付き生成 → Diffusion
- ペアデータなしの変換 → CycleGAN / CUT
今後の展望: Consistency Models (2023) や SDXL Turbo (2024) など、Diffusion の推論を 1-4 ステップに高速化する研究が進んでおり、GAN の速度優位性は縮小しつつあります。一方、GAN の潜在空間の解釈性は Diffusion にはない独自の強みであり、画像編集分野では引き続き重要な役割を果たすと考えられます。