プロンプトをボタンに記憶する拡張機能「easy-prompt-selector」紹介(stable diffusion)

キャラクター情報、背景、小道具やアイテム等のプロンプトを個別に覚えるのは手間が掛かります。

生成した画像に保存されるプロンプト内容は応用が効きづらいし、
stable diffusionに備わってるプロンプト保存欄も、内容が増えてくると使い辛くなりますね。

そんな問題に役立つ拡張機能「easy-prompt-selector」を紹介します。

プロンプトを保存するYMLファイルの組み方と、
chatGPT3.5を使って数十のプロンプトを一気に変換するやり方も紹介してます。

機能紹介

easy-prompt-selectorは拡張機能側にプロンプトを記憶させます。
プロンプトを記憶させる事で

  • キャラクター情報、背景、小道具、ポーズなどを個別に保存する
  • 目的のプロンプトをボタン1つで呼び出す
  • YMLファイルの組み方を理解すると出来る事の幅が広がる

などなど、stable diffusionの活動に大きく活躍してくれます。

導入方法

GitHub - blue-pen5805/sdweb-easy-prompt-selector
Contribute to blue-pen5805/sdweb-easy-prompt-selector development by creating an account on GitHub.

上記のGitHubからgit codeをコピーします。

Codeを押して展開してからコピーを押します。

stable diffusion Web UIのextensionsタブから
install from URLを選択しgit codeを張り付けてinstallを押します。

installedタブからのapply and restart UIを押してWeb UIを再起動します。

再起動してエラーが表示された場合はwebui-userから再起動してください。

使い方

Web UIを起動できたら、生成画面にこのようなボタンが追加されてます。

タグを選択」ボタンを押して下の「なし」が出たり消えたりすると導入は成功です。

「なし」の部分には、

\extensions\sdweb-easy-prompt-selector\tags

という場所で保存されてるymlファイルの名前が表示されます。

※表示される内容は初期状態と違うかもしれません

黒文字で表示されてるのが「名前を付けたプロンプトのボタン」です。
色合い等のシンプルなプロンプトや、キャラクター情報などの長いプロンプトまで保存できます。

オレンジ色で表示されてるのは「ランダム化ボタン」です。
このボタンを押して表示された@で挟まれたコマンドが、
生成した時にプロンプトをランダムに1つ選びます。

この場合、@人_顔:目:色@が「目の色をランダム化するコマンド」となります。

名前を色だけにする事で、表示をシンプルに出来るのもこの機能の良い所です。

例えば髪型だと「ヘアー」を抜いて
ロング、ミディアム、ベリーショート、ポニーテール、ツインテール。と縮める事も。

初期状態では内容が少ないので、自分がどう使うか
目的に応じて追加・変更していく必要があります。

ymlファイルの見かた

先ほどの人_顔のymlファイルで説明していきます。

構成ルールをそれぞれ説明していきます。

・まず一番上の行「目:」(セミコロンと間違えないよう)
ここでプロンプトのジャンルやカテゴリを自分で分かりやすいタイトルにします。

・次の行「 色:」(半角スペース2つ+色:)
一つ上の行から更に細分化し、より正確な内容・名前で分けます。

一応「 色:」の有る2段目からプロンプトを記憶させる事は出来ますが、
今回は2段目をカテゴリ3段目をプロンプトにする方向で紹介します。

・次の行から続く「 黒: black eyes」(半角スペース4つ+黒:+半角スペース+black eyes)
この「半角スペース+black eyes」がプロンプトを記憶させる部分となります。

ymlファイルの作り方

名前を付けてymlファイルを保存する手順を紹介します。

  • メモ帳などのテキストアプリを新規作成で開きます。
  • 「名前を付けて保存」で保存先をstable diffusionフォルダの中にある
    \extensions\sdweb-easy-prompt-selector\tagsにします。
stable diffusionフォルダからファイル場所の後ろに貼り付けでも行けます
  • 自分が分かるようファイル名を付けます。
    顔、髪型、キャラクター、ポーズなどなど。
  • ファイル名の末が「.txt」になってるのを「.yml」に変えて保存します。

既存のymlファイルに変更を加える場合は、最初に左クリックで選んだら
右クリックして「プログラムから開く」「メモ帳」を指定します。

プロンプトを記憶させる

ymlファイル保存が出来たら、構成ルールに従って内容を追加していきます。

カテゴリ分け1段:
  カテゴリ分け2段:
    プロンプト名1: prompt 1
    プロンプト名2: prompt 2
    以下、構築例
    赤髪: red hair
    青髪: blue hair

カテゴリとプロンプトを追加していきます。1行で1000文字の背景情報も保存できます。

1行にまとめるためBREAK構文は使えません。
トークン数を切り替えたい時は「,」と半角スペースで埋めます。

chatGPT3.5でymlファイル用テキストに変更する

色や髪型など「シンプルだけど数が多くて構成ルールが大変」という方のために

chatGPT3.5で使える変更の命令文を用意しました。

次のコードを記憶してください。解答はこのコードに従った文だけにしてください。
{
def change_rule(english):
  """
  入力された英語を「半角スペース2つ」「日本語訳」「:」「半角スペース1つ」「入力した英語」の1行に変更する。

  Args:
    english: 入力された英語

  Returns:
    変更後のテキスト
  """

  japanese = translate(english, "ja")
  return "    " + japanese + ":" + " " + english
}

こちらが入力した複数の英語(プロンプト)を下から2番目の通り

半角スペース4つ+日本語+:(コロン)+半角スペース1つ+入力した英語の1行へ変更

次の回答から英語で入力したプロンプトを組み変えてくれます。

変更ルールが適応出来てるか確認します。

次を変更してください
polo shirt
blouse
camisole
hot pants
corset

上のコード、それ以外にも他にもいくつか入力します。
回答の半角スペースの数もしっかり確認します。

    ポロシャツ: polo shirt
    ブラウス: blouse
    キャミソール: camisole
    ホットパンツ: hot pants
    コルセット: corset

拡張機能dynamic promptsのwildcardsのように一括で入ってるプロンプト。
chatGPTから一覧形式で出力した内容など、
この変更ルールに通す事でymlファイル用テキストにしてくれます。

ymlファイル構成の注意点

ymlファイルはいくつかの注意点があります。

・構成に注意
改行や半角スペースを間違えるとエラーを吐いたり

赤髪
赤髪
のようにボタンの名前が重複すると動かなくなります。
赤髪1
赤髪2
など、重複だけはさせないよう注意してください。

dynamic Promptsで使う|記号(パイプライン)などもエラーが出ます。

・カテゴリ分けはランダム機能がカテゴリ2段まで対応してます。
半角スペースの数が6つの、3段以上の細分化した作りにするとランダム機能が一部止まります。

ymlファイルの配布

このブログでも紹介してる衣装プロンプトを纏めたymlファイルです。

個人ブログからのダウンロードは不安と感じる方のために、noteの配布ページを掲載してます。

(AIイラスト)easy-prompt-selector用ファイル、第2弾配布(stable_diffusion)|キレネ・ブログも活動中です
こんにちは。こんばんは。キレネです。 今回はこれまで記事に纏めたジャケットからウェディングドレスまでを入れたYMLファイルの配布・第2弾です。最後に個人ブログとnoteでの今後の活動について少し話します。 これまでの服・衣装プロンプトの記事...

解凍したフォルダ内のファイル2つを
\extensions\sdweb-easy-prompt-selector\tagsに移してWeb UIを再起動します。

プロンプトと内容については、記事一覧からご覧ください。

最後に

今回は便利な拡張機能「easy-prompt-selector」の導入と使い方、
chatGPT3.5から無料で使えるymlファイル用の変更ルールを紹介しました。

ymlファイルはエラーを起こす構成条件がいくつもあるためハードルは少し高いですが、
使いこなせたらプロンプトをより快適に切り替える事が出来ます。

AIイラスト生活がより楽しくなる手助けになりますように。

コメント

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