大量の衣装バリエーション画像をテキストファイルから一括生成する方法!
こんにちは、画像生成AIでひたすら猫のイラストを生成している じょじお(@jojio‗illust)です。
今回もStable Diffusionの記事です。
この記事では、キャラクターの衣装チェンジを超絶簡単爆速で実現する方法を紹介します。WebUIのスクリプト機能とChatGPTを組み合わせたら実現できました。
いろいろな髪型や衣装があるけど、自分の好みがわからない。
そんなあなたに簡単に試着できる方法です。
- Automatic1111 WebUIユーザー向け(PCでもColabでもOK)
▲AI画像の大量ファイルをプロンプトと一緒に簡単に整理する方法はこちら。
▲素材に関連する英単語100個以上まとめました。
▲すべてのプロンプト関連記事はこちらにまとめています。
▲Midjourneyユーザー向け。専用Discordサーバーを作って画像生成作業を効率化する方法。
複数のプロンプトを同時に一括で実行したい!
画像生成AIを使って、オリジナルの二次元キャラの生成をしようと思ったとき、髪型や服装をどうしようか迷ったことないでしょうか。
私はありました。というか、女性の髪型の名前なんて全然知らなかったんです。
そこで、ChatGPTに下記のように聞いてみました。
ChatGPTさん、色々な髪型の名前を英語で教えて。
▼すると、下記のようにたくさんの髪型の名前を教えてくれました。
さすがはChatGPTさん、いろいろな髪型を教えてくれました。
これを見た、わたしは、とりあえず実際にすべての髪型の画像を生成して見てみたいと思いました。
ただ、これだけの数のプロンプトを手作業でやるの面倒・・・
なんか自動化できないかなー、と思ったときに見つけたのが
テキストファイルから複数プロンプトを一括実行するWebUIの機能です。
テキストファイルから複数のプロンプトを同時実行する機能とは?
テキストファイルから複数プロンプトを実行する方法は、Automatic1111さんのWebUIの機能です。
この機能の名前は「Prompts from file or textbox」というようです。
Prompts from file or textboxは、ファイルかWebUI内のテキストボックスから、複数のプロンプトを一括実行します。
例
例えば下記のような3つのプロンプトを試したいとしましょう。
- 1girl, short hair
- 1girl, long hair
- 1girl, asymmetric bob
通常のオペレーションですと、「1のプロンプトをGenerateボタンで実行し、1のプロンプトを消すて2のプロンプトを入力して、Generateボタンで実行して・・・」というステップになるかと思います。
ところが、Prompts from file or textboxならば、予め複数のプロンプトを列挙したスクリプトを作っておけば、ワンボタンでまとめて実行できる、というのがメリットです。
でも、スクリプト書くのダルくね?
うん。だから、そこをChatGPTさんに手伝ってもらうのです。
どういうこと?
スクリプトをChatGPTに作ってもらうのよ。
ほえーー
「Prompts from file or textbox」の使い方
テキストボックスから複数プロンプトを実行する方法
まずは、Prompts from file or textboxの基本的な使い方をサクッと解説しますね。使い方は簡単です。
▲WebUIの右下の「Script」プルダウンの中から「Prompts from file or textbox」を起動します。
▲プルダウンの中の「Prompts from file or textbox」を選択します。
▲「List of prompt inputs」というテキストボックスが表示されるので、ここに複数のプロンプトを改行しながら書きます。
1つのプロンプトが長くなっても途中で改行しないでくださいね。改行すると次のプロンプトと認識されます。
ネガティブプロンプトを使う時は、特殊な書き方をするから、それは後で解説しますね。
え、いつものところに書いてもダメなの?
うん。このスクリプトを使う時は、スクリプト内に書かないとダメなの。
いつものテキストボックスに書いても無視されるから注意ね。
▲生成ボタンを押せば画像が生成されます。1回のボタンクリックで異なるプロンプトの画像が生成できました。
ファイルから複数プロンプトを実行する方法
▲テキストファイルから実行することもできます。
事前にプロンプトやパラメータを書いたテキストファイルを用意して、そのファイルを上図の赤枠のところにドラッグアンドドロップすればOKです。
参考
ChatGPTを使ったテキストファイルの作成方法
さて、「Prompts from file or textbox機能」に渡すスクリプトファイルをChatGPTに作ってもらおうって話なんだけど。
うん。
その前に、スクリプト内で使えるパラメータの話もしておくよ。
スクリプトには、プロンプトだけではなく、ネガティブプロンプトや各種パラメータもそれぞれ個別に指定することができるの。
じゃあプロンプト毎に、サンプラー変えたり、縦横比変えたりできるんだ?
そう。それらをパラメータを使って記述するんだ。書き方を説明するね。
テキストファイルのフォーマット(スクリプトの構文)
サンプラーや縦横比などの各種設定は、下記のパラメータを使って記述します。
使用できるパラメータはこちら
"sd_model", "outpath_samples", "outpath_grids", "prompt_for_display", "prompt", "negative_prompt", "styles", "seed", "subseed_strength", "subseed",
"seed_resize_from_h", "seed_resize_from_w", "sampler_index", "sampler_name", "batch_size", "n_iter", "steps", "cfg_scale", "width", "height",
"restore_faces", "tiling", "do_not_save_samples", "do_not_save_grid"
パラメータの後に半角スペースを空けてダブルクォーテーションで囲って値を渡します。
例えば、ネガティブプロンプトを指定するときは、--negative_prompt "low quality, error"
のように–negativ_promptの後ろに半角スペースを空けてネガティブプロンプトに含めたいワードをダブルクォーテーションで囲って記述します。
ちょっとややこしいので、下記に例を載せます。
サンプルオーダー1
- プロンプト:a girl, bob hair, looking at viewer
- ネガティブプロンプト:(EasyNegative:1.2), cropped, error
- サンプラー:DPM++ SDE Karras
- 画像の縦幅:400px
- 画像の横幅:400px
- バッチサイズ:2(2枚のバリエーションを同時に出力)
上のサンプルオーダーを、スクリプトの構文を使って表現したのが下記のスクリプトです。
▼オーダー1のスクリプト
–prompt “a girl, bob hair, looking at viewer” –negative_prompt “(EasyNegative:1.2), cropped, error” –width 400 –height 400 –batch_size 2 –sampler_name “DPM++ SDE Karras”
パラメータは、「–prompt」だけは必須で、あとは全部使う必要はないです。順番も気にする必要はありません。
パラメータに渡す値は、数字に限り、ダブルクォーテーションは不要です。ただし、シード値は文字列扱いになっている気がするからダブルクォーテーションが必要かもしれません。確認してみてください。
ChatGPTでスクリプトを作成する。
さて、スクリプトの構文を理解したところで、まずベースとなるスクリプトを下記のように作ってみたよ。
–prompt “a girl, HAIRSTYLE” –negative_prompt “(EasyNegative:1.2)” –width 400 –height 400 –batch_size 2
ChatGPTに、このスクリプト内の「HAIRSTYLE」のところにいろんな髪型を入れてもらって、大量のスクリプトを作ってもらおうという算段です。
なるほど!
ChatGPTに、投げる依頼文はこちら。
下記はとあるプログラムの決まったフォーマットです。
–prompt “a girl, HAIRSTYLE” –negative_prompt “(EasyNegative:1.2)” –width 400 –height 400 –batch_size 2
HAIRSTYLEのところに、髪型の英語の名詞が入ります。髪型の名前をたくさん入れてみてください。
すると、下記のような回答を得ることができました。
–prompt “a girl, bob” –negative_prompt “(EasyNegative:1.2)” –width 400 –height 400 –batch_size 2
–prompt “a girl, pixie cut” –negative_prompt “(EasyNegative:1.2)” –width 400 –height 400 –batch_size 2
–prompt “a girl, afro” –negative_prompt “(EasyNegative:1.2)” –width 400 –height 400 –batch_size 2
–prompt “a girl, short hair” –negative_prompt “(EasyNegative:1.2)” –width 400 –height 400 –batch_size 2・
・
(以下省略)
ChatGPTからの回答
おーすごい。いろんな髪型のスクリプトがたくさん生成されてる!
狙い通りだね。
もう少し、要求してみました。
これをコピペしてテキストファイルを作ります。
テキストファイルの作成
▲ChatGPTのテキストファイルをメモ帳などのテキストエディタに張り付けます。図のように、文章と文章の間に1行ずつ空いてしまいましたが特に問題はありませんでした。びっしりと詰める必要はないようです。
張り付けたら保存します。保存場所とファイル名は自分のわかりやすいもので大丈夫です。
1行につき1オーダーとしてみなされます。空白行は無視してくれますが、余分な文字が行に含まれている場合は、その文字をもとに画像が生成されます。ですので、それらは排除しておきましょう。
ChatGPTからの回答の注意点
▲ChatGPTからの回答は、上記のように途切れることがあります。これは文字数制限によることが多いようです。
途切れた状態のテキストをスクリプトに含めると、画像生成が失敗する可能性がありますので注意してください。
途切れた場合は、ChatGPTに「続きください」などと伝えれば、続きの回答をもらうことができます。
ファイル
テキストファイルができたのでこれを、「Prompts from file or textbox」に渡してみます。
▲テキストファイルを図のところにドラッグアンドドロップです。
▲テキストファイルをドロップすると「List of prompt Inputs」と書かれたテキストボックスに、テキストファイルの内容が読み込まれます(ファイル化せずに最初からここにスクリプトをペーストしてもOK)。
これで準備は完了です。Generateボタンを押して実行してみます。
▲生成すると、こんな感じで大量の画像を一括生成できます。
生成結果
画像プレビューも見てみましょう。
▲こんな感じで大量の髪型バリエーションを取得することができました。
ちなみに↑の図の画像ビューアーは、Eagleという画像管理ツールを使ってます。画像整理にめちゃくちゃ便利なので全AIユーザーにおすすめです。Stable Deffusionの専用拡張機能と組み合わせると、自動的にEagleにタグ付きで保存できます。気になる方は下記からチェックしてみてくださいね。
\ 30日間 無料で使える! /
「Prompts from file or textbox」のオプション
この機能には下記のオプションもあるよ。
Iterate seed every line:連番シード値
「Iterate seed every line」オプションのチェックをオンにすると、シード値を連番で生成することができます。
Use same random seed for all lines:シード値の固定
「Use same random seed for all lines」オプションのチェックをオンにすると、すべてのプロンプトに同じシードを使うことができます。
自分で決まったシードを使いたい場合は、seedパラメータを使ってプロンプトに記述することもできます。
シード値固定すれば「ウチの子」のバリエーション生成も簡単。
▲シード値を固定すればいろいろな表情・衣装・髪型のバリエーション画像を簡単に一括生成できます。
ChatGPTによるスクリプト作成の応用
ChatGPTの使い方次第では、他にも使えそうです。
いくつかChatGPTのプロンプト紹介します。
「衣装」のバリエーションを大量生成する方法
下記はとあるスクリプトの決まったフォーマットです。
–prompt “masterpiece, best quality, portrait of a girl, COSTUME” –negative_prompt “(EasyNegative:1.2), nsfw, undressed, nipples partial head, partical face, cropped, cropped head, realistic” –width 504 –height 756 –batch_size 1
COSTUMEのところには、衣装や服装を表す英単語が入ります。スクリプトをたくさん作ってください。
「表情」のバリエーションを大量生成する方法
下記はとあるスクリプトの決まったフォーマットです。
–prompt “masterpiece, best quality, a girl, EXPRESSION, face shot” –negative_prompt “(EasyNegative:1.2), nsfw, undressed, nipples partial head, partical face, cropped, cropped head, realistic” –width 400 –height 400 –batch_size 1
スクリプト内のEXPRESSIONのところには、表情を表す英単語が入ります。スクリプトをたくさん作ってください。
「髪型」のバリエーションを大量生成する方法
下記はとあるスクリプトの決まったフォーマットです。
–prompt “masterpiece, best quality, a girl, HAIRSTYLE, face shot” –negative_prompt “(EasyNegative:1.2), nsfw, undressed, nipples partial head, partical face, cropped, cropped head, realistic” –width 400 –height 400 –batch_size 1
HAIRSTYLEのところに、髪型の英語の名詞が入ります。スクリプトをたくさん作ってください。
使い方
ChatGPTのテキストボックスにコピペして使えます。要望に合わせて適当に改変してください。
あとから「バッチサイズを2にして」というとちゃんと変換してくれました。応用が利きそうです。
完璧なプロンプトではないので、まれにChatGPTとの意思疎通に失敗するときがあります。その場合は、何度か同じ質問を投げると成功することがあります。または、ご自身でより完璧なプロンプトになるようにカスタムしてみてください。
変数を増やせば、ランダムキャラを大量に作れたりもできそうですね。ゲームのモブキャラの量産なんかができそう。
類似機能
呪文研究をしたい人向け
WebUIでは、上で紹介した「Prompts from file or textbox」と似た機能に、x/y/z plotの「prompt S/R」という機能があります。
「Prompts from file or textbox」は、単純にプロンプトを順番に実行していくだけですが、x/y/z plotは、生成結果をマトリクス表にしてくれます。
プロンプトを変化させた時の違いを研究する場合は、こちらの方が便利かもしれません。
▲x/y/z plotの使い方はこちら。
ランダムバリエーションを生成したい人向け
ランダム生成する場合は、Dynamic promptsという拡張機能もおすすめです。
Dynamic promptsは、定義済みリストの中から、ランダムに言葉を選択してプロンプトを作り、画像を生成します。
補足
「Prompts from file or textbox」機能を実行する場合、WebUI上の通常のプロンプト用テキストボックスやネガティブプロンプト用テキストボックスに言葉が入力されていても、それらは無視されます。
ただ、Width、Height、サンプラーなどのパラメータは、スクリプト内に記述しなければ、WebUIで設定されている値を使えました。
このため共通の設定は、あえてスクリプト内に書かずに、WebUIから設定した方が、あとからパラメータを変化させたい時に楽です。
それと、いつも通り、通常のプロンプトから生成に戻りたい時は、「script」のプルダウンリストを「none」に戻せばOKです。
まとめ
以上、複数プロンプトを同時に実行する方法を紹介しました。
覚えておくとキャラクター生成を効率的に行えると思います。ぜひ活用してみてください。
読んでくださってありがとうございます!この記事がお役に立てましたらシェアボタンからシェアしてくれたらうれしいです!
コメント