Diffusersライブラリによる画像生成(Text2Img)
そもそもDiffusersライブラリとは?
Hugging Face が提供している、拡散モデル(Stable Diffusionなど)をPythonコードから簡単に扱えるライブラリ。
モデルの読み込み・画像生成・カスタマイズが一貫して行える。
画像生成の全体的な流れ
1. ライブラリのインストール
2. モデルの読み込み(例:Stable Diffusion XL)
3. プロンプトを使って画像生成
4. 画像の保存や表示
Step 1:インストール(初回のみ)
code:bash
pip install diffusers transformers accelerate safetensors
必要に応じて torch もインストール
code:bash
Step 2:モデルの読み込み(SDXLの例)
code:python
import torch
from diffusers import StableDiffusionXLPipeline
pipe = StableDiffusionXLPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
torch_dtype=torch.float16,
variant="fp16", # FP16モデル用
safety_checker=None
).to("cuda") # GPU使用
HuggingFaceからStabilityAIのStable diffusion XLのベースモデルを読み込んで利用している
StableDiffusionXLPipeline : diffusers ライブラリが提供する「クラス(Class)」
このクラス内でモデルの定義ができる
use_safetensors=True : モデルの重みファイルの形式として .safetensors を使う という指定
より安全に拘束に読み込みが可能
safety_checker=None:センシティブ画像の検出無効化
センシティブな画像が生成された際にモデルが真っ黒な画像を生成する機能を停止させる
diffusersを通じて使う場合は手動でダウンロードする必要なく自動的にダウンロードできるモデルがあるので、自動ダウンロードしたモデルを StableDiffusionXLPipeline.from_pretrained の第一引数で与えれば多様なベースモデルが使用可能
Step 3:画像生成(テキストから画像)
code:python.py
prompt = "A fantasy landscape, sunset, ultra realistic, 8K"
negative_prompt = "low quality, blurry, deformed"
image = pipe(
prompt=prompt,
negative_prompt=negative_prompt,
num_inference_steps=30,
guidance_scale=7.5,
height=1024,
width=1024
prompt: 生成したい画像の内容を自然言語で指定
negative_prompt: 含めたくない要素を明示(品質向上に役立つ)
guidance_scale: プロンプトの反映強度(通常 7〜8.5)
num_inference_steps: 処理ステップ(多いほど精度↑/処理時間↑)
Step 4:画像の保存
code:python
image.save("generated_image.png")
注意点
SDXLモデルを使うにはVRAM 12GB以上推奨
プロンプトが具体的であればあるほど、意図通りの画像が出やすい
マシンスペックに応じて torch_dtype=torch.float32 でも動作可能