プレスリリースやお知らせ、開発ブログ、会社の活動状況、Mattermost・aws・AI等の技術情報などを発信しています。

画像生成 AI Stable Diffusion を使ってみた

ディーメイク Advent Calendar 2024 12/13の記事です。

こんにちは、 goto です。

今回は画像生成 AI である Stable Diffusion を使用し、イラストを生成できるところまでを紹介します。


Stable Diffusion とは?(ChatGPT解説)

Stable Diffusionを知らない方もいると思うのでChatGPTに解説をお願いしました。


Stable Diffusionは、画像生成型AIモデルの一つで、テキストから画像を生成する技術です。生成モデルの中でも特に効率的で高品質な画像を生成することができ、アート、デザイン、プロトタイピング、ゲーム開発、広告など幅広い分野で利用されています。

特徴

1. テキストプロンプトから画像生成

簡単な文章を入力するだけで、それに対応する画像を生成可能。例えば、「夏の海で遊ぶ猫」というプロンプトでアート風のイラストが作れます。

2. オープンソース

Stable Diffusionはオープンソースとして公開されており、誰でもアクセスしてカスタマイズや利用が可能です。商業利用の自由度が高い点が特徴。

3. 高速かつ軽量

他の画像生成モデル(例: DALL·E 2、Imagen)に比べて計算コストが低く、一般的なGPU環境でも動作する。

4. カスタマイズ性

トレーニング済みモデルをさらにチューニングすることで、特定のスタイルやテーマに特化した画像生成が可能。

5. 応用の広さ

• キャラクターデザイン

• 漫画や小説のイラスト制作

• 広告ビジュアルの作成

• 教育用素材の生成

使用例

1. アート制作

プロのデザイナーがイラストのアイデア出しや下書きとして使用。特に細かいディテールの調整が容易。

2. 商品プロトタイピング

例えば、新製品のアイデアを視覚化してプレゼンに活用。

3. 教育・研究

モデルの仕組みを学ぶ教材としても人気。特に生成型AI研究のエントリーポイントに最適。

4. エンターテインメント

個人ユーザーが趣味でキャラクター画像や背景を生成するなど、創造の幅を広げるツールとして人気。

なるほど…

Stable Diffusion の利用方法

前提としてWindowsでGPUが使えるPCを想定した利用方法を紹介します。

Stable Diffusion を使うための最低スペック


Stable Diffusion を扱うにあたって、必要なPCスペックがあります。
Google Colab で使用可能でありますが、使用時には料金が発生することと python の知識が必要になるので 、GPU を積んだ PC を使うことをオススメします。

項目スペック
GPUNVIDIA CUDA対応(VRAM 4GB以上、推奨6GB以上)
CPUIntel Core i5 / AMD Ryzen 5以上
RAM8GB以上(推奨16GB以上)
ストレージSSD推奨(空き容量10GB以上)
OSWindows 10 64bit / macOS / Linux

筆者はNVIDIA RTX2060 SUPER(VRAM 8GB)を使いましたが、1枚の生成に40秒程度かかりました。

グラボの生成速度比較はこちらが参考になると思います。

https://chimolog.co/bto-gpu-stable-diffusion-specs/

Stability Matrix と Stable Diffusion のインストール


Stability Matrix は Stable Diffusion とその周辺技術に関連する情報やサポート環境を一覧化したドキュメントやリソースを提供してくれます。

StabilityMatrix の readme の下のボタンをPCの環境に合わせて押してください。

Windows はインストーラがダウンロードされるので exe ファイルを実行し、手順に沿ってインストールします。

インストールが完了し Stability Matrix を起動したら左の赤枠のアイコンをクリックし、パッケージの画面に行きます。

パッケージの画面ではインストール済みのパッケージが表示されます、初期状態では何も表示されていないはずです。

一番下のパッケージの追加を押して、自分が使うパッケージを選択していきます。

Stable Diffusion が3つほど表示されますが、それぞれの違いは以下です。

項目Stable Diffusion WebUI (AUTOMATIC1111版)ForgeReForge
開発目的ベースとなるオリジナル版。拡張性と安定性を重視。高速化とVRAM使用量削減、新機能の早期導入。高速化や最新機能を統合しつつ、拡張機能の互換性維持。
特徴- 豊富な拡張機能サポート
- 安定した動作
- 高速画像生成
- 低VRAM環境向け最適化
- 高速化
- 約80%の拡張機能が利用可能
対応GPU/VRAMVRAM 4GB以上(推奨6GB以上)VRAM 4GB以上で快適に動作VRAM 4GB以上で快適に動作
拡張機能の互換性高い互換性一部の拡張機能が非対応約80%の拡張機能が互換性あり
UI (ユーザーインターフェース)シンプルで多機能AUTOMATIC1111版に近いUI利用者フレンドリーな改良版UI
新機能の導入速度安定性重視、慎重に導入最速で新機能を取り入れる安定性と機能拡充のバランス
対象ユーザー安定性を求める一般ユーザー高速性を求める中・上級者高速性と拡張性を両立したいユーザー
- 標準的なStable Diffusion体験をしたい場合- 低VRAM環境での画像生成や高速生成を求める場合- 高速化しつつ多くの拡張機能を利用したい場合

どれを使ってもよいのですが、reforge を選択するのが安定性があり、低スペックな環境でも動く為良いと思います、筆者は reforge を普段使っています。

選択するとインストールボタンが現れるのでそれをクリックします。

インストールが終わり、先程のパッケージ画面に戻ると Stable Diffusion が追加されているので、launch ボタンを押します。

初回の起動では、python がバックグラウンドで必要なパッケージのインストールしているので少し時間が掛かります。

しばらく待つと既定のブラウザが開いて Stable Diffusion で画像生成する画面が表示されます。

この画面が表示されたらインストールは終了です、ページが開かない場合、http://127.0.0.1:7860 にアクセスしてください。

それでも表示されない場合は Stability Matrix のログを見て ChatGPT に質問してください 。

プラグインのインストール方法と紹介

素の状態でもプロンプトを入力して画像生成が可能ですが、どんなプロンプトがあるのか分からないと思います。

とりあえずこれだけ入れておくと生成が楽になるであろうプラグインを紹介します。

まず、手始めにプラグインのインストール方法を紹介します、プラグインのインストール方法は簡単です。

  1. Extensionsのタブをクリック
  2. Install from URLのタブをクリック
  3. URL for extension's git repositoryにGitHubの1枚目の画像の赤枠から取得したURLをコピー&ペースト
  4. install ボタンをクリック

ほとんどのプラグインはこの手順でインストールできます。

オススメの1つ目は prompt-all-in-one です、詳しい使い方は README に詳しく書いてあるのでそちらを参照してください。

2つ目は日本語化のプラグイン localization-ja_JP です。

これら2つのプラグインをインストールすると以下のようになります

これでなんとなく感覚で触れるくらいにはなったと思います。

モデルのダウンロード

このままプロンプトを入力して生成できますが、デフォルトのモデルの状態では統一された画像が生成できません、その為自分の目的に合うモデルを Chrome や ChatGPT で探してください。

または Stability Matrix の model browser から世界中の人が作ったモデルをダウンロードできます。

ダウンロードしたモデルは Stable Diffusion の以下から設定できます。

外部から取得した場合は Stable Diffusion がインストールされている先の指定ディレクトリ入れてください。

画像の生成

今回は試しにイラストを出力するモデルを使ってみたいと思います。

使用したモデルは AnimagineXLV31 です。

このような形でプロンプトに「1girl」「 japanese_clothes(着物)」とネガティブプロンプトに「text」「EasyNegative(上質なものにする呪文)」「nsfw(R18)」を入力しました。

プロンプトは生成してほしいプロンプト、ネガティブプロンプトは生成から除いてほしいのプロンプトを入力します。

サンプリング方法は「Euler a」「karras」を選択しています、modelによっては違うものの方が良いのかもしれないですが、とりあえずこれを選べば間違いないよねってものを選択しているつもりです。

幅や高さも使用されるモデルによって対応できる値が異なります。

解像度 (幅 × 高さ)比率 (横:縦)必要VRAM (目安)SD (1.4/1.5)SDXL (1.0/1.5)備考
512 × 5121:1~4GB対応対応標準的な設定、アイコンや小型画像に最適
768 × 7681:1~6GB対応対応高解像度の正方形画像、ディテール向上
512 × 7682:3~5GB対応対応縦長の画像、ポートレートに適する
768 × 5123:2~5GB対応対応横長の画像、背景シーン向け
1024 × 10241:1~8GB部分対応対応超高解像度の正方形、SDXL推奨
1024 × 7684:3~8GB部分対応対応横長の汎用的な画像
768 × 10243:4~8GB部分対応対応縦長の汎用画像、ポートレートに適する
2048 × 10242:1~12GB非対応対応パノラマや広い風景向け、SDXL推奨
1024 × 20481:2~12GB非対応対応縦長の高解像度画像、全身像に最適
2048 × 20481:1~16GB非対応対応超高解像度、SDXLモデル必須

ChatGPTにその他の項目についてまとめてもらいました、正直筆者も使って無いものもあるので分からなかったら調べてください。

項目説明
Prompt生成する画像の内容を記述するテキストプロンプト。例: "A cat in a forest"
Negative Prompt生成時に避けたい要素を記述するプロンプト。例: "blurry, distorted"
Sampling Methodノイズを削減して画像を生成するアルゴリズム。例: Euler, DPM++
Sampling Steps画像生成に使用する反復回数。高いほど品質が向上するが時間がかかる。
Width生成画像の幅(ピクセル単位)。例: 512
Height生成画像の高さ(ピクセル単位)。例: 512
CFG ScalePromptに従う強さ(条件付きガイダンススケール)。高いほどプロンプトに忠実。
Seed画像生成のランダム性を制御する値。固定すると同じ画像を再現可能。
Batch Size1回の生成で生成する画像の枚数。例: 1枚または複数枚。
Batch Count指定したバッチサイズを繰り返す回数。例: 生成ジョブの総数を決める。
Steps per Image1枚の画像生成に使うステップ数(Sampling Stepsとは別)。
Upscaler生成後に画像を高解像度化するオプション。例: ESRGAN。
Inpainting Mask画像の一部を修正または再生成する際のマスク領域設定。
Denoising StrengthInpainting時のノイズ除去レベル(0~1の範囲)。
Hires. Fix高解像度修正。低解像度画像を一度生成後、高解像度で再生成。
Restore Faces顔部分を強調・修正するオプション(顔認識機能を使用)。
ControlNet画像生成に追加のガイドライン(ポーズや線画)を適用可能。
Lora Models特定のスタイルやテーマに特化した学習済みモデルを利用。
Scriptカスタムスクリプトを使った特殊な画像生成や設定。
Variation Seed元のSeed値を基に画像のバリエーションを作る設定。

生成された画像です。

もう少しいい感じにしたいのでプロンプトを追記していきます。

「Masterpiece」「best quality」 「ultra detailed」をプロンプトの先頭につけておくと以下の画像のクオリティで出してくれます。

Masterpiece,best quality,ultra detailed, 1girl, japanese_clothes,
text,EasyNegative,croppedcat ears,bad anatomy,long_neck,long_body,deformed mutated disfigured,missing arms,extra_arms,mutated hands,extra_legs,bad hands,poorly_drawn_hands,malformed_hands,missing_limb,floating_limbs,disconnected_limbs,extra_fingers,bad fingers,liquid fingers,poorly drawn fingers,missing fingers,extra digit,fewer digits,ugly face,deformed eyes,partial face,partial head,bad face,inaccurate limb,clothes,(worst quality, low quality:1.4),(zombie, sketch, comic),nsfw,

またネガティブプロンプトは長いので書きませんが、指の欠損や低品質等の生成してほしくない条件をすべて書いておきます、ほぼ毎回使うと思うので履歴から参照するか、定型プロンプトを保存する方法もあるので良ければ使って見てください。

中々いい感じになった気がしませんか?

他にも顔や服などを固定する LoRA や 動きを細かく調整できる ControlNet など画像生成に使える技が沢山あるので、興味を持った人は調べてみてください。

  • B!

おすすめ記事リンク