NMKD Stable Diffusion GUI 1.8台 の新機能 (1.8.0/1.8.1)

画像生成AIの「Stable Diffusion」をコマンド操作不要で簡単に使えるソフト「NMKD Stable Diffusion GUI」 のバージョン1.8台の新機能・変更点です。

含まれるバージョン
1.8.0 / 1.8.1

なお2023/3/30時点の最新版はバージョン 1.9.1 です。

(更新が大変遅れてしまいすみませんでした)

バージョン 1.8 台ではついにインペイント専用モデルが使えるようになり、以前に比べてずっと自然に画像の一部を描き変えられるようになりました!

写真に写っているものを初めから存在しなかったかのように消したり、別の物に変えたりすることが魔法のようにできます。

Ver. 1.7.2 → Ver 1.8.1 の変更点

※以下要点です。1.8.0 の更新内容を含みます。

※各機能の詳しい説明は「※基本事項」の項の次に記載しています。

※ソフトダウンロード先:NMKD Stable Diffusion GUI - AI Image Generator

重要な仕様変更

  • AMD製GPUでもソフトが動作するように (動作環境拡大)

新機能の追加

Masked Inpainting (画像の一部だけ描き変え) の機能が大幅強化

  • Text Mask描き変えたい部分をマスク描画で指定する代わりに、文章で指定できる機能
  • Mask Editor (マスク描画画面) のウィンドウサイズ変更が可能になり、画像の細かい部分のマスキングが容易に
  • Mask Editor に貼り付け反転保存元に戻す機能が追加
    反転 (Invert):マスクする部分としない部分を反転できる (←「この部分以外全部マスクする」といった操作ができるように)
    保存 (Save)・読込 (Load):マスクを保存できる。後から保存したマスクを呼び出せるようになり便利に
    元に戻す (Undo)
    ↑これらの機能は右クリックメニューやショートカットキーから呼び出せる
  • マスクを一度指定して画像生成した後に、そのマスクを再編集して画像生成できる
    ↑今までは一度マスクを消してやり直さないといけなかったのでかなり便利に
  • Inpainting Model の読み込みに対応

 

その他の新機能

  • img2img の初期化画像と自動で同じサイズで画像を生成できるオプションが追加
  • img2img の初期化画像名のところに Shift キー を押しながらマウスをホバーすると、指定した初期化画像がその場でプレビュー可能に
  • Convert Models:異なる形式のモデルを相互変換する機能が追加
    ↑Pytorch ( ckpt/pt ファイル ), Diffusers, Diffusers ONNX, SafeTensors の4種に対応
    ↑他の形式のモデルファイルを、NMKD版ソフトで動かせる Pytorch 形式に変換可能
  • 画像インポートウィンドウに「Load Image and Use Settings From Metadata」メニューが追加
    ↑画像を(img2img用に)読み込み、同時にメタデータから設定も取得してオプションに反映できるように
  • Dreambooth (オリジナルモデル作成機能) が VRAM メモリ制限 (24 GB 以上) を無視して実行できるように
  • Hi-res. Fix (高解像度画像の修正機能) が、画像サイズの縦or横のどちらかだけ 512 px を超えていれば使用可能に
    ↑従来は縦横両方 512 px を超えていないと使えなかった

利便性改善

  • 1度読み込んだモデルへの切り替えが非常に高速に (再ロードは2秒程度で済むように)
  • 画像インポートウィンドウに解像度が表示されるように
  • ソフトの画像ビューアで前の/次の画像を見るためのショートカットキーの追加
    ↑「Ctrl + ←」と「Ctrl + →」
  • 画像ビューアのホットキー(コピー:Ctrl+C、開く:Ctrl+Oなど)がポップアップ画像ビューアでも動作するように
  • ポップアップ画像ビューアでスライドショーモードをデフォルトで有効にするオプションが追加
  • プロンプト履歴画面 (Prompt History) の改善:前のエントリーと同じものがある場合は新しいエントリーを重複して保存しないように
  • プロンプト履歴画面 (Prompt History) の改善:履歴保存上限を500件に制限 (読み込みに時間がかかるため)
  • プロンプトキュー (Prompt Queue) の改善:スタック (先入れ後出し) ではなくキュー (先入れ先出し) としてちゃんと動くように
  • ソフトを閉じたり開いたりしても高解像度画像修正オプションが保存/ロードされるように
  • ウェルカムスクリーン (ソフト起動時の更新履歴画面) を非表示にできるように
  • 起動時にソフトにアプデが無いか自動チェックするように (ただし自動アップデート機能は無い)
  • 開発者向け:インストーラーで、カスタムgitコミットを使用できるように

不具合修正

重要な問題の修正

  • GPU が 6 GB 未満でもアップスケーラーがデフォルトで無効化されないように
  • インターネットに接続されていない状態だとモデルの読み込みに失敗することがある不具合を修正
  • Masked Inpainting のぼかしが不可逆で保存され、編集が難しくなっていた問題を修正
  • 保存した Masked Inpainting のマスクをリセットしても正しくクリアされないことがあった不具合を修正
その他の問題の修正 (クリックして表示)
  • 画像生成後のアップスケーリングや顔処理でソフトロックが発生する不具合を修正
  • プロンプト履歴から設定を読み込むと不正な値が設定される不具合を修正
  • 壊れた / 悪意のあるモデルファイルを読み込んだ時のエラーを修正
  • <Name>構文をもつ Textual Inversion のコンセプトファイルを使用した際にプレースホルダーの欠落に関する警告が表示される問題を修正
  • GUI画像生成をキャンセルした際に InvokeAl CLI が開かなくなる問題を修正
  • img2img で存在しない画像を初期画像として使用しようとすると未処理のエラーが発生する問題を修正
  • モデルフォルダにモデルファイルが存在しない場合に GUI がフリーズする問題を修正
  • ONNX でシードがうまく機能しない問題を修正
  • CFG Scale の設定値が1以下だとうまく機能せず、初期値に戻ってしまう問題を修正
  • img2img の初期画像インポートで stretch /pad 設定を無視してしまう問題を修正
  • その他マイナーバグの修正

公式情報(英語)

ソフト使い方ガイド(公式):NMKD Stable Diffusion GUI

DreamBooth 訓練ガイド(公式):DreamBooth Training GUI

ソフト更新履歴(公式):changelog

 

※基本事項

初めて NMKD Stable Diffusion GUI を使う方はソフト最新版のインストール方法基本的な使い方など一通りまとめた以下のページを先にご確認ください。

ソフト導入・使い方

入力したテキストから画像を生成したり、自分が描いた落書きに説明テキストを加えれば思い通りの絵に変えたりできるAI「Stable Diffusion」 ↑a sleeping cat in the hot spring (温泉で眠る[…]

 

画面の各項目や設定画面 (Settings) のマニュアルは以下のページです。

画像で全機能説明

画像生成 AI「Stable Diffusion」をコマンド不要で簡単操作で使えるソフト NMKD Stable Diffusion GUI について、ソフト画面と機能・仕様を一覧で説明しています。 こちらのページは機能や設定を一通り[…]

NMKD Stable Diffusion GUI のソフト画面の説明

 

※ 他バージョンで追加された新機能

他のバージョンの追加機能を確認したい場合は以下のページをご覧ください。(画像クリックで該当ページに移動できます)

NMKD Stable Diffusion GUI 記事一覧

 

以下、本ページではバージョン1.8.0 / 1.8.1 の新機能に絞って概要や使い方を説明していきます。

 


 

動作環境の拡大

従来は NVIDIA製GPU が必要でしたが、ソフトが新たに次の環境でも動かせるようになりました。

8 GB の VRAM を搭載した DirectML 対応の GPU

これで AMD製GPU でも Stable Diffusion をお手軽GUI操作できるようになりましたね! (既に他のソフトでもできたみたいですが)

ただし NVIDIA製GPU を使用した場合と異なりソフトの一部機能が制限され使えないようです。

最新の動作環境についてはこちらのページをご参照ください。

 

Masked Inpainting の機能強化

Masked Inpainting は、img2img 機能で画像を描き変えるときに、画像の一部領域だけを指定してそこだけ Stable Diffusion に描き変えてもらえる機能です。

NMKD Stable Diffusion GUI:Masked Inpainting 機能の概要

img2img を普通に使うと画像の変わってほしくない場所まで変わってしまうことが多いので、Inpainting で描き変えたい部分を指定すると便利です。

描き変える部分のことを Mask (マスク) と呼びます。

ソフトの更新で、マスク指定機能が便利に改善されたほか Inpainting 精度向上のための専用モデルの読み込みが可能になり実用性が向上しました。

※基本的な使い方は以前、こちらのページに記載しました。

 

Text Mask

描き変えたい部分をマスク描画で指定する代わりに、文章で指定できる機能です。

(※ 他のソフトで txt2mask と表記される機能に相当します)

img2img 用に画像を読み込んだ後、「Inpainting」のメニューから「Text Mask (Describe Objects)」を選択します。

NMKD Stable Diffusion GUI:Masked Inpainting 機能で Text Mask を指定する方法

すると隣に入力ボックスが現れるので、そこに画像中のマスクしたい対象を英語テキストで入力します。

Generate! を押して画像生成を始めると、文章を基にマスク対象が自動で認識され、テキストで指定したマスク対象の部分だけが描き変わります

試しにやってみる

こちらのねこさんの表情を変えてみます。(怒ったにゃんこにする)

 

まず、プロンプトにはどのように描き変えたいか指定します。

photo of an (angry)++ gray tabby cat

「怒ったサバトラ猫の写真」という内容のプロンプトです。

※元の画像との変更点が「怒った」部分なので、プロンプト中の angry を強調構文で強めています。(これをやるのは任意ですが、成功率がUPします)

参考ページ:プロンプト強調構文の使い方

 

次に、「Inpainting」項目の隣に現れた入力ボックスに、画像のどこを描き変えたいのか英語テキストで入力します。

NMKD Stable Diffusion GUI: Text Mask 入力欄にテキストマスク(txt2mask)を入力

今回は猫の顔の部分を指定して表情を変えたいので、「cat face」と入力しました。

なお、描き変えたい部分がはっきりと変わってくれるように、「Initialization Image Strength (Influence)」の設定値を小さめ (0.25) にしています。
※値が大きいほど元の画像が維持される設定

これで設定ができましたので、画像を生成してみます。

(※初回実行時は実行に必要なファイルのダウンロードが入るため少し時間がかかります。)

NMKD Stable Diffusion GUI: Text Mask 実行前後の猫の表情の書き換え結果比較
photo of an (angry)++ gray tabby cat -s 25 -S 448991457 -W 512 -H 512 -C 8.0  -A k_euler_a -f 0.75 -tm cat face

目つきが鋭くなり、おこにゃんになりました😾

(目つきや口元だけ怒った表情のものになった一方で構図や他の部分には変化がないので、猫の顔部分だけが Text Mask できちんと指定できていると分かります)

 

注意点
プロンプトには Inpainting で描き変える部分だけでなく全体の説明を記述する必要があります
良い例:photo of an (angry)++ gray tabby cat
悪い例:angry face

例えば今回のように猫の顔を変えるとき、プロンプトには描き変える猫の顔の部分の説明だけでなく、全体の説明を記述する必要があります。

(「怒った顔」ではなく「怒ったサバトラ猫の写真」というように全体についての説明にする)

描き変えたい画像がある場合は、その画像全体の説明を自分でプロンプトに入力しつつ変更したい部分をプロンプトに織り込まなければなりません。

実用性について

ただ、このくらいであれば猫の顔を Image Mask (画像にマスクを直接描き込む機能) で指定することでも可能ではあるので、なかなか Text Mask の活用例は思い浮かばないです。

文章でマスク対象を指定するのはなかなか難しいので… (上手くいった場合は時短にはなるかも)

 

Mask Editor がとっても便利に!

Mask Editor (マスク描画画面) に便利な機能や仕様が追加され、実用性が向上しました。

改めて画面の機能を一通り説明します。

NMKD Stable Diffusion GUI:Mask Editor 画面

ブラシの基本操作

画像の描き変えたい部分をブラシで黒く塗りつぶすことで指定できます。

Brush Size」からブラシのサイズを変更可能です。

Mask Blur」を変えるとマスクのぼやけ具合が変わります。

↑マスクの境界線をぼかすことで、画像生成後に描き変えた部分の境界線が分かりにくくなり自然な仕上がりになります。

ウィンドウはサイズ変更や最大化が可能なので、画像の細かい部分を塗りたい時はウィンドウを大きくしてください。

右クリックメニュー

NMKD Stable Diffusion GUI:Mask Editor の右クリックメニュー

Clear
消去
マスクを消去
Invert
反転
マスクする部分としない部分を反転する
(「この部分以外全部マスクする」といった操作ができるように)
Paste
貼り付け
マスクを貼り付け
(※マスクデータがクリップボードにコピーされている場合のみ有効)
Save
保存
マスクをファイルに保存
Load
読み込み
マスクをファイルから読み込み
Undo
元に戻す
元に戻す
(間違えた場所を塗ってしまった時などに重宝)

これらの機能は右クリックメニューからはもちろん、ショートカットキーからも実行できます。

マスクをファイルに保存して後から保存したマスクを呼び出せるようになったので、複数のマスクを試して比較する場合や後日同じマスクを使用する場合に便利です。

待望の「元に戻す」も実装されたので、間違えたところを塗っても全消去せず、単に Ctrl + Z キーで戻すだけですみます。

 

マスク設定後の再編集

マスク設定後はソフト画面の「Inpainting」の項目のところに次のようなボタンが表示されます。

「Clear Mask」を押すと現在設定されているマスクが消去されます。

「Edit Mask」を押すと現在設定されているマスクを Mask Editor 画面で再度編集できます。

 

Inpainting Model (インペイント専用モデル) の利用

上記で説明した Masked Inpainting の精度を大幅に向上させる方法として、Inpainting Model (インペイント専用モデル) の利用があります

Stable Diffusion の Inpainting Model である sd-v1-5-inpainting.ckpt を用いた RunwayML Inpainting と呼ばれるインペインティングが、NMKD Stable Diffusion GUI で利用可能です。

 

インペイント専用モデルのダウンロード

ダウンロードリンク:sd-v1-5-inpainting.ckpt

※配布元サイトの説明ページはこちら:runwayml/stable-diffusion-inpainting

注意:AMD製GPU をお使いの方は上記モデルとは異なるモデルが必要であり、動作させるための手順も異なります。(公式ドキュメント参照)

 

インペイント専用モデルの準備 (初回)

上記リンクからダウンロードした sd-v1-5-inpainting.ckpt をモデルファイルを入れるフォルダに移動します。

手順は以下の通りです。

  1. ソフト画面右上の歯車ボタンから、Settings 画面を開く
  2. 設定項目の「Stable Diffusion Model」のところで「Folders...」ボタンを押してモデル保存先フォルダ一覧画面を表示させる
  3. 一覧から保存先をクリックして選択し、右上のフォルダアイコンを押す
  4. モデル保存先フォルダが開くので、そこに sd-v1-5-inpainting.ckpt を入れる
  5. 保存先フォルダ一覧画面を閉じ「Refresh List」ボタンを押してモデル一覧を更新する
  6. リストから sd-v1-5-inpainting.ckpt を選ぶ

NMKD Stable Diffusion GUI:Inpainting Modelの準備方法

なお一度モデルを上記手順でフォルダに入れておけば、以後普段はソフト画面で「Ctrl+M」のショートカットキーから普通モデル↔インペイント専用モデルの切り替えがすぐできます。

 

実際に使ってみる

普段のモデルでインペイントするときと手順は同じです。(Load Image から画像を読み込み、Inpainting の項目を Image Mask に変える)

なおインペイント専用モデルでは以下が使えなくなります。

  • ネガティブプロンプト
  • Initialization Image Strength (Influence) の値の設定
  • ブラシで描いたマスクをぼやけさせる機能

椅子に座る男の子を消してみる

こちらの男の子を写真から消して、椅子だけにしてみます。(ごめんなさい)


photo of a boy sitting on a wood chair outside -s 25 -S 1329026897 -W 512 -H 512 -C 8.0 -A k_euler_a

まず、プロンプトを次のように指定します。

photo of a wood chair

今回は椅子に誰も座らない画像を生成したいので、プロンプト中には boy (男の子) を含めません。

ただの「木製の椅子の写真」とだけ指定しました。

そして上の写真を Load Image(s) で読み込み、Inpainting の項目を Image Mask にして、Generate! ボタンを押します。

 

マスク描画画面が現れるので、男の子全体をマスクで覆います。

消したい/変えたい対象を少し大きめに覆うのがポイントです。(消したいものにピッタリ合わせて塗らなくて大丈夫です)

ついでに「Save Mask」を押して今塗ったマスクを保存しておくと後で使いたいときに役立ちます。

そして OK ボタンを押し、画像生成を開始します。

 

写真から綺麗に男の子が消えました! 男の子で隠れていた椅子の残りの部分や後ろの景色も自然に補完されています!

Photoshop 的な画像編集が簡単にできて凄い…!!


photo of a wood chair -s 25 -S 393349116 -W 512 -H 512 -C 8.0 -A k_euler_a -M マスク画像 -f 0.5

※ちなみに、ソフト左画面の「Additional Input Data」の項目の右端のところにある「Show」チェックボックスを ON にすると、画像の描き変え前後の横並び表示で比較が可能になるので便利です。

 

通常モデルとの比較がこちら。(同じパラメータ・マスク指定範囲)

通常モデルでは Initialization Image Strength の値を最低値 (0.1) に指定して可能な限り画像を描き変えてもらおうとしても、男の子が消えきらなかったり消えた領域に変なものが写り込んだり不自然になります。

それに比べるとインペイント専用モデルはとても自然に画像中の物を描き変えられます。

 

椅子に座る男の子を猫に変えてみる

今度は先ほどの写真で男の子を消す代わりに猫にしてみました。(やさしいせかい)

プロンプトは次の通り指定しました。

photo of one red tabby cat sitting on a wood chair, detailed

今回は椅子に猫を座らせたいので、プロンプト中には「木製の椅子に座った茶トラ猫の写真」と指定しています。

 

人を消す場合と異なり、人→猫のような大きな描き変えを行う場合はなかなか良い画像が生成してくれませんでした。

数十枚生成して、次のような画像ができました。


photo of one red tabby cat sitting on a wood chair, detailed -s 25 -S 613850843 -W 512 -H 512 -C 8.0  -A k_euler_a -M マスク画像 -f 0.5

 

なお、インペイント専用モデルを使わない場合と比較した結果が次の通りです。

photo of one red tabby cat sitting on a wood chair, detailed -s 25 -S 613850843 -W 512 -H 512 -C 8.0 -A k_euler_a -M マスク画像 -f 0.6

通常のモデルで人→猫のような異なる物への描き変えを行うのはほぼ無理でした。(男の子のままです)

専用モデルではそれに比べればずっと良い結果が得られます。

Inpainting Model ( sd-v1-5-inpainting.ckpt ) の活用はとても夢が広がりますね…!!

その他留意事項

インペイント専用モデルを使用した場合は通常のモデルに比べてプロンプトの指定が少し反映されにくいみたいです。

しかしその一方で、プロンプトで与える情報が少なくても描き変え前の画像に描かれているものを認識し、それを踏まえて自然にを描き変えてくれます。

※参考:ソフト製作者さんによる簡易マニュアル

 

Convert Models

使い方

異なる形式のモデルを相互変換する機能です。

画面右上のレンチマークのボタン⑮をクリックし、「Convert Models」を選びます。

 

NMKD Stable Diffusion GUI:Convert Models 画面

Model Input Format「入力モデル形式」で変換前のモデルファイルの形式を選びます。

Model File「モデルファイル」で変換したいモデルファイルを選択します。

Model Output Format「出力モデル形式」で変換後のモデルファイルの形式を選びます。

Delete Input File If Successful「変換に成功したら入力したモデルファイルを削除」を必要に応じて ON にします。

左下の Convert!「変換!」ボタンを押すと変換が始まります。(私の環境での所要時間は1~2分ほどでした)

※ Pytorch ( ckpt/pt ファイル ), Diffusers, Diffusers ONNX, SafeTensors の4種の形式に対応しています。

使い道

AMD製GPUをお使いの方は Pytorch の .ckpt 形式のモデルファイルが使用できないので、.ckpt ファイルを Diffusers ONNX (Folder) に変換する必要があります。

メインの用途はこれになると思います。

また Web 上では Diffuser フォルダ形式でのモデル公開も行われているみたいで .ckpt ファイルが見当たらず .bin ファイルが代わりに入っているなんてことがありますが、恐らくそれは Diffusers (Folder) 形式なので Pytorch の .ckpt 形式 に変換すれば NMKD Stable Diffusion GUI でも使えるようになります。

 

その他の改善事項

※後日追記予定です。ページ上部の変更点リストには一通り記載しています。

特に、Dreambooth (オリジナルモデル作成機能) が VRAM メモリ制限 (24 GB 以上) を無視して実行できるようになったので、自分の VRAM 8 GB 環境でも実行できるか後で確認してみたいと思います。

パソコン相談も受付中(*・ᴗ・*) よろしければフォローお願いします(懇願)