本記事はアフィリエイト広告(PR)を含みます
PCを新調してGPUも搭載したので画像生成AIを試してみたくなりました。
画像生成はクラウドなら有料で制限ありのサービスが多い中Stable Diffusionはローカル環境なら回数制限なしで利用できるようです。
導入方法もいくつかあるようですが、Pythonのライブラリもあるので今回は仮想環境を構築してStable Diffusionをインストールし、画像生成してみます。
1. Stable Diffusionとは
ステーブルディフュージョンと読みます。
ユーザーがテキストで指定した内容(プロンプト)をもとに高品質な画像を生成する画像生成AIのことです。
例えば、「猫が宇宙船に乗っている絵」といったプロンプトを与えるとそれにあった画像を自動で生成してくれます。
生成の仕組みには潜在拡散モデル(Latent Diffusion Model)という技術が使われており、まずノイズ画像を段階的に取り除いていくことで最終的なビジュアルを作り上げます。
ちなみにプロンプトは英語が推奨されているようです。
2. 環境構築
今回の導入環境はこちら。
- OS : Windows 11 Home
- GPU : NVIDIA GeForce RTX 5070 Ti
- Python:3.12 (venv)
- 実行方式:Diffusers
Diffusersは画像生成AIなどの拡散モデルをPythonで簡単に実行できるライブラリです。
Pythonはインストールについてこちらの記事でまとめています。
2.1. 仮想環境構築
今回の仮想環境はvenvを使用します。
Anacondaは便利ですが大容量なのと商用利用に課題がある(仕事に生きない可能性がある)ので、画像生成のみならまずは軽量で汎用性のあるvenv+pipで行きます。
まずは任意のフォルダで以下のコマンドを実行し、仮想環境を作成してアクティベートします。
python -m venv .venv
.venv\Scripts\activate
2.2. PyTorchインストール
次にPyTorchをインストールします。
python -m pip install torch==2.10.0 torchvision==0.25.0 --index-url https://download.pytorch.org/whl/cu130
PyTorchのインストールについてはこちらの記事でまとめています。
PyTorchのインストールが完了したら以下のコマンドでGPUが認識されるか確認します。
python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"
以下のような表示が出れば成功です。
True
NVIDIA GeForce RTX 5070 Ti
2.3. Diffusers関連インストール
次に画像生成に必要なライブラリ(Diffusers)をインストールします。
pip install diffusers transformers accelerate safetensors pillow scipy
各ライブラリの内容なこちらです。
| ライブラリ | 用途 | 意味 | 備考 |
|---|---|---|---|
| diffusers | 拡散モデル | Stable Diffusionの核 | Hugging Face製のライブラリ 画像生成パイプライン本体 |
| transformers | Transformerモデル処理 | テキストエンコーダー | プロンプト理解に必須 |
| accelerate | 推論・学習支援 | GPU/CPUおよび分散処理の制御 | デバイス管理の最適化 |
| safetensors | モデル重み読み込み | 安全、高速な重み形式 | |
| pillow | 画像処理 | 画像の読み書き | |
| scipy | 数値計算補助 | 一部の画像処理や依存関係 | 必須ではないがdiffusersの内部依存で必要な場合がある |
今回インストールしたライブラリのバージョンはこちらです。
- torch : 2.10.0+cu130
- torchvision : 0.25.0+cu130
- diffusers : 0.36.0
- transformers : 5.1.0
- accelerate : 1.12.0
- safetensors : 0.7.0
- pillow : 12.0.0
- scipy : 1.17.0
これで画像生成の準備が整いました。
3. Stable Diffusion 1.5の確認
まずは旧モデルのStable Diffusion 1.5(SD1.5)を試してみます。
2026年2月現在、公式配布元の変更によりHugging Faceから利用可能です。
今回使用するプロンプトはこちら。
猫が宇宙船に乗っている絵
3.1. サンプルコード
早速サンプルコードを書いて試してみます。
from diffusers import StableDiffusionPipeline
import torch
model_id = "runwayml/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(
model_id,
torch_dtype=torch.float16,
)
pipe = pipe.to("cuda")
pipe.enable_attention_slicing()
image = pipe(
"猫が宇宙船に乗っている絵",
num_inference_steps=25
).images[0]
image.save("sd15_test.png")
print("saved: sd15_test.png")
① ライブラリ読み込み
まずはdiffusersとPyTorchライブラリを読み込みます。
from diffusers import StableDiffusionPipeline
import torch
② 使用モデルの指定
次にモデルを指定します。
model_id = "runwayml/stable-diffusion-v1-5"
③ モデルの読み込み
次にモデルを読み込みます。
from_pretrainedはモデルをダウンロードして読み込みます。
またVRAM節約のためfloat16を指定しています。
pipe = StableDiffusionPipeline.from_pretrained(
model_id,
torch_dtype=torch.float16,
)
④ GPU転送
pipe = pipe.to("cuda")
⑤ VRAM節約設定
10%程推論速度は落ちますが、この設定を入れることでVRAMが節約できるようです。
今回は念のため入れました。
pipe.enable_attention_slicing()
⑥ 画像生成
ここで画像生成を行います。
まず日本語プロンプト「猫が宇宙船に乗っている絵」でどのぐらいのクオリティの画像が生成されるのか試してみます。
image = pipe(
"猫が宇宙船に乗っている絵",
num_inference_steps=25
).images[0]
num_inference_stepsはノイズ除去回数を表しています。
多いほど精度が上がりますが推論速度は落ちます。
一般的には20~30程度が精度と品質のバランスがいいとされているので今回は25に設定しました。
⑦ 画像保存
sd15_test.pngという名前でPNG形式で出力します。
なお、SD1.5は512×512がデフォルトです。
image.save("sd15_test.png")
3.2. 動作確認(日本語プロンプト)
生成された画像がこちら。

……逆に人間が書いたように見えるんじゃないでしょうか?
3.3. 動作確認(英語プロンプト)
先ほどの「猫が宇宙船に乗っている絵」を英語プロンプトに直して生成してみます。
なお、英語プロンプトへの変換はChatGPTを頼りました。

今回は一番上の「A cat riding inside a futuristic spaceship, highly detailed, cinematic lighting, sci-fi atmosphere, ultra realistic, 4k, masterpiece」を使用します。
なお、プロンプトに4Kと入っていますがこれは画像の品質を向上させるためのキーワードで4K画像が生成されるわけではないようです。
つまり高品質表現を狙うワードとして使用されます。
image = pipe(
"A cat riding inside a futuristic spaceship, highly detailed, cinematic lighting, sci-fi atmosphere, ultra realistic, 4k, masterpiece",
num_inference_steps=25
).images[0]
生成結果はこちらです。

一瞬「おお!」って思いましたよ。


宇宙船はリアルなのに顔やしっぽが崩れていると違和感がありますね。
4. Stable Diffusion XLの確認
Stable Diffusion XLはSD1.5より新しい世代のモデルで、解像度が512pxから1024pxに向上し描写力やプロンプト理解も改善しています。
今回はSDXL 1.0で生成してみます。
4.1. サンプルコード
モデル読み込み部分を
model_id = "stabilityai/stable-diffusion-xl-base-1.0"
に変更しました。
from diffusers import StableDiffusionXLPipeline
import torch
model_id = "stabilityai/stable-diffusion-xl-base-1.0"
pipe = StableDiffusionXLPipeline.from_pretrained(
model_id,
torch_dtype=torch.float16,
).to("cuda")
pipe.enable_attention_slicing()
image = pipe(
"猫が宇宙船に乗っている絵",
num_inference_steps=30
).images[0]
image.save("sdxl_test.png")
print("saved: sdxl_test.png")
なおSDXLはSD1.5に比べてモデル規模や解像度が高く、精度も安定するためnum_inference_steps=30とSD1.5より高い値を設定にしています。
4.2. 動作確認(日本語プロンプト)
生成された画像はこちら。

今度は水彩画タッチですね。
最初に大きい猫の顔を書いて力尽きた感じがよく出ています。
4.3. 動作確認(英語プロンプト)
最後に英語プロンプトで同様に出力してみました。

ぱっと見でもクオリティの違いが判りますね。
プロンプトの内容を忠実に再現している感じがします。
猫もリアルだし、ボケまで表現しています。
でもこういう画像はなぜかすぐAIと分かってしまうんですよね。
5. まとめ
今回はStable Diffusionをローカル環境で構築し、旧モデルと新モデルで日本語プロンプトと英語プロンプトで画像生成して比較してみました。
やはりSDXL1.0の英語プロンプトの精度が一番高く見えますが、SD1.5の日本語プロンプトで生成した画像のほうが味があって自分は好きですね。




今回は以上です。
6. 参考サイト
Stable Diffusion とは何ですか? – Amazon Web Services (AWS)
https://aws.amazon.com/jp/what-is/stable-diffusion/
Stable Diffusionとは?使う方法や活用の仕方を解説
https://www.mouse-jp.co.jp/mouselabo/entry/2025/04/07/100164
サポートされているプロンプト言語
https://kb.stability.ai/knowledge-base/supported-prompt-languages
Diffusersってなんだ? — 画像生成AIの「見えない心臓部」を理解する
https://qiita.com/GeneLab_999/items/fb76012f5988c0fdd7de
v0.3.0: New API, Stable Diffusion pipelines, low-memory inference, MPS backend, ONNX
https://github.com/huggingface/diffusers/releases/tag/v0.3.0
猫耳とdiffusersで始めるStable Diffusion入門
https://qiita.com/phyblas/items/00f750b8277f66fb9b13
【創作の常識を変える】Stable Diffusion XL(SDXL)とは?導入方法や使い方を徹底解説
https://weel.co.jp/media/innovator/stable-diffusion-xl/

-160x90.jpg)





コメント