JA EN

拡散モデルの仕組み - Stable Diffusion の技術解説

· 約 9 分で読めます

拡散モデルの基本原理 - ノイズ除去で画像を生成する

拡散モデル (Diffusion Model) は、画像に段階的にノイズを加える過程 (前方拡散) と、ノイズから画像を復元する過程 (逆拡散) を学習する生成モデルです。2020 年に DDPM (Denoising Diffusion Probabilistic Models) として提案され、GAN を超える画質と安定した訓練を実現しました。Stable Diffusion、DALL-E、Midjourney などの画像生成 AI の核心技術です。

前方拡散過程:

元画像 x0 に小さなガウシアンノイズを T ステップにわたって段階的に加えます。各ステップで q(xt|xt-1) = N(xt; sqrt(1-βt)*xt-1, βt*I) に従いノイズを加算します。T が十分大きいと (T=1000 が一般的)、最終的に純粋なガウシアンノイズ N(0,I) に収束します。

逆拡散過程:

ニューラルネットワークが各ステップでノイズを予測し、段階的に除去して画像を復元します。モデルは εθ(xt, t) としてノイズを予測し、損失関数は単純な MSE: L = E[||ε - εθ(xt, t)||^2] です。このシンプルな目的関数が安定した訓練を可能にします。

GAN との比較:

U-Net アーキテクチャとノイズ予測ネットワーク

拡散モデルのノイズ予測ネットワークには U-Net アーキテクチャが標準的に使用されます。エンコーダ・デコーダ構造とスキップ接続により、多スケールの情報を統合して高品質なノイズ予測を実現します。Stable Diffusion v1.5 の U-Net は約 860M パラメータで構成され、入力として 64x64x4 の潜在表現とタイムステップ情報を受け取ります。

U-Net の構造:

エンコーダは画像を段階的にダウンサンプリングし、抽象的な特徴を抽出します。具体的には 64→32→16→8 の 4 段階で解像度を下げ、チャネル数を 320→640→1280→1280 と増加させます。デコーダはアップサンプリングで解像度を復元し、スキップ接続でエンコーダの対応する解像度の特徴を直接受け取ります。各段階は ResNet ブロックと Transformer ブロックの組み合わせで構成されます。

時間ステップの埋め込み:

ノイズ予測モデルは現在のタイムステップ t を入力として受け取ります。t は正弦波位置エンコーディング (Sinusoidal Positional Encoding) でベクトル化され、MLP を通じて各 ResNet ブロックに注入されます。これによりモデルはノイズレベルに応じた適切な除去量を学習できます。

Self-Attention の導入:

U-Net の中間層に Self-Attention レイヤーを追加することで、大域的な依存関係を捕捉します。解像度 16x16 や 32x32 の特徴マップに適用され、画像全体の整合性を保つ生成を可能にします。計算コストは O(n^2) ですが、低解像度の特徴マップにのみ適用することで実用的な速度を維持します。

潜在拡散モデル - Stable Diffusion のアーキテクチャ

Stable Diffusion は潜在拡散モデル (Latent Diffusion Model, LDM) を採用し、ピクセル空間ではなく潜在空間で拡散過程を実行します。これにより計算コストを大幅に削減し、消費者向け GPU でも実行可能な高品質画像生成を実現しました。

VAE (変分オートエンコーダ):

画像を潜在空間に圧縮するエンコーダと、潜在表現から画像を復元するデコーダで構成されます。512 × 512の画像を 64x64x4 の潜在表現に圧縮し、空間的な次元を 1/64 に削減します。拡散過程はこの圧縮された潜在空間で実行されるため、計算量が大幅に削減されます。

CLIP テキストエンコーダ:

テキストプロンプトをベクトル化し、U-Net の Cross-Attention レイヤーに注入します。CLIP のテキストエンコーダがプロンプトを 77 トークン x 768 次元のベクトルに変換し、U-Net の各レイヤーで Cross-Attention を通じて画像生成を条件付けます。

サンプリングスケジューラ:

推論時のステップ数を削減するためのサンプリングスケジューラが重要です。DDPM の 1000 ステップを DDIM で 50 ステップ、DPM-Solver で 20 ステップまで削減できます。Euler、LMS、DPM++ 2M Karras など多数のスケジューラが存在し、速度と品質のトレードオフが異なります。

テキスト条件付けと Classifier-Free Guidance

テキストプロンプトに応じた画像を生成するための条件付け技術と、生成品質を向上させる Classifier-Free Guidance (CFG) の仕組みを解説します。

Cross-Attention による条件付け:

U-Net の各レイヤーに Cross-Attention を追加し、テキスト埋め込みを Key/Value、画像特徴を Query として注意機構を計算します。これによりテキストの意味的情報が画像生成過程に反映されます。「a cat sitting on a red chair」というプロンプトでは、「cat」「sitting」「red」「chair」の各トークンが空間的に適切な位置に反映されます。

Classifier-Free Guidance:

訓練時に一定確率 (10-20%) でテキスト条件を空にして無条件生成も学習します。推論時には条件付き予測と無条件予測の差をスケールして加算します: ε_guided = ε_uncond + w * (ε_cond - ε_uncond)。ガイダンススケール w が大きいほどプロンプトへの応答性が高まりますが、大きすぎると彩度が過剰になります。w=7.5 が標準的です。

Negative Prompt:

生成したくない要素を指定するネガティブプロンプトは、無条件予測の代わりにネガティブプロンプトの予測を使用することで実現されます。「blurry, low quality」などを指定することで、それらの特徴から離れる方向に生成を誘導します。

高速化技術 - SDXL, LCM, Turbo

拡散モデルの最大の課題である生成速度を改善するための技術が急速に発展しています。従来 50 ステップ必要だった生成が、1-4 ステップで実現可能になっています。

SDXL (Stable Diffusion XL):

Stability AI が 2023 年にリリースした高品質モデルです。2 段階のパイプライン (Base + Refiner) で 1,024 × 1,024の高解像度画像を生成します。テキストエンコーダに OpenCLIP ViT-bigG と CLIP ViT-L の 2 つを併用し、プロンプト理解力が向上しています。

LCM (Latent Consistency Models):

一貫性蒸留 (Consistency Distillation) により、少ないステップ数で高品質な生成を実現します。4-8 ステップで SD 1.5 の 50 ステップと同等の品質を達成します。LoRA として提供され、既存モデルに適用可能です。

SDXL Turbo / SD Turbo:

Adversarial Diffusion Distillation (ADD) により、1 ステップでのリアルタイム生成を実現します。GAN の識別器を蒸留損失に組み込み、少ないステップでもシャープな画像を生成します。RTX 3090 で 512 × 512の画像を約 200ms で生成可能です。

Flash Diffusion:

知識蒸留とプログレッシブ学習を組み合わせた手法で、4 ステップで高品質な生成を実現します。既存のカスタムモデル (LoRA 適用済み) にも対応し、汎用性が高いです。

実践的な活用 - ControlNet とカスタムモデル

拡散モデルを実用的に活用するための制御技術とカスタマイズ手法を解説します。テキストプロンプトだけでは制御が難しい構図やポーズを、追加の条件で制御します。

ControlNet:

エッジ検出、深度マップ、ポーズ推定、セグメンテーションマップなどの追加条件で生成を制御する技術です。U-Net のエンコーダをコピーし、追加条件を入力として受け取るブランチを作成します。元の U-Net の重みは固定したまま、ControlNet ブランチのみを訓練します。

LoRA (Low-Rank Adaptation):

モデルの重み行列に低ランクの更新を加えるファインチューニング手法です。全パラメータを更新する代わりに、少数の追加パラメータ (rank=4-128) のみを訓練します。モデルサイズの 1% 未満の追加でスタイルやキャラクターを学習でき、複数の LoRA を組み合わせることも可能です。

IP-Adapter:

参照画像のスタイルや構図を新しい画像に転写する技術です。CLIP 画像エンコーダの出力を Cross-Attention に注入し、テキストと画像の両方で条件付けします。スタイルの強度を調整でき、テキストプロンプトとのバランスを制御可能です。

実行環境:

Stable Diffusion は diffusers ライブラリ (Hugging Face) で簡単に実行できます。VRAM 8GB 以上の GPU が推奨で、xformers や torch.compile による高速化が可能です。ComfyUI や AUTOMATIC1111 などの GUI ツールも充実しています。

関連記事

GAN の画像応用 - スタイル変換、画像生成、修復における敵対的生成ネットワーク

GAN の画像処理応用を体系的に解説。StyleGAN、Pix2Pix、CycleGAN の原理と実装、スタイル変換・画像生成・修復での活用パターンを具体例とともに紹介します。

ニューラルスタイルトランスファーの仕組み - 画風変換の原理と実装

CNN を活用したニューラルスタイルトランスファーの原理を解説。Gram 行列によるスタイル表現から高速化手法、実装コードまで網羅します。

深層学習による超解像技術 - SRCNN から Real-ESRGAN までの進化と実践

深層学習を用いた画像超解像技術の発展を体系的に解説。SRCNN から Real-ESRGAN までの主要モデルの原理、性能比較、実務での導入方法を紹介します。

CLIP モデルの理解と画像検索への応用

OpenAI の CLIP モデルの仕組みからゼロショット分類、画像検索システム構築まで解説。マルチモーダル AI の基礎を学べます。

転移学習で少量データから画像分類器を作る - Fine-tuning 実践ガイド

事前訓練済みモデルを活用し、100 枚程度の少量データから高精度な画像分類器を構築する転移学習の手法を PyTorch コード付きで解説します。

画像の自動タグ付け技術 - 物体検出、シーン認識、キャプション生成の仕組み

画像認識 AI による自動タグ付けの技術を解説。物体検出 (YOLO)、シーン認識、画像キャプション生成の仕組みと、Web アプリケーションへの実装方法を具体例とともに紹介します。

関連用語