PythonでStable Diffusionを使う方法|画像生成AIの導入から応用まで徹底解説

プログラミング
記事内に広告が含まれています。
スポンサーリンク

Stable Diffusionとは?

Stable Diffusionは、テキスト(プロンプト)を入力すると、それに基づいた画像を生成するAIモデルです。オープンソースとして公開されており、誰でも自由に使うことができます。

近年、AIによる画像生成技術は急速に進化しており、DALL·E(OpenAI)やMidjourneyといった有名なサービスも登場しました。その中でもStable Diffusionは、ローカル環境で動作させることができ、カスタマイズ性が高いという特徴があります。

brian
brian

Pythonを使って、テキストから画像を生成するAIモデル『Stable Diffusion』を試してみませんか?​このガイドでは、Stable Diffusionの基本から、Python環境での導入方法、画像生成の手順、さらには高度な応用テクニックまでを初心者向けにわかりやすく解説しています。​AIによる画像生成に興味がある方は、ぜひチェックしてみてください!

Stable Diffusionの特徴

Stable Diffusionには、以下のようなメリットがあります。

  • オープンソース:無料で利用でき、モデルの改変やカスタマイズも可能
  • ローカル環境で動作:インターネット接続がなくても使用可能
  • 高品質な画像生成:テキストからリアルな画像やアートを作成できる
  • 拡張性が高い:追加の学習(LoRA)、画像編集(img2img)、ポーズ制御(ControlNet)などの機能も利用可能

特に、ローカル環境での動作は、プライバシーの観点からも大きな利点です。クラウドサービスを利用する場合、入力したテキストや生成された画像がサーバーに保存されることがありますが、Stable Diffusionなら自分のPCで処理できるため、データの管理がしやすくなります。

どのような用途で使えるのか?

Stable Diffusionは、さまざまな用途で活用されています。

  • イラスト・アート制作:クリエイターがインスピレーションを得るために使用
  • コンセプトデザイン:ゲームや映画のビジュアルコンセプト作成
  • 商品デザイン:広告用の画像やサンプルデザイン作成
  • 学習・研究:AIの仕組みを学ぶ教材としても利用可能

ただし、Google AdSenseのポリシーに準拠するため、著作権を侵害する画像の生成や、不適切なコンテンツの作成には注意が必要です。

スポンサーリンク

PythonでStable Diffusionを実行する方法

Stable Diffusionは、Python環境で実行できます。ローカルPCでも動かせるため、クラウドサービスを使わずに自分の環境で画像を生成できます。ここでは、Pythonを使ってStable Diffusionを動作させる手順を解説します。

必要な環境と準備

Stable Diffusionをスムーズに動作させるには、一定以上のスペックを持つPC が必要です。特に、NVIDIA製のGPU(CUDA対応) があると、処理速度が大幅に向上します。

推奨スペック

項目推奨スペック
OSWindows / macOS / Linux
GPUVRAM 8GB以上(最低6GB)
CPU4コア以上
RAM16GB以上(最低8GB)
ストレージ10GB以上の空き容量

GPUがない場合でもCPUで動作させることは可能ですが、画像生成に時間がかかる 点に注意してください。

必要なライブラリのインストール

PythonでStable Diffusionを動かすために、以下のライブラリをインストールします。

Python環境の準備

まず、Pythonがインストールされていない場合は、公式サイト から Python 3.8以上 をダウンロード・インストールしてください。
また、仮想環境を作成すると、他のプロジェクトと干渉せずに管理できます。

Bash
python -m venv sd_env
source sd_env/bin/activate  # Mac/Linux
sd_env\Scripts\activate  # Windows

必要なライブラリのインストール

次に、Stable Diffusionを動作させるためのライブラリをインストールします。

Bash
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install diffusers transformers accelerate scipy pillow
pip install safetensors
  • torch / torchvision / torchaudio:PyTorch(機械学習フレームワーク)
  • diffusers:Stable Diffusionを扱うライブラリ
  • transformers:テキスト処理用のライブラリ
  • accelerate:モデルの最適化をサポート
  • scipy / pillow / safetensors:画像処理用のライブラリ

これで、Python環境の準備が整いました。

Stable Diffusionのモデルをダウンロード

Stable Diffusionのモデルは、Hugging Face というプラットフォームから取得できます。ただし、一部のモデルは 利用規約に同意しないとダウンロードできない ため、事前に手続きが必要です。

Hugging Faceのアカウント作成

  1. Hugging Faceの公式サイト にアクセス
  2. 右上の「Sign Up」ボタン をクリック
  3. ユーザー名、メールアドレス、パスワード を入力し、「Sign Up」をクリック
  4. 登録したメールアドレスに届いた認証メールのリンクをクリック

Stable Diffusionのモデルページにアクセス

  1. Stable Diffusion v1.5 のページ にアクセス
  2. 「This model is licensed under a CreativeML Open RAIL-M license」というライセンス表記を確認
  3. 「Access repository」ボタン をクリック(ログインが必要)

利用規約に同意する

  1. 「I have read the terms and conditions」 にチェックを入れる
  2. 「Access repository」ボタン をクリック

これで、モデルのダウンロード権限が付与されます。

Pythonコードでモデルをダウンロード

以下のPythonコードを実行すると、モデルが自動でダウンロード されます。

Python
from diffusers import StableDiffusionPipeline
import torch

# モデルの指定
model_id = "runwayml/stable-diffusion-v1-5"

# モデルのロード(初回実行時に自動でダウンロード)
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
pipe.to("cuda")  # GPUを使う場合(CPUなら "cpu" に変更)

print("モデルのダウンロードが完了しました!")

初回実行時に、約 4GB のモデルファイルがダウンロードされ、以下のフォルダに保存されます。

  • WindowsC:\Users\ユーザー名\.cache\huggingface\hub
  • macOS/Linux~/.cache/huggingface/hub

手動でモデルをダウンロードする方法(オプション)

  1. モデルのリポジトリページ にアクセス
  2. 「Files and versions」タブ を開く
  3. diffusion_pytorch_model.safetensors(モデルファイル)をクリックしてダウンロード
  4. stable-diffusion-v1-5 というフォルダを作成し、その中に保存

手動ダウンロードしたモデルをPythonコードで指定する場合は、以下のようにします。

Python
model_path = "path/to/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_path, torch_dtype=torch.float16)

Hugging Faceのトークン認証が必要な場合

一部のモデルは、Hugging Faceのアクセストークン(Access Token) が必要です。
以下の手順で取得・設定できます。

  1. Hugging Faceのアカウント設定ページ にアクセス
  2. 「New Token」ボタン をクリック
  3. 名前を入力(例:sd-token)、権限は「Read」
  4. 発行されたトークンをコピーし、以下のコマンドを実行
Bash
huggingface-cli login
  1. プロンプトにトークンを貼り付けてEnterキーを押す

これを設定すると、Pythonコードで use_auth_token=True を指定できます。

Python
pipe = StableDiffusionPipeline.from_pretrained(model_id, use_auth_token=True, torch_dtype=torch.float16)

ここまでのまとめ

✅ Pythonと必要なライブラリをインストールした
✅ Hugging FaceからStable Diffusionのモデルを取得した
✅ Pythonコードでモデルをロードできる状態になった

スポンサーリンク

Pythonコードで画像を生成する

ここでは、Pythonを使ってStable Diffusionで画像を生成する方法を解説します。実際にコードを書いて動作を確認しながら、どのようにプロンプト(指示文)を指定し、画像を作成するのかを見ていきましょう。

画像を生成する基本コード

まずは、シンプルなコードでテキスト(プロンプト)から画像を生成してみます。

Python
from diffusers import StableDiffusionPipeline
import torch

# モデルの指定(バージョン1.5を使用)
model_id = "runwayml/stable-diffusion-v1-5"

# パイプラインのロード
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
pipe.to("cuda")  # GPUがない場合は .to("cpu")

# プロンプトの設定(生成したい画像の説明)
prompt = "a beautiful landscape with mountains and a river, sunset, high quality, detailed"

# 画像を生成
image = pipe(prompt).images[0]

# 画像を保存・表示
image.save("output.png")
image.show()

コードの解説

  1. モデルのロード
    StableDiffusionPipeline.from_pretrained() を使ってモデルをロードします。
    • torch_dtype=torch.float16 は、メモリ使用量を抑えるために16bit精度で処理する設定
    • .to("cuda") はGPUを使用する設定(CPUの場合は .to("cpu")
  2. プロンプトの指定
    生成したい画像の内容を prompt 変数に指定します。英語で入力すると、より良い結果が得られます。
  3. 画像の生成
    pipe(prompt).images[0] で画像を生成し、最初の画像を取得します。
  4. 画像の保存・表示
    image.save("output.png") で画像を保存し、image.show() で表示します。

生成結果の例

例えば、以下のプロンプトを指定すると、次のような画像が生成されます。

プロンプト

TeX
a futuristic city skyline at night, cyberpunk style, neon lights, highly detailed

生成される画像(イメージ)

✨ 近未来的な都市の夜景、ネオンライトが輝くサイバーパンク風の画像

画像の解像度を変更する

デフォルトでは512×512ピクセルの画像が生成されますが、解像度を変更したい場合は height と width を指定できます。

Python
image = pipe(prompt, height=768, width=768).images[0]

ただし、高解像度にすると処理時間とメモリ使用量が増えるため、GPUのVRAM容量に注意しましょう。

ここまでのまとめ

✅ PythonでStable Diffusionを実行し、プロンプトから画像を生成できた
✅ 画像の解像度をカスタマイズできる
✅ プロンプトを工夫すると、さまざまなスタイルの画像が作れる

スポンサーリンク

応用編:カスタマイズと高度な使い方

Stable Diffusionは、基本的な画像生成だけでなく、さまざまなカスタマイズが可能です。ここでは、より高度な使い方として、解像度の調整、ネガティブプロンプトの活用、既存の画像を編集する img2img、追加学習(LoRA)、ポーズ制御(ControlNet) などのテクニックを紹介します。

画像サイズや解像度の調整

Stable Diffusionはデフォルトで 512×512ピクセル の画像を生成しますが、より大きな画像を作ることもできます。ただし、VRAM使用量が増えるため注意が必要です。

解像度を変更するコード

Python
image = pipe(prompt, height=768, width=768).images[0]

VRAMが少ない環境では、512×768 や 768×512 などのサイズで試すのがおすすめです。

ネガティブプロンプトの活用

ネガティブプロンプトを使うと、画像から 不要な要素を排除 できます。例えば、「ノイズが多い」「ぼやけている」「奇妙な手や顔になってしまう」といった問題を抑えることができます。

ネガティブプロンプトを指定する

Python
image = pipe(prompt, negative_prompt="blurry, low quality, distorted face").images[0]

例:

  • blurry(ぼやけた)
  • low quality(低品質)
  • distorted face(歪んだ顔)

このような単語を入れることで、より鮮明な画像を生成しやすくなります。

既存の画像を編集する(img2img)

Stable Diffusionには img2img(画像から画像を生成) 機能があり、既存の画像を加工したり、スケッチをもとに詳細なイラストを作成したりできます。

img2imgの使い方

Python
from diffusers import StableDiffusionImg2ImgPipeline
from PIL import Image
import torch

# モデルのロード
model_id = "runwayml/stable-diffusion-v1-5"
pipe = StableDiffusionImg2ImgPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
pipe.to("cuda")

# 既存の画像を読み込む
init_image = Image.open("input.jpg").convert("RGB").resize((512, 512))

# プロンプトとともに画像を変換
prompt = "a fantasy castle, high quality, highly detailed"
image = pipe(prompt, image=init_image, strength=0.5).images[0]

# 画像を保存・表示
image.save("output.png")
image.show()

strength パラメータの調整

  • strength=0.5 → 元の画像を50%程度残しつつ変化を加える
  • strength=0.8 → より大きく変化(元画像の要素が少なくなる)
  • strength=0.2 → 元の画像をほぼ維持

これを活用すれば、写真をイラスト風に変換 したり、線画を完成した絵に変換 したりできます。

LoRAやControlNetを活用した高品質画像生成

LoRA(追加学習モデル)

LoRA(Low-Rank Adaptation)は、Stable Diffusionに 特定のスタイルやキャラクターを学習させる技術 です。Hugging FaceやCivitAIなどで公開されているLoRAモデルを導入することで、特定のアートスタイルや人物の特徴を再現しやすくなります。

LoRAの導入方法(例)

Python
from diffusers import StableDiffusionPipeline

model_id = "runwayml/stable-diffusion-v1-5"
lora_model = "path_to_lora_model"

pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
pipe.load_lora_weights(lora_model)
pipe.to("cuda")

prompt = "a cinematic portrait of a woman, highly detailed"
image = pipe(prompt).images[0]
image.show()

これにより、アニメ風や特定の画風の画像を簡単に生成できるようになります。

ControlNet(ポーズや構図の制御)

ControlNetを使うと、人物のポーズや構図を指定 して画像を生成できます。これにより、自然な姿勢や特定のポーズをとったキャラクターを作りやすくなります。

ControlNetを使うには、追加のライブラリが必要です。

Bash
pip install controlnet_aux

このような拡張機能を活用すれば、より自由度の高い画像生成が可能になります。

ここまでのまとめ

✅ 解像度を調整して、より大きな画像を生成できる
✅ ネガティブプロンプトを使うと、不要な要素を除去できる
✅ img2imgを使えば、既存の画像を加工・変換できる
✅ LoRAやControlNetを活用すれば、高度なカスタマイズが可能

Stable Diffusionは、工夫次第で よりクオリティの高い画像 を作成できます。

スポンサーリンク

まとめ

この記事では、Pythonを使ってStable Diffusionで画像を生成する方法 を解説しました。基本的な使い方から、応用的なカスタマイズまで幅広く紹介しましたが、ポイントを振り返ってみましょう。

この記事で学んだこと

  1. Stable Diffusionとは?
    • テキストから画像を生成するAIモデルで、オープンソースとして提供されている
    • ローカル環境でも動作可能で、カスタマイズ性が高い
  2. Pythonでの導入方法
    • 必要なライブラリ(diffuserstorch など)をインストール
    • Hugging Faceからモデルをダウンロード
    • 簡単なPythonコードで画像を生成
  3. 画像生成のテクニック
    • プロンプトの工夫 によって、生成される画像のクオリティを向上
    • ネガティブプロンプト を使って不要な要素を除去
    • 解像度の調整 で、より大きな画像を作成
  4. 応用的なカスタマイズ
    • img2img を使って、既存の画像を変換
    • LoRAやControlNet を活用して、スタイルやポーズを制御

今後の展望

Stable Diffusionは今後も進化を続けており、より高品質な画像を生成できるようになっています。特に、最新バージョンではよりリアルな表現や高速な処理 が可能になっており、今後もAI技術の発展とともに、より便利なツールとして活用できるでしょう。

また、AI画像生成を使う際には、著作権や利用規約 に注意することも重要です。商用利用する場合は、モデルのライセンスや使用制限を確認するようにしましょう。

さいごに

Stable Diffusionを活用すれば、クリエイターや開発者でなくても簡単に画像生成が可能 です。Pythonを使えば、より細かいカスタマイズができるので、ぜひ色々なプロンプトや設定を試して、自分だけの理想の画像を作ってみてください!

brian
brian

ここまで読んでいただきありがとうございます!

UdemyのPythonコースにはオンラインで学習ができる動画コンテンツがたくさんあります。

当ブログのような文章メインの説明では足りない箇所を補えると思うので、もっと詳しく勉強したいという方はぜひチェックしてみてください!

コメント

タイトルとURLをコピーしました