Stable Diffusion
Stable Diffusionは、Stability AIが提供するオープンウェイトの潜在拡散モデル群であり、一般向けGPU上でテキストプロンプトから画像を生成、編集できます。
Stable Diffusionは、Stability AIが提供するオープンウェイトのテキスト画像生成モデル群で、自然言語のプロンプトから画像を生成・編集します。2022年8月に公開された最初のバージョンは、LMU MunichのCompVisグループおよびRunwayとの共同開発によるもので、LAION-5Bデータセットのサブセットに含まれる512×512画像に、彼らの潜在拡散研究を適用しました。8億6,000万パラメータのU-Netと1億2,300万パラメータのテキストエンコーダーは、少なくとも10 GBのメモリを搭載したコンシューマー向けGPUで動作しました。誰でも重みをダウンロードできたため、多数のファインチューニング済みモデル、アダプター、編集ツールからなる大規模なエコシステムの基盤になりました。2024年10月に公開された最新リリースのStable Diffusion 3.5では、U-Netを整流フローで学習したマルチモーダルな拡散Transformerに置き換えています。
Stable Diffusionの仕組み#
Stable Diffusionは、画素ではなく圧縮画像のノイズを除去する拡散モデルで、3つのネットワークを使用します。
- 変分オートエンコーダー(VAE):エンコーダーは512×512×3の画像を64×64×4の潜在表現に圧縮し、値の数を48分の1にします。デコーダーは完成した潜在表現を画像に戻します。ノイズ除去はすべて小さな潜在表現上で行われるため、モデルをコンシューマー向けハードウェアで実行できます。
- テキストエンコーダー:最大77トークンのプロンプトを埋め込みに変換します。Stable Diffusion 1.xはOpenAIのCLIP ViT-L/14を使用し、2.xはOpenCLIP ViT-H/14を使用します。SDXLは2つのCLIPエンコーダーを組み合わせ、Stable Diffusion 3はプロンプトの理解を向上させるため、2つのCLIPエンコーダーにT5-XXL言語モデルを追加しています。
- ノイズ除去ネットワーク:各ステップで除去するノイズを予測します。バージョン1.x、2.x、SDXLはU-Netを使用します。そのクロスアテンション層により、画像特徴がテキスト埋め込みに注意を向けます。バージョン3と3.5は、画像トークンとテキストトークンをまとめて処理するMMDiTを使用します。
生成はランダムな64×64×4の潜在表現から始まります。スケジューラーは通常、ノイズ除去ネットワークを20~50ステップ実行し、各ステップで予測ノイズの一部を除去します。Classifier-free guidanceによってプロンプトの影響を強めます。その後、VAEデコーダーが画像を生成します。
開始時の潜在表現はランダムであるため、同じプロンプトでもシードを変えると異なる画像になり、シードと設定を同じにすると結果を再現できます。
モデルのバージョン#
- Stable Diffusion 1.x(2022年):8億6,000万パラメータのU-Netによる512×512画像の生成に対応します。バージョン1.5はコミュニティのファインチューニングに広く使われる基盤となり、ControlNetの論文もこれを基にしています。重みにはCreativeML OpenRAIL-Mライセンスが適用されます。
- Stable Diffusion 2.x(2022年後半):テキストエンコーダーをOpenCLIPに切り替え、768×768モデルを追加しました。
- SDXL(2023年7月):約26億パラメータのU-Netと2つのテキストエンコーダーにより、ネイティブ解像度1024×1024での生成に対応します。同年11月に公開されたSDXL Turboは、敵対的拡散蒸留を使って1ステップで画像を生成します。
- Stable Diffusion 3および3.5(2024年):U-Netを、画像トークンとテキストトークンに個別の重みを持つ整流フローTransformerに置き換えています。Stable Diffusion 3.5 Largeは81億パラメータ、3.5 Mediumは25億パラメータです。Stability AI Community Licenseでは、年間収益が100万ドル未満の組織に商用利用を無料で認めています。
Stable Diffusionによる画像編集#
- 画像から画像への変換:既存の画像をエンコードし、強度の値で指定した中間ステップまでノイズを加え、新しいプロンプトを使ってノイズを除去します。その結果、スタイルや内容を変更しながら、元のレイアウトや色を保てます。
- ファインチューニング:DreamBoothとLoRAは、数十枚の画像から新しい被写体やスタイルにモデルを適応させます。ControlNetは、エッジ、深度、ポーズのマップを構造条件として追加します。
- 画像インペインティング:マスクされた領域だけを再生成し、プロンプトと周囲の画像に合うようにします。Stable Diffusionのインペインティング用チェックポイントでは、U-Netに5つの入力チャネルが追加されます。そのうち4つはマスクされた画像のエンコード用、残る1つはマスク自体用です。
インペインティング用マスクでは、画像を変更する領域を白、保持する領域を黒で示します。Ultralytics YOLO26のインスタンスセグメンテーションモデルは、このようなマスクを自動生成します。たとえば、街路写真に写った特定クラスの車両をすべて置き換えたり削除したりできます。
import cv2
from ultralytics import YOLO
# YOLO26のインスタンスセグメンテーションモデルでバス(COCOクラス5)をセグメント化します
model = YOLO("yolo26n-seg.pt")
results = model("https://ultralytics.com/images/bus.jpg", classes=[5], retina_masks=True)
result = results[0]
# 白はStable Diffusionが塗り直す画素、黒はそのまま保持する画素を示します
mask = (result.masks.data.sum(dim=0) > 0).cpu().numpy().astype("uint8") * 255
cv2.imwrite("bus_inpaint_mask.png", mask)保存されたbus_inpaint_mask.pngは写真と同じフル解像度です。これはretina_masks=Trueが元画像のサイズでマスクを返すためです。写真とこのマスク、および「赤い二階建てバス」のようなプロンプトを使うと、インペインティングパイプラインがバスを再生成し、周囲の街路をそのまま保ちます。
実際のアプリケーション#
- ビジョンモデル向けの合成データ:チームは、学習データセットの不足を補うため、まれな欠陥、珍しい天候、一般的でない視点の画像を生成し、インペインティングを使って実際の背景に新しい物体を配置します。
- コンセプトアートとデザイン:ゲームスタジオ、建築家、プロダクトデザイナーは、初期のコンセプト制作でさまざまなスタイルや構図を数分で検討できます。
- マーケティングとEC向け画像:画像から画像への変換やControlNetを使うと、プロンプトで環境、照明、背景を変えながら、商品の形状を維持できます。
Stable Diffusionと関連モデルの比較#
- 潜在拡散モデル:Stable Diffusionは潜在拡散アーキテクチャの最もよく知られた実装であるため、すべてのStable Diffusionモデルは潜在拡散モデルです。
- GAN:1回の順伝播で画像を生成しますが、学習が不安定になりやすく、多様性も限られます。Stable Diffusionは、SDXL Turboのように蒸留しない限り、多くのノイズ除去ステップを必要とします。
- クローズド型生成モデル:OpenAIの画像モデルやMidjourneyなどのサービスは、プロバイダーのサーバー上でのみ動作します。Stable Diffusionの重みはダウンロードでき、オフラインで実行・検査・ファインチューニングできます。
- FLUX.1:Robin Rombach、Andreas Blattmann、Patrick Esserなど、元の潜在拡散論文を手がけた研究者が2024年に設立したBlack Forest Labsは、Stable Diffusion 3と同じ整流フローTransformer方式を採用した120億パラメータのFLUX.1シリーズを公開しました。










