条件付きGAN

に公開

はじめに

概要

  • シラバス:E資格2024#2
  • 条件付きGANとCycleGANを勉強する

キーワード

条件付きGAN, CycleGAN, 循環一貫性損失

学習内容

条件付きGAN(Conditional GAN, CGAN)

  • 通常のGANに「条件(ラベルや属性)」を加えて制御可能にしたもの
    • 「○○な画像を生成して!」と指定できるGAN
要素 通常のGAN 条件付きGAN(cGAN)
入力(Generator) ノイズ z ノイズ z + 条件 y
入力(Discriminator) 画像 x 画像 x + 条件 y
目的 「本物っぽい画像を作る」 「条件に合った本物っぽい画像を作る」

損失関数

\min_G \max_D \ \mathbb{E}_{x \sim p_{\text{data}}} [\log D(x, y)] + \mathbb{E}_{z \sim p_z} [\log (1 - D(G(z, y), y))]
  • 生成器Gは、条件yに基づいた画像を生成
  • 識別器Dは、画像と条件の組が「本物か偽物か」を判定

CycleGAN

  • ペアの対応がない画像同士のドメイン変換(例:馬⇄シマウマ、写真⇄絵画)を可能にする画像変換用のGANモデル
    • 対応ペアなしで「AのスタイルをBに変換」「BをAに戻す」を学習するGAN
  • 通常の画像変換モデルでは、「入力画像と変換後画像」のペアが必要。でも現実には、写真の「馬」と対応する「シマウマ画像」は存在しない。CycleGANは、こうした「非ペア画像」の変換を可能にする。

構造

CycleGANは、2つのGeneratorと2つのDiscriminatorを持つ

ネットワーク 役割
G: A \to B ドメインAの画像をドメインBへ変換
F: B \to A ドメインBの画像をドメインAへ変換
D_B 「Bの画像」と「G(A)」を判別
D_A 「Aの画像」と「F(B)」を判別

循環一貫性損失(Cycle Consistency Loss)

  • 損失関数で、「変換して元に戻したら、元の画像に戻るはず」という制約を数式的に表現したもの
    • 「A→B→A」や「B→A→B」と変換しても、元の画像に近くなければダメというペナルティ
  • なぜ必要か
    • 変換先の画像と正解画像が対応していないので、正解との比較ができない
    • 単に「本物っぽい画像を生成する」だけだと、意味を持たない変換(例:入力画像と無関係な出力)が学習される恐れがある
    • 「変換して戻すと元に近くなるようにしろ」という制約を加えるのが循環一貫性損失である

目的と効果

目的 説明
内容保存 変換後も、入力の構造や意味が保持されるようにする
安定学習 本物に似せるだけでなく、意味のある変換を学習できる
ペアなし学習を可能に 正解画像がなくても、一貫性に基づいた間接的な教師信号を得られる
GitHubで編集を提案

Discussion