画像生成AI

VAE・GAN・拡散モデル・CLIP — 画像を作り出す技術
🔰 初心者

AIが画像を「生成」するって、具体的にどういう仕組みなんですか?

🎓 上級者

画像生成AIは、大量の画像データからパターンを学習し、潜在空間(Latent Space)というコンパクトな表現を経由して新しい画像を作り出すんだ。主なアプローチはVAEGAN拡散モデルの3つだよ。

潜在空間(Latent Space)とは

画像の本質的な特徴を低次元のベクトルに圧縮した空間。

例えば「顔画像」なら、潜在空間の各次元が「髪の長さ」「肌の色」「笑顔の度合い」などに対応するイメージ。
この潜在空間の点を操作することで、新しい画像を生成したり、画像の特徴を変えたりできる。

ランダムサンプリング:潜在空間からランダムに点を選んでデコーダーに通すことで、新しい画像を生成する。確率分布(正規分布など)に従ってサンプリングする。

画像生成AIの3大アプローチ VAE 入力を確率分布に圧縮→ サンプリングして再構成 安定だがぼやけやすい 2013年 Kingma & Welling GAN 生成器 vs 識別器の 敵対的学習で高品質画像 高品質だが学習が不安定 2014年 Goodfellow 拡散モデル ノイズを段階的に除去して 画像を生成 高品質+安定。現在の主流 2020年〜 DALL·E 2, Stable Diffusion VAE → GAN → 拡散モデル の順に進化。現在は拡散モデルが主流
🔄 VAE(変分オートエンコーダ)
🔰 初心者

オートエンコーダは「入力を圧縮→復元」するモデルですよね。それで画像を生成できるんですか?

🎓 上級者

普通のオートエンコーダは入力の再構成が目的で、新しい画像は作れない。でもVAEは潜在表現を確率分布(正規分布)にするから、そこからランダムサンプリングして新しい画像を生成できるんだ。

オートエンコーダ vs VAE 通常のオートエンコーダ 入力画像 Encoder 固定点 Decoder → 潜在空間が離散的。新しい画像を生成できない VAE(変分オートエンコーダ) 入力画像 Encoder 確率 分布 サンプ リング Decoder → 潜在空間が滑らかな確率分布。ランダムサンプリングで新しい画像を生成可能 VQ-VAE(Vector Quantized VAE) 潜在表現を離散的なコードブックに量子化 連続値→有限個のコード。DALL·E(初代)で使用 テキストから画像コードを生成→デコードで画像化 Image-to-Image型 入力画像を別の画像に変換する手法 Pix2Pix、CycleGAN、スタイル変換など
⚔️ GAN(敵対的生成ネットワーク)
🔰 初心者

GANって「敵対的」っていう名前がついてますけど、何と何が戦っているんですか?

🎓 上級者

Generator(生成器)Discriminator(識別器)の2つのネットワークが戦うんだ。Generatorは「本物そっくりの偽画像」を作ろうとし、Discriminatorは「本物か偽物か」を見破ろうとする。この競争で両方が上達していく仕組みだよ。

GAN(Generative Adversarial Network)の仕組み ランダム ノイズ z Generator (生成器 / 贋作師) 偽画像を生成 偽画像 本物画像 Discriminator (識別器 / 鑑定士) 本物 or 偽物を判定 本物?偽物? (確率を出力) Generator: 「Discriminatorを騙したい!」→ より本物に近い画像を生成 Discriminator: 「偽物を見破りたい!」→ より正確に判定 この敵対的な競争で両方が上達 → 最終的にGeneratorが本物そっくりの画像を生成可能に

GAN(Generative Adversarial Network / Goodfellow, 2014年)

GeneratorとDiscriminatorの敵対的学習で高品質な画像を生成するモデル

Generator(生成器):ランダムノイズ z を入力して偽画像を生成。「贋作師」の役割。

Discriminator(識別器):画像が本物か偽物かを判定。「鑑定士」の役割。

学習:Generatorは「Discriminatorを騙す」、Discriminatorは「偽物を見破る」ように同時に学習。ゲーム理論のミニマックスゲーム

弱点:学習が不安定(モード崩壊:同じ画像ばかり生成する問題がある)。

🎨 GANの発展モデル
🔰 初心者

GANにも色々な種類があるんですか?

🎓 上級者

たくさんあるよ。DCGANがCNNで高品質化、Pix2PixCycleGANが画像変換、StyleGANが超リアルな顔生成を実現したんだ。

GANの発展系譜 GAN 2014 Goodfellow DCGAN 2015 CNN導入で高品質化 Pix2Pix 2017 ペア画像で変換 CycleGAN 2017 ペアなしで変換 StyleGAN 2018 スタイル制御 StyleGAN2 2019 アーティファクト除去 Image-to-Image型:入力画像を別の画像に変換する手法 Pix2Pix(ペア画像が必要)→ CycleGAN(ペアなしで変換可能)
モデル特徴用途
DCGAN2015Generator・DiscriminatorにCNNを導入。安定した学習と高品質な画像生成画像生成全般
Pix2Pix2017ペアの画像(入力A→出力B)が必要。条件付きGAN線画→カラー、地図→航空写真
CycleGAN2017ペアなしで2つのドメイン間の変換。サイクル整合性損失を使用馬→シマウマ、写真→絵画
StackGAN2017テキスト→画像を2段階で生成。Stage-I(低解像度)→ Stage-II(高解像度)テキスト説明から鳥・花の画像を生成
StyleGAN2018「スタイル」(粗い特徴〜細かい特徴)を段階的に制御して生成超リアルな顔画像生成
StyleGAN22019StyleGANのアーティファクト(水滴状のノイズ)を除去。さらに高品質に高解像度の顔・アート生成

Pix2Pix

ペア画像が必要なImage-to-Image変換
  • 入力A→出力Bの対応するペアが学習データに必要
  • 例:線画と完成画のペアで学習
  • 条件付きGAN(Conditional GAN)の一種
  • 制約:ペアデータの収集が大変

CycleGAN

ペアなしでドメイン変換
  • ペアデータが不要。2つのドメインの画像群だけでOK
  • A→B→Aのサイクルで元に戻る「サイクル整合性」で学習
  • 例:馬の画像群+シマウマの画像群だけで変換可能
  • Pix2Pixより応用範囲が広い
🌊 拡散モデル(Diffusion Model)
🔰 初心者

最近話題のDALL·EやStable Diffusionは何を使っているんですか?

🎓 上級者

これらは拡散モデルをベースにしているよ。仕組みは意外とシンプルで、「画像にノイズを加える過程」と「ノイズを除去して画像を復元する過程」の2ステップだ。

拡散モデル(Diffusion Model)の仕組み 拡散過程(Forward):画像にノイズを少しずつ加える 元画像 (猫) +ノイズ 少しノイズ もっとノイズ 完全な ノイズ (正規分布) 逆拡散過程(Reverse):ノイズを少しずつ除去して画像を生成 ランダム ノイズ -ノイズ 少し復元 もっと復元 生成画像 (新しい猫) NNが学習すること 「各ステップでどのくらい ノイズを除去すればいいか」を学習 → U-Netが多く使われる

拡散モデル(Diffusion Model)

画像にノイズを段階的に加え、逆にノイズを除去する過程を学習して画像を生成するモデル

拡散過程(Forward):元画像にガウスノイズを少しずつ加えて完全なノイズにする。

逆拡散過程(Reverse):NNが各ステップで「ノイズをどのくらい除去するか」を学習。ランダムノイズから段階的に画像を復元する。

GANとの違い

  • GANの「Generator vs Discriminator」の不安定な学習が不要
  • 学習が安定で、モード崩壊が起きにくい
  • 画像の多様性が高い
  • 弱点:生成に多数のステップが必要で遅い
🎨 Stable Diffusion / 潜在拡散モデル
🔰 初心者

Stable Diffusionってよく聞きますが、普通の拡散モデルと何が違うんですか?

🎓 上級者

通常の拡散モデルはピクセル空間で直接ノイズ除去するから計算コストが膨大だった。Stable Diffusionは潜在拡散モデル(Latent Diffusion Model / LDM)を使い、VAEで圧縮した潜在空間上で拡散プロセスを行うことで、計算効率を大幅に改善したんだ。

Stable Diffusion / 潜在拡散モデル(Stability AI / CompVis, 2022年)

VAEで圧縮した潜在空間上で拡散プロセスを実行し、高品質な画像を効率的に生成するモデル

潜在拡散モデル(Latent Diffusion Model / LDM):ピクセル空間ではなく、VAEのエンコーダーで圧縮した潜在空間上でノイズの付加・除去を行う。画像サイズを大幅に圧縮した状態で処理するため、計算効率が飛躍的に向上。

構成要素:

  • VAE:画像を潜在空間に圧縮(エンコーダー)し、潜在表現から画像に復元(デコーダー)する
  • U-Net:潜在空間上でノイズを段階的に除去するニューラルネットワーク
  • CLIP(Text Encoder):テキストプロンプトをベクトルに変換し、U-Netに条件として与える(テキスト条件付け)

オープンソース公開:Stability AI が学習済みモデルをオープンソースとして公開。誰でも無料で利用・改良できるようになり、AIの民主化に大きく貢献した。

意義:従来の拡散モデルは高品質だが計算コストが課題だった。LDMにより一般的なGPUでも高品質な画像生成が可能になった。

🔗 CLIP — テキストと画像をつなぐ
🔰 初心者

DALL·E 2は「テキストから画像を生成」しますよね。テキストと画像はどうやって結びつけているんですか?

🎓 上級者

そこで重要なのがCLIP(Contrastive Language–Image Pre-training)だよ。テキストと画像を同じベクトル空間にマッピングして、テキストと画像の対応関係を学習するんだ。

CLIP:テキストと画像を同じ空間にマッピング 「猫の写真」 Text Encoder (Transformer) テキスト埋め込み 🐱 猫の画像 Image Encoder (ViT / CNN) 画像埋め込み コサイン類似度で比較 対応するペア → 類似度を最大化 / 非対応ペア → 最小化 CLIPの応用 Zero-shot画像分類 学習していないカテゴリでも、テキストとの類似度で分類可能 テキスト→画像生成の「ガイド」 DALL·E 2: CLIPの画像埋め込みを生成→デコーダーで画像化 誘導拡散(Guided Diffusion) CLIPスコアで拡散過程を誘導し、テキストに合った画像を生成 OpenAI(2021年)。4億組のテキスト-画像ペアで学習

CLIP(Contrastive Language–Image Pre-training / OpenAI, 2021年)

テキストと画像を同じベクトル空間にマッピングし、対応関係を学習するモデル

構成:Text Encoder(Transformer)とImage Encoder(ViT/CNN)の2つのエンコーダー。

学習:対応するテキスト-画像ペアのコサイン類似度を最大化、非対応ペアの類似度を最小化する対照学習(Contrastive Learning)

コサイン類似度:2つのベクトルの方向の近さを-1〜1で表す指標。1に近いほど類似。

Zero-shot分類:「猫の画像」「犬の画像」等のテキストと入力画像の類似度を比較するだけで、学習していないカテゴリでも分類可能

🖼️ DALL·E 2 と GLIDE
🔰 初心者

DALL·E 2はどうやってテキストから画像を作っているんですか?

🎓 上級者

DALL·E 2はCLIP+拡散モデルの組み合わせだよ。テキストからCLIPの画像埋め込みを生成し、それをガイドにして拡散モデルで画像を作るんだ。

DALL·E 2 のパイプライン 「宇宙飛行士が 馬に乗っている」 CLIP Text Encoder Prior テキスト埋め込み→ CLIP画像埋め込みを予測 拡散モデル (Decoder) 画像埋め込み→画像を生成 生成画像 🧑‍🚀🐴 GLIDE(OpenAI, 2021年) テキスト条件付き拡散モデル。CLIPを使った誘導拡散(Classifier-Free Guidance)で テキストの指示に忠実な画像を生成。DALL·E 2の前身的モデル
誘導拡散(Guided Diffusion)

拡散モデルの逆拡散過程を、テキストやラベルなどの条件で誘導して望んだ画像を生成する技術。

Classifier Guidance:分類器の勾配を使って誘導
Classifier-Free Guidance:分類器を使わず、条件付き/条件なしの出力の差で誘導(GLIDEで採用)

条件の強さを調整するパラメータで、テキストへの忠実度と画像の多様性のバランスを制御できる。

📊 画像生成手法の比較
手法仕組み長所短所代表モデル
VAE確率分布に圧縮→サンプリング学習が安定。潜在空間が滑らか画像がぼやけやすいVAE, VQ-VAE
GANGenerator vs Discriminatorの競争鮮明で高品質な画像学習不安定。モード崩壊DCGAN, StyleGAN2
拡散モデルノイズ除去の逆過程を学習高品質+安定+多様性生成が遅い(多ステップ)DALL·E 2, GLIDE
潜在拡散モデル(LDM)VAEの潜在空間上で拡散拡散モデルの計算効率を大幅改善VAEの品質に依存Stable Diffusion
CLIPテキスト-画像の対応を学習Zero-shot分類。生成のガイド単体では生成できないCLIP
📝 まとめ
G検定で押さえるべきポイント