以下の内容はhttps://cysec148.hatenablog.com/entry/2025/04/08/163156より取得しました。


第31回:Hugging Faceを使ったStable Diffusionの実行方法

Hello there, ('ω')ノ

🧠 はじめに:Hugging Faceとは?

Hugging Face とは、
自然言語処理(NLP)、画像生成、AIモデルの公開・共有 を目的とした
オープンソースプラットフォーム です。

主な機能:
- Transformers: NLPモデルの提供・推論
- Diffusers: 画像生成・拡散モデルの実行
- Datasets: 大規模データセットの利用・管理
- Spaces: Webアプリのホスティング・デプロイ

Stable Diffusionのサポート:
- Hugging Face Diffusers ライブラリ を使用して
- Stable Diffusionのモデルを簡単に実行

応用分野:
- テキストから画像生成(Text-to-Image Generation)
- インペインティング(Inpainting:画像補完)
- アウトペインティング(Outpainting:画像拡張)
- 画像編集・スタイル変換


📚 1. Hugging FaceとStable Diffusionの基本概念


🎨 ① Hugging Face Diffusersとは?

Hugging Face Diffusers は、
拡散モデル(Diffusion Models) を簡単に実装・推論するための
Pythonライブラリ です。

主な機能:
- Stable Diffusionの実装・推論
- 拡散モデルのトレーニング・ファインチューニング
- 画像生成・編集(Inpainting, Outpainting)

サポートされているモデル:
- Stable Diffusion(v1.4, v1.5, v2.0, v2.1)
- Stable Diffusion XL(SDXL)
- ControlNet・Inpainting・Loraなどの拡張モデル


📚 ② Stable Diffusionの仕組み

Stable Diffusion は、
拡散モデル(DDPM:Denoising Diffusion Probabilistic Models) をベースに、
CLIPテキストエンコーダVAEデコーダ を組み合わせて
テキストプロンプトから画像生成 します。


🎯 【Stable Diffusionのアーキテクチャ】

[テキストプロンプト] → [CLIPエンコーダ] → [潜在空間 z] → [逆拡散 U-Net] → [生成画像 x]

1. CLIPエンコーダ: テキストを潜在空間にエンコード
2. 拡散モデル(U-Net): ノイズを除去して画像生成
3. VAEデコーダ: 潜在空間から高解像度画像に変換


📚 ③ Hugging FaceでのStable Diffusionの主なモデル

モデル 説明 リンク
v1.4 / v1.5 初期のStable Diffusionモデル CompVis/stable-diffusion-v1-4
v2.0 / v2.1 高精度バージョン stabilityai/stable-diffusion-2-1
SDXL(v1.0) 高解像度の画像生成が可能 stabilityai/stable-diffusion-xl-base
Inpaintingモデル 画像補完・修正用のモデル runwayml/stable-diffusion-inpainting
ControlNet 画像制御・構造ガイド付きの生成 lllyasviel/control_v11p_sd15_canny

最新モデル(SDXL v1.0)は高解像度の画像生成に対応!


🚀 2. Hugging FaceでStable Diffusionのセットアップ


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

まず、Hugging Faceの diffusers ライブラリをインストールします。

# 必須ライブラリのインストール
pip install diffusers transformers torch torchvision numpy pillow matplotlib

環境構築完了!


📚 ② Hugging FaceのAPIトークンの取得

Hugging Face で Stable Diffusionのモデルを使用 するには、
APIトークン(Access Token) が必要です。

APIトークンの取得手順:

  1. Hugging Face公式サイト にアクセス
  2. アカウントを作成(Google・GitHubでも可)
  3. ProfileSettingsAccess Tokens に移動
  4. New Token をクリックしてトークンを生成
  5. トークンをコピーして使用

📚 ③ Hugging Face CLIでログイン

# Hugging Face CLIでログイン
huggingface-cli login

APIトークンを入力してログイン完了!


🎨 3. Hugging FaceでStable Diffusionの実行方法


📚 ① Stable Diffusion v1.4/v1.5の実行

from diffusers import StableDiffusionPipeline
import torch

# モデルの読み込み
model_id = "CompVis/stable-diffusion-v1-4"  # v1.5の場合: "runwayml/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id)
pipe = pipe.to("cuda")  # GPUでの実行

# テキストプロンプトの設定
prompt = "A fantasy landscape with mountains and castles, 4K resolution"

# 画像生成の実行
generated_image = pipe(prompt, guidance_scale=7.5).images[0]

# 画像の保存
generated_image.save("generated_image_v1_4.png")

# 画像の表示
generated_image.show()

v1.4 / v1.5モデルで高品質な画像生成が成功!


📚 ② Stable Diffusion 2.1の実行

# v2.1モデルの読み込み
model_id = "stabilityai/stable-diffusion-2-1"
pipe = StableDiffusionPipeline.from_pretrained(model_id)
pipe = pipe.to("cuda")

# プロンプトの変更
prompt = "A cyberpunk city at night, high resolution, realistic"

# 画像生成
generated_image_v2_1 = pipe(prompt, guidance_scale=7.5).images[0]
generated_image_v2_1.save("generated_image_v2_1.png")
generated_image_v2_1.show()

v2.1モデルでリアルなサイバーパンク都市の生成が完了!


📚 ③ Stable Diffusion XL(SDXL)の実行

# SDXL(Stable Diffusion XL)の読み込み
model_id = "stabilityai/stable-diffusion-xl-base-1.0"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
pipe = pipe.to("cuda")

# 高解像度画像のプロンプト
prompt = "A cinematic portrait of a futuristic warrior, ultra high resolution, 8K"

# SDXLで画像生成
generated_image_sdxl = pipe(prompt, guidance_scale=7.5).images[0]
generated_image_sdxl.save("generated_image_sdxl.png")
generated_image_sdxl.show()

SDXLで8K解像度の画像生成が成功!


🎨 4. 画像編集・補完(Inpainting)の実行


📚 ① Inpainting(インペインティング)のセットアップ

from diffusers import StableDiffusionInpaintPipeline
from PIL import Image

# Inpaintingモデルの読み込み
inpaint_model_id = "runwayml/stable-diffusion-inpainting"
inpaint_pipe = StableDiffusionInpaintPipeline.from_pretrained(inpaint_model_id)
inpaint_pipe = inpaint_pipe.to("cuda")

# 画像とマスクの読み込み
init_image = Image.open("input_image.png").convert("RGB")
mask_image = Image.open("mask_image.png").convert("RGB")

# Inpaintingの実行
inpaint_result = inpaint_pipe(prompt="a beautiful sunset beach", 
                               image=init_image, 
                               mask_image=mask_image, 
                               guidance_scale=7.5).images[0]

# 結果の保存
inpaint_result.save("inpainted_image.png")
inpaint_result.show()

画像補完(Inpainting)が成功しました!


📚 ② Outpainting(アウトペインティング)の実行

from diffusers import StableDiffusionInpaintPipeline

# Outpaintingモデルの読み込み
outpaint_model_id = "stabilityai/stable-diffusion-2-inpainting"
outpaint_pipe = StableDiffusionInpaintPipeline.from_pretrained(outpaint_model_id)
outpaint_pipe = outpaint_pipe.to("cuda")

# 拡張する画像とマスクの読み込み
init_image = Image.open("original_image.png").convert("RGB")
mask_image = Image.open("expand_mask.png").convert("RGB")

# アウトペインティング(画像拡張)の実行
outpaint_result = outpaint_pipe(prompt="a serene ocean with extended horizon", 
                                 image=init_image, 
                                 mask_image=mask_image, 
                                 guidance_scale=7.5).images[0]

# 結果の保存
outpaint_result.save("outpainted_image.png")
outpaint_result.show()

画像の外側を拡張してアウトペインティングが成功しました!


📚 5. 高度な応用:ControlNetの活用


🎨 ① ControlNetとは?

ControlNet とは、
画像制御と構造ガイド付きのStable Diffusion拡張モデル です。

主な機能:
- スケッチ・ポーズ・深度情報から画像生成
- 画像生成の構造を詳細に制御


📚 ② ControlNetのセットアップ

from diffusers import StableDiffusionControlNetPipeline, ControlNetModel
import torch

# ControlNetモデルの読み込み(

Canny Edge検出用)
controlnet_model_id = "lllyasviel/control_v11p_sd15_canny"
controlnet = ControlNetModel.from_pretrained(controlnet_model_id)

# ControlNetパイプラインの初期化
pipe = StableDiffusionControlNetPipeline.from_pretrained(
    "runwayml/stable-diffusion-v1-5",
    controlnet=controlnet,
    torch_dtype=torch.float16
)
pipe.to("cuda")

# 画像生成の実行
prompt = "A fantasy castle, highly detailed, photorealistic"
generated_image_controlnet = pipe(prompt, guidance_scale=7.5).images[0]

# 結果の保存
generated_image_controlnet.save("generated_image_controlnet.png")
generated_image_controlnet.show()

ControlNetでスケッチから画像生成が成功しました!


📚 6. Hugging FaceでStable Diffusionの活用ユースケース


🎯 ① テキストから画像生成(Text-to-Image Generation)

応用:
- テキストプロンプトから高品質な画像生成
- 広告・デジタルアート・キャラクターデザイン

ユースケース:
- マーケティング用コンテンツの生成
- 映像制作・ゲーム背景の自動生成


🎨 ② インペインティング(画像補完)

応用:
- 画像の欠損部分を補完・修正
- 背景の修正や不要物の削除

ユースケース:
- 写真の補正、映像修復、SNS画像の編集


📚 ③ アウトペインティング(画像拡張)

応用:
- 画像の外側を拡張・追加生成
- パノラマ・背景の拡張

ユースケース:
- 映画・ゲームの背景生成、VR/AR体験の強化


📚 ④ ControlNetによる構造ガイド付き生成

応用:
- スケッチ・ポーズ情報から画像生成
- ポーズ・姿勢情報の自動補完

ユースケース:
- アニメーション制作、ファッションデザイン、3Dモデリング


🎁 まとめ:Hugging FaceでStable Diffusionの実行をマスターしよう!

Hugging FaceのDiffusersライブラリでStable Diffusionの実行・応用が容易に可能。
テキストから画像生成、画像補完・拡張、ControlNetでの構造制御など、多彩な応用が実現可能。
PyTorchをベースにしたStable Diffusionの高度なカスタマイズやファインチューニングも可能。
Hugging Faceのオープンモデルを活用して、次世代のAI画像生成の可能性を広げよう!

Best regards, (^^ゞ




以上の内容はhttps://cysec148.hatenablog.com/entry/2025/04/08/163156より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14