画像生成AIの「Stable Diffusion」をコマンド操作不要で簡単に使えるソフト「NMKD Stable Diffusion GUI」のバージョン 1.5.0 から搭載されている機能の説明ページです。
現在はより新しいバージョンが公開されているため、以下の説明も最新版のソフトに合わせて適宜修正しています。
なおソフトの概要・詳しい使い方に関しては以下のページをご参照ください。
入力したテキストから画像を生成したり、自分が描いた落書きに説明テキストを加えれば思い通りの絵に変えたりできるAI「Stable Diffusion」 ↑a sleeping cat in the hot spring (温泉で眠る[…]
※ 他バージョンで追加された新機能
現在は新バージョンが公開され、機能も更に追加されています。
他のバージョンの追加機能を確認したい場合は以下のページをご覧ください。(画像クリックで該当ページに移動できます)
NMKD Stable Diffusion GUI 記事一覧
Ver. 1.4.0 → Ver 1.5.0 の変更点
※以下要点です。詳しい公式発表はこちら。
動作条件
※最新版の動作条件はこちらをご覧ください。
インストール・更新方法
2023/3/29 追記:現在の最新バージョンのインストール方法はこちらのページに記載しています。
ソフトの使い方
※初めて NMKD Stable Diffusion GUI を使う方はまずは上記リンク先を見て、基本的な使い方を先にご確認ください。
以下、本ページではバージョン 1.5.0 で追加された新機能に絞って概要や使い方を説明していきます。
なお、ソフト画面は最新版のものに適宜差し替えています。
ネガティブプロンプト
特定の言葉をネガティブプロンプトとして指定すると、それが含まれないような画像が生成されます。
プロンプト入力欄の下がネガティブプロンプトプロンプト欄です。
※ 角括弧 [ ] 内にネガティブプロンプト指定語句を書くことで、通常のプロンプト入力欄にネガティブプロンプトを入力することも可能です。
(コピペの二度手間を減らすためにプロンプトを一つの入力欄に収めたい方向け)
使い方
"photo of blue sky" -s 50 -S 34316150 -W 512 -H 512 -C 7.5 -A k_euler_a
例えば「photo of blue sky」というプロンプトで青空の写真を生成させるとき、雲が写ってほしくないならネガティブプロンプトに「clouds」を指定すれば雲が含まれない画像が生成しやすくなります。
ネガティブプロンプト: clouds
同一設定・同一シードで clouds をネガティブプロンプトに指定して生成した画像がこちらです。
"photo of blue sky [clouds]" -s 50 -S 34316150 -W 512 -H 512 -C 7.5 -A k_euler_a
ちゃんと雲が消えています。
生成する画像に余計な要素が含まれがちならネガティブプロンプトで積極的に除外すれば、良画像生成率を高められそうです。
画像の質の向上にネガティブプロンプトを用いる
ネガティブプロンプトで画像の質を下げる要素を除外させることで画像の質を向上させるテクニックが流行しています。
例えば人物画/写真の質を向上させるネガティブプロンプトとして紹介されていた以下を使いたい場合、
(※紹介されていたネガティブプロンプトは長すぎて語数制限に引っかかったので、一部削りました)
通常のプロンプト文を入力した後、ネガティブプロンプト欄に上記プロンプトをコピペすればOKです。
(ちなみに実際に生成すると分かりますが、ネガティブプロンプトを利用しても手や指の形状がおかしくなる問題はなかなか改善しません)
画像のジャンルによっては既存のネガティブプロンプトがあまり有効でない場合もあるので無理に入れる必要は無いかもしれません。
(興味深いネガティブプロンプトの探索方法が紹介されていました。NMKD Stable Diffusion GUI では実行できませんが参考にはなるかもしれません。)
人物画・キャラクター画など各用途に合わせて色々なネガティブプロンプト例があるので、必要であれば検索してみてください。
ネガティブプロンプトと"負の重み"の比較
NMKD Stable Diffusion GUI では単語に負の重みを指定することでその単語を除外する機能が既にあります。
ただし負の重みは以下の点でネガティブプロンプトより使いにくいので、ネガティブプロンプトの利用をおすすめします。
- 負の重みを指定したい場合、それ以外の語句に忘れずに正の重み(:1) を指定しないといけないので面倒
- 負の重みが -0.3 あたりを超えると出力画像の色味や形状がおかしくなり始める
↑ネガティブプロンプトと異なり数値で細かく負の値を指定できて便利そうですが、実際のところ調整は難しいです - (何も指定しない画像に対して) 画像の構図が大きく変わる場合が多い
"プロンプトは画像下のもの" -s 50 -S 34316150 -W 512 -H 512 -C 7.5 -A k_euler_a
上記3画像は同一シード同一設定でプロンプトのみ変更したものですが、ネガティブプロンプトの使用に比べると負の重み指定では画像の構図が大きく変わってしまっています。
しかも雲が完全には除去されていません。
以上より、ネガティブプロンプトの利用がおすすめです。
単語数の制限について
プロンプトとネガティブプロンプトは、それぞれ55語の語数制限があります。
それぞれ別枠なのでプロンプトが55語あっても、追加でネガティブプロンプトを55語入れることができます。
参考:開発者さんの回答
ソフト画面の変更
バージョン 1.5.0 時代のソフト画面の説明を記載していましたが、アプデによる変更で情報が古くなったためこちらにアーカイブし、本ページからは削除しました。
新しいソフト画面の詳細な説明は、以下のページをご覧ください。
画像生成 AI「Stable Diffusion」をコマンド不要で簡単操作で使えるソフト NMKD Stable Diffusion GUI について、ソフト画面と機能・仕様を一覧で説明しています。 こちらのページは機能や設定を一通り[…]
モデル結合ツール
画像生成に使うモデル (.ckpt ファイル) 2つをマージ(ブレンド)することで、2つのモデルを好きな割合で合体させて新しいモデルファイルを作成できます。
上手くいけば各モデルの特徴をいいとこ取りした新しいモデルファイルを作れるかもしれません。
※別のモデルの配布先や別モデルの読み込み方法は以下を参照。
画像生成AIの「Stable Diffusion」をコマンド操作不要で使えるソフト「NMKD Stable Diffusion GUI」で利用可能な便利機能をまとめました。 有志が作成した色々なオリジナルモデル(アニメイラスト特化、特[…]
方法
画面右上にある赤枠で囲ったアイコンをクリックすると表示されるメニューから「Marge Models」(モデルのマージ)を選びます。
モデルのマージ画面が表示されます。
右上のフォルダボタンを押して、表示されたフォルダに混ぜたいモデルファイル (.ckpt ファイル) を入れてください。
次に右上の更新ボタンを押して、モデルリストを更新させます。(今フォルダに入れたモデルファイルが下の選択肢に表示されるようになる)
混ぜたい2つのモデルをリストから選び、下のバーで混合割合を調整してから下の「Merge!」ボタンを押せばモデルのマージが始まります。
モデルのマージは数十秒で完了します。
マージされたモデルは先ほどのフォルダに保存されるので、ソフト設定画面のモデル選択オプションから選ぶことができます。
例えば ○○.ckpt と △△.ckpt を 30% : 70% の比率でマージした場合、ファイル名は「○○-30-with-△△-70.ckpt」となっています。
参考
Stable Diffusion (sd-v1-4)、Waifu Diffusion (wd-v1-2-full-ema)、TrinArt (trinart2_step115000) の3モデルを何種類かの比率でマージさせた結果を比較したページがありました。
リンク:【Stable Diffusion】マージモデルと各モデルの生成結果を比較してみた
モデル剪定ツール
モデルファイルは1個で数GBとサイズがかなり大きいですが、画像生成時に不要なデータをモデルから切り落とすことでファイルサイズを小さくできます。
(画像生成時には不要な EMA データの削除)
方法
画面右上にある赤枠で囲ったアイコンをクリックすると表示されるメニューから「Prune (Trim) Models」(モデルの剪定)を選びます。
「Model File」では、ファイルサイズを小さくしたいモデルをリストから選びます。
「Model Output Fomat」では、モデルの出力形式を Half Precision と Full Precision から選びます。
「Delete Input File If Successful」にチェックを入れると、モデルの剪定に成功したとき剪定前のモデルは削除されます。
下の「Prune!」ボタンを押せばモデルの剪定が始まります。
モデルの剪定は1分程度で完了します。
例えば ○○.ckpt を Half Precision 形式に剪定した場合、ファイル名は「○○-pruned-fp16.ckpt」となります。
出力形式の違いについて
浮動小数点の精度が Half Precision では float16、Full Precision では float32 になります。
精度が半分といっても画質が半減するわけではありません。(むしろ生成画像はほぼ変わらず)
Half Precision では生成する画像がほぼ変わらないにもかかわらずVRAM消費量を float32 に比べて削減できるので、Half Precision をおすすめします。
参考
モデルの剪定でどの程度生成画像が変化するのか、剪定前後の比較を行っているページがありました。
リンク:WD1.3の4種類のモデル(float32,float16,full,full-opt)の違いを検証
full版を剪定して float16 版にすると少し生成画像が変わるみたいですが、float32 → float16 の剪定なら生成画像をほぼ変えずにファイルサイズだけ小さくできそうです。
画像読み込み画面
ソフトに画像をドラッグ&ドロップする、またはソフト画面で Ctrl+V を押して画像を貼り付けすると画像読み込み画面が表示されます。
NMKD Stable Diffusion GUI で生成した画像を読み込ませた場合、右側のパネルに画像生成時のプロンプトや設定値が表示され確認できます。
ちなみにパネル上部に表示されているデータ文字列(赤線部)の意味は次のとおりです。
"プロンプト文章" -s (ステップ数) -S (Seed値) -W (幅) -H (高さ) -C (CFG Scale値) -A (使用Sampler)
後から画像生成時のプロンプトや設定を調べられるので非常に便利です。
メニュー項目について
OK ボタンの上にあるメニュー項目から、読み込んだ画像を img2img 用に使うか読み取ったプロンプトや設定値をソフトに反映するか選べます。
Load as Initialization Image | img2img 用の初期画像として読み込む |
Use Settings From Metadata | 画像のメタデータから設定値を読み込み反映する (プロンプトやSeed値も含めた各設定値が読み込まれる) |
Load Image and Use Settings From Metadata | 画像を img2img 用に読み込み、設定値も読み込む |
Copy Prompt | 画像のプロンプトをクリップボードにコピーする |
前に生成させた画像の設定値を再び利用したい時は、画像をソフトにドラッグ&ドロップして「Use Settings From Metadata」を押すだけで簡単に設定を読み込めるのでとても便利ですね。
顔面修復機能の拡充
生成画像中に含まれる人の顔を修復し、不自然なところや低画質でぼやけてしまっているところを綺麗にしてくれる機能「Face Restoraction」が強化されました。
新たに別の顔復元法 CodeFormer が追加され、顔修復方法を2つから選べるようになりました。
※顔復元機能にはソフト画面右上の「魔法のステッキ」アイコンのボタンをクリックすればアクセスできます。
※初回実行時のみ、使用に必要なファイルがダウンロードされるため画像生成時に数分の待ち時間が生じます
CodeFormer 顔復元
Face Restoration (顔復元) の設定を Disabled (無効) から CodeFormer に変更すれば、CodeFormer による顔復元機能が有効になりこれから生成する画像には顔修復がかけられます。
選択後、下に2つの設定パラメータが現れます。
Face Restoration Strength
値が大きいほど補正効果が強くなります。( 0 ~ 1 の範囲)
小さい値では十分な補正効果が得られないことが多いため、基本的に最大値の1にしておき顔が変わりすぎた場合のみ値を小さくする感じでOKです。
CodeFormer Fidelity
修復前の顔面への忠実さ。( 0 ~ 1 の範囲)
0に近づけるほど修復の質が向上する代わりに忠実さが減り、元の顔と離れてしまいます。
1に近づけるほど忠実さが向上して元の顔を維持してくれる代わりに、修復の質は今ひとつになってしまいます。
0にすると元の顔の雰囲気とだいぶ変わってしまいますが、1ではあまり復元が行われず目の不自然な部分が残ってしまっています。
0.6 など、ほどほどの値を指定しておくのが良いかもしれません。
GFPGAN と CodeFormer の比較
GFPGAN と CodeFormer の顔修復結果を比較した結果、次の通りになりました。
(どちらも Face Restoration Strength は 1。CodeFormer の Fidelity の値は 0.6)
CodeFormer は修復箇所の色味が変わっている点 (特に唇) が気になります。
この写真の場合は GFPGAN の方が良い顔修復を行えるようです。
一般に GFPGAN の方が CodeFormer よりも修復の精度が良いみたいですが、場合によっては肌の質感がなめらかになりすぎて不自然に綺麗に見えてしまうということもあるようです。
おすすめは GFPGAN ですが、GFPGAN の生成結果が微妙な場合は CodeFormer も試してみるのが良いかもしれません。
参考情報
GFPGAN と CodeFormer を比較している方がいらっしゃいました。
リンク:GFPGAN and CodeFormer - seperately and together.
この方は両者を組み合わせることで GFPGAN の修復精度と CodeFormer の人間らしい顔の質感をいいとこ取りできるか検証していました。
※比較画像のリンクはこちらです。
(GFPGAN の更新について)
ソフトバージョン 1.3.1 以前から バージョン 1.5.0 以降に移行した場合、ソフト内部の GFPGAN バージョンも更新されているので以前より自然に顔面修復が行われるようになっています。
左が顔復元が適用される前、中央と右が顔復元適用後です。
(中央はソフトバージョン 1.4.0 以降のGFPGAN、右はソフトバージョン 1.3.1 以前のGFPGANの結果です)
"smiling child face facing forward" -s 50 -S 1780384779 -W 512 -H 512 -C 7.5 -A k_euler_a -G 1.0 ※Face Restoration Strength はどちらも 1
顔復元により、変になっていた目の部分や不自然な歯の形が修正されて自然になっています。
最新版のGFPGANと旧版を比較すると、旧版では修復された箇所の彩度が低下して顔の色が変わってしまっている一方、最新版では顔色はそのままに目などの不自然な部分だけ修復されています。
以前に一度だけ GFPGAN の顔修復を試して結果が微妙でそれ以来使用していないという場合、この機会にもう一度試してみると今度は上手くいくかもしれません。
設定画面に追加された項目
※設定画面はソフト画面右上の歯車マークのボタンからアクセスできます。
Unload Model After Each Generation (No Idle RAM Usage)
画像生成後にモデルをアンロード(読み込み解除) するオプションです。
他の Stable Diffusion 環境とこのソフトを同時に利用している場合、モデルの読み込みを解除しないと RAM 不足で別のソフトで Stable Diffusion が実行できない場合があります。
頻繁に使用ソフトを切り替える場合はこのオプションをONにしておくことで、画像生成後にモデルがアンロードされ使用 RAM が解放されるので上記問題を解決できます。
注意:画像生成のたびにモデルを再読み込みする必要が生まれるので、画像生成にかかる時間が増加してしまいます。基本不要な設定なのでOFFのままが推奨です。
CUDA Device
画像生成に使用する GPU または CPUを選択できるオプションです。
デフォルトでは Automatic (自動認識) になっていますが、もしお使いのPCに NVIDIA 製のグラボが搭載されているにもかかわらずCPUで画像が生成されてしまっている場合は、ここで手動で GPU を選択してください。
複数の GPU が使える場合もこの設定で選択できます。
※ CPU での画像生成は試験的機能なので実際に動作するかどうかわかりません。動いたとしても1枚の画像生成に数十分ほどかかってしまい実用上厳しいなんてことも…。
Data to Include in Filename
メタデータ(画像生成に使った設定)を画像ファイル名に含めるかどうか選択できるオプションです。
Prompt | プロンプト |
Seed | シード値 |
Scale | CFG Scale の値 |
Sampler | 使用サンプラー名 |
Model | 使用モデル名 |
例えば全部にチェックを入れて「photo of cat」というプロンプトで画像を生成させると、画像ファイル名は
2022-10-01-12-51-10-1-photo_of_cat-1355297883-scale7.50-k_euler_a-stable-diffusion-1.4.png
のように「年月日時分秒-連番-入力プロンプト-シード値-Scale値-サンプラー名-モデル名.png」という形式になります。
※Subfolder Per Prompt (各プロンプトごとにフォルダを作る) 設定をONにしていると、こちらのファイル名設定で Prompt にチェックを入れていても画像ファイル名にプロンプトは入りません。
When Post-Processing Is Enabled, Also Save Un-Processed Image
Post Processing (画像拡大が顔修復) が有効になっている時、拡大や修復を行う前の画像も保存するか選択できるオプションです。
Prompt Queue や Prompt History 機能の改善
※これらの機能の使い方自体はこちらのページで説明しているのでご確認ください。
プロンプト履歴機能 (Prompt History)
以前実行したプロンプトや設定値を履歴から呼び出して簡単に再入力できる機能「Prompt History」の画面に機能が追加されました。
- 右上の Prompt Text Filter ボックスでプロンプト履歴の検索が可能に
- 右上の Enable Prompt History のチェックを外すことで、プロンプト履歴機能をOFFにできるように
- 項目の右クリックメニューに「Copy Prompt」が追加された
プロンプトキュー機能 (Prompt Queue)
現在のプロンプトと設定値をリストに追加して、後でリスト内を一括実行できる機能「Prompt Queue」が若干使いやすくなりました。
上記ボタンを右クリックすると「Add Current Settings to Queue」メニューが現れるようになったので、わざわざ Prompt Queue 画面を開かなくても現在のプロンプト・設定値を Queue に入れられるようになりました。
同一プロンプトで設定値(Sampler や Step数など)だけ変えてQueueにどんどん追加していき後で一括実行するなんて時に Queue への追加が簡単になって効率化したと思います。