Stable Diffusionとは
Stability AIが公開した、オープンウェイトの拡散モデルベースによるテキストから画像を生成するモデル
ひとことで言うと
文章から画像を作る、誰でも重みをダウンロードして使えるオープンな画像生成AI。
概要
Stable Diffusionは、Stability AIが中心となって開発・公開した、テキストの説明文から画像を生成する拡散モデルベースの画像生成AIで、モデルの重みが公開されているオープンウェイトモデルである点が大きな特徴。 画素空間ではなく、より低次元に圧縮された潜在空間上でノイズ除去の拡散過程を進めるLatent Diffusion Modelという設計を採用しており、DALL-E 2など画素空間で直接拡散するモデルと比べて計算コストを抑えつつ高解像度の画像を生成できる。 モデルの重みが公開されているため、個人のPCやオンプレミス環境で実行したり、独自のデータで追加学習(ファインチューニング)したりでき、多数の派生モデルやツール(ControlNet、LoRAアダプタなど)がコミュニティによって開発されている。 テキストから画像だけでなく、画像から画像への変換(img2img)やインペインティング(部分修正)など、幅広い画像生成・編集用途に応用されている。
背景
DALL-E 2など初期の高品質な画像生成AIの多くはクローズドなAPI経由でのみ利用可能で、モデルの重みも非公開だった。 Stable Diffusionは、画像生成モデルの重みを公開することで、個人や企業が自由に実行・改変・商用利用できるオープンなエコシステムを作る目的で開発された。
歴史
2022年: Stability AI、CompVis、Runwayの共同研究としてStable Diffusionが公開される。 2022年: バージョン2系列が発表され、解像度と品質が向上。 2023-2024年: SDXL、Stable Diffusion 3など、アーキテクチャを改良した後継モデルが登場。
アーキテクチャ
テキストエンコーダがプロンプトを埋め込みベクトルへ変換し、画像はVAE(変分オートエンコーダ)のエンコーダによって低次元の潜在空間へ圧縮される。 この潜在空間上でU-Net構造のネットワークが、テキスト埋め込みを条件としながらノイズ除去の拡散過程を繰り返し、画像の潜在表現を生成する。 最終的に、VAEのデコーダが潜在表現を画素空間の画像へ変換して出力する。
ワークフロー
テキストプロンプトをテキストエンコーダで埋め込みベクトルに変換する。 ランダムなノイズを潜在空間上に生成し、テキスト埋め込みを条件としながらU-Netがステップごとにノイズを予測してそれを差し引く処理を、数十ステップ程度繰り返して潜在表現を徐々に洗練させる。 最終的に得られた潜在表現をVAEのデコーダで画素空間の画像へ変換し、出力する。
コード例
diffusersでの画像生成
from diffusers import StableDiffusionPipeline
import torch
pipe = StableDiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-2", torch_dtype=torch.float16
).to("cuda")
image = pipe("a photo of a cat wearing sunglasses").images[0]
image.save("output.png")利点
- モデルの重みが公開されており、ローカル環境での実行や独自データでの追加学習が可能
- 潜在空間上で拡散過程を行うため、画素空間で直接処理するモデルより計算コストを抑えられる
- ControlNetやLoRAなど、コミュニティによる拡張・派生ツールが豊富に存在する
欠点
- モデルが公開されているため、著作権侵害や実在人物の偽画像など、有害な用途に悪用されるリスクがある
- 手や指など細部の描写が不自然になりやすいという、拡散モデル一般に共通する弱点を抱える
- 高品質な画像を生成するには、プロンプトの工夫や追加のファインチューニングなど、ある程度の習熟が必要になる
比較
関連用語
よくある質問
Stable DiffusionとDALL-Eの違いは?
DALL-EはOpenAIが提供するクローズドなAPI経由のサービスであるのに対し、Stable Diffusionはモデルの重みが公開されており、ローカル環境で実行・改変できる点が大きく異なる。