本稿は Diffusion Model(拡散モデル) に関する記事です。
| この記事の要点 |
- Diffusion Model はノイズを徐々に除去することでデータを生成する深層モデル
- 2022 年以降の画像生成 AI の事実上の主流(Stable Diffusion / DALL·E / Midjourney / Imagen)
- 近年は動画 (Sora / Veo) / 音声 / 音楽 / 3D / 分子生成まで応用が拡大
- 2 ステップで動く: 順過程(画像にノイズを足す) + 逆過程(ノイズから画像を復元)
- GAN や VAE よりも学習が安定し、多様性のある高品質出力が得られる
- 計算コストが高い → Latent Diffusion / 蒸留 / Step 削減で実用化
- 主要ライブラリ: Hugging Face diffusers / Stable Diffusion WebUI / ComfyUI
|
Diffusion Model とは?
Diffusion Model(拡散モデル) は、ノイズから徐々に意味のあるデータを生成するように学習された深層生成モデルです。物理学の拡散現象(インクが水に広がる様子)にヒントを得たことから「拡散」と名付けられています。
2020 年の DDPM (Denoising Diffusion Probabilistic Models) 論文以降に急速に発展し、2022 年の Stable Diffusion の公開で一気に一般化しました。現在は画像・動画・音声・音楽・3D・分子設計まで、幅広い「生成」タスクで主流の方式です。
動作の直感
| 補足: 「ノイズから絵を彫り出す」イメージ |
大理石の塊から彫刻を彫り出すように、Diffusion Model は純粋なノイズ画像から始めて、テキストプロンプトに沿うように少しずつノイズを取り除き、最終的に絵を浮かび上がらせます。
学習時は逆に、訓練画像にノイズを徐々に加えていく過程と、それを 1 ステップずつ復元するモデルを学びます。これにより「ノイズだらけの画像を 1 ステップきれいにする方法」を覚え、推論時に純ノイズから逆向きに何ステップも巻き戻して絵を作るのです。 |
順過程と逆過程
| フェーズ | 何をするか | タイミング |
| 順過程 (Forward Process) | 元の画像にガウス雑音を T ステップで足し、最終的に純ノイズへ | 学習時に行う |
| 逆過程 (Reverse Process) | 純ノイズから T ステップでノイズ除去し、画像を生成 | 推論時に行う |
主要バリアントと進化
| 年 | 論文・モデル | 貢献 |
| 2015 | Sohl-Dickstein 等の初出論文 | 拡散モデルの数学的提案 |
| 2020 | DDPM | 実用的な画像生成に成功 |
| 2021 | DDIM、Classifier-Free Guidance | サンプリング高速化、条件付け改善 |
| 2022 | Stable Diffusion (Latent Diffusion) | 潜在空間で拡散、OSS 公開 |
| 2022 | DALL·E 2、Imagen | テキスト → 画像の高品質化 |
| 2023 | SDXL、ControlNet、LoRA | 高解像度、構図制御、軽量適応 |
| 2023〜 | Consistency Models、LCM、SDXL Turbo | 1〜4 ステップで生成、リアルタイム化 |
| 2024 | SD3 / FLUX | Transformer ベースの Diffusion (DiT) |
| 2024〜 | Sora / Veo / Runway Gen-3 | 動画生成への拡張 |
Latent Diffusion(潜在拡散)
| 補足: Stable Diffusion が成功した最大の理由 |
高解像度画像(例: 1024×1024)にそのまま拡散モデルを適用すると、計算量が膨大になります。Latent Diffusion は、VAE で画像を 1/8 程度の潜在空間に圧縮してからその空間で拡散を行い、最後にデコーダで画像に戻します。
計算量を 1/64 以下に削減でき、個人 GPU でも動かせるようになったのが Stable Diffusion 革命の本質です。 |
条件付け(Classifier-Free Guidance)
テキストプロンプトに沿った画像を生成するため、条件あり予測と条件なし予測の差を強調する手法。guidance_scale(一般に 7〜10)で「プロンプトへの忠実度」を調整できます。値が大きすぎると過剰に従って画像が歪み、小さすぎるとプロンプトが無視されます。
主要モデル・サービス
| モデル | 提供形態 | 特徴 |
| Stable Diffusion 系 (SD1.5 / SDXL / SD3) | OSS | ローカル実行・派生モデル豊富 |
| FLUX (Black Forest Labs) | OSS + API | 新世代の高品質モデル |
| DALL·E 3 | SaaS (ChatGPT) | 指示忠実度・自然な文字描画 |
| Midjourney | SaaS (Discord/Web) | アート品質・統一感 |
| Adobe Firefly | SaaS | 商用安全・Photoshop 統合 |
| Imagen (Google) | SaaS (Gemini) | Google エコシステム統合 |
| Sora (OpenAI) | SaaS | 動画生成の代表 |
| Veo (Google) | SaaS | 動画生成 |
| Runway Gen-3 | SaaS | 映像制作向け |
| Stable Video Diffusion | OSS | OSS 動画生成 |
| AudioLDM / Stable Audio | OSS / SaaS | 音声・音楽生成 |
| RFDiffusion / AlphaFold (一部要素) | 研究 | タンパク質構造生成 |
派生機能(実用上重要)
| 機能 | 用途 |
| img2img | 既存画像をベースに変換 |
| inpaint / outpaint | 部分修正・周囲拡張 |
| ControlNet | 線画・ポーズ・深度マップで構図制御 |
| IP-Adapter | 参照画像の画風を反映 |
| LoRA | 軽量ファインチューニングで特定キャラ・画風を後付け |
| Textual Inversion / Embedding | 新しい概念を学習 |
| Upscaler | 解像度を引き上げる後段モデル |
| SDEdit / DDIM Inversion | 編集タスクへの応用 |
最小サンプル: Hugging Face diffusers
|
pip install diffusers transformers accelerate torch
from diffusers import StableDiffusionPipeline
import torch
pipe = StableDiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-2-1",
torch_dtype=torch.float16,
).to("cuda")
image = pipe(
"a cute robot reading a book, photorealistic, 4k",
num_inference_steps=30,
guidance_scale=7.5,
).images[0]
image.save("output.png")
|
Diffusion vs GAN vs VAE
| 観点 |
Diffusion |
GAN |
VAE |
| 画質 | 非常に高い | 高い | ぼやけがち |
| 学習の安定性 | 安定 | 不安定(モード崩壊) | 安定 |
| サンプル多様性 | 高い | 低くなりやすい | 高い |
| 推論速度 | 遅い(多段サンプリング) | 速い(1 回) | 速い |
| 条件付け | 得意(CFG / ControlNet) | 難しい | 得意 |
| 2026 年現在の位置 | 主流 | 限定的用途 | 圧縮・補助モデル |
サンプリングの高速化
| 手法 | 概要 |
| DDIM | DDPM より少ない手数で同等品質 |
| DPM-Solver / DPM-Solver++ | 10〜20 ステップで高品質 |
| Consistency Models / LCM | 1〜4 ステップで生成可能 |
| SDXL Turbo / SD3 Turbo | 蒸留で 1〜4 ステップ化 |
| Latent Diffusion | 潜在空間で計算量削減 |
| Flash Attention / TorchCompile | 低レベル最適化 |
主要ライブラリ・ツール
| ツール | 用途 |
| diffusers (Hugging Face) | Python API。プログラムから扱う標準 |
| AUTOMATIC1111 WebUI | 定番のローカル UI。プラグイン豊富 |
| ComfyUI | ノードベースの UI。ワークフロー再現性高い |
| Forge / Fooocus | 軽量・初心者向け |
| InvokeAI | 企業向け OSS UI |
| Replicate / RunPod | クラウド GPU で API 利用 |
運用上のヒント
| Tips |
- 初心者はSDXL / SD3 系 + AUTOMATIC1111 / Fooocus から始める
- VRAM 不足なら
fp16 化とtiled VAE / Latent サイズ縮小
- 負のプロンプト (Negative Prompt) で「描いてほしくない要素」を指定すると品質向上
- 同じ
seed で再現可能。試行錯誤の比較に便利
- 商用利用はモデルごとのライセンス確認必須(Stability AI / FLUX / Adobe Firefly 等で条件が違う)
- safetensors 形式のモデルを選ぶ(
.ckpt は任意コード実行リスク)
- 本番 API はReplicate / Stability API / Vertex AI で従量課金
|
注意点
| よくある落とし穴・倫理 |
- 著作権・肖像権: 実在人物・既存キャラクターを意図的に再現するモデル / LoRA は権利侵害になりうる
- 学習データの法的議論が継続中。商用利用ではリスク評価を
- NSFW・違法生成: 児童画像など違法コンテンツの生成は厳禁
- ディープフェイク悪用: 偽情報拡散・なりすましのリスク
- EU AI Act 等で出所表示・透かし義務化が進む
- サンプリング設定で大きく品質が変わる: ステップ数・スケジューラ・guidance_scale を試行錯誤
- OOM (メモリ不足): バッチサイズ・解像度・モデルサイズで容易に発生
- 動画生成は計算が桁違いに重い: 数秒動画でも数分〜数十分
|
関連