MENU
お知らせバーです。

大量の衣装バリエーション画像をテキストファイルから一括生成する方法!

こんにちは、画像生成AIでひたすら猫のイラストを生成している じょじお(@jojio‗illust)です。

今回もStable Diffusionの記事です。

この記事では、キャラクターの衣装チェンジを超絶簡単爆速で実現する方法を紹介します。WebUIのスクリプト機能ChatGPTを組み合わせたら実現できました。

じょじお

いろいろな髪型や衣装があるけど、自分の好みがわからない。
そんなあなたに簡単に試着できる方法です。

この記事の対象者
  • Automatic1111 WebUIユーザー向け(PCでもColabでもOK)

▲AI画像の大量ファイルをプロンプトと一緒に簡単に整理する方法はこちら。

素材に関連する英単語100個以上まとめました。

すべてのプロンプト関連記事はこちらにまとめています。

▲Midjourneyユーザー向け。専用Discordサーバーを作って画像生成作業を効率化する方法。

目次

複数のプロンプトを同時に一括で実行したい!

Stable Deffusionで生成した画像
Stable Deffusionで生成した画像

画像生成AIを使って、オリジナルの二次元キャラの生成をしようと思ったとき、髪型や服装をどうしようか迷ったことないでしょうか。

私はありました。というか、女性の髪型の名前なんて全然知らなかったんです。

そこで、ChatGPTに下記のように聞いてみました。

じょじお

ChatGPTさん、色々な髪型の名前を英語で教えて。

▼すると、下記のようにたくさんの髪型の名前を教えてくれました。

ChatGTPに聞いた髪型一覧
ChatGTPに聞いた髪型一覧

さすがはChatGPTさん、いろいろな髪型を教えてくれました。

これを見た、わたしは、とりあえず実際にすべての髪型の画像を生成して見てみたいと思いました。

じょじお

ただ、これだけの数のプロンプトを手作業でやるの面倒・・・

じょじお

なんか自動化できないかなー、と思ったときに見つけたのが
テキストファイルから複数プロンプトを一括実行するWebUIの機能です。

テキストファイルから複数のプロンプトを同時実行する機能とは?

Stable Deffusionで生成した画像
Stable Deffusionで生成した画像

テキストファイルから複数プロンプトを実行する方法は、Automatic1111さんのWebUIの機能です。

この機能の名前は「Prompts from file or textbox」というようです。

Prompts from file or textboxは、ファイルかWebUI内のテキストボックスから、複数のプロンプトを一括実行します。

例えば下記のような3つのプロンプトを試したいとしましょう。

  1. 1girl, short hair
  2. 1girl, long hair
  3. 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の基本的な使い方をサクッと解説しますね。使い方は簡単です。

Prompts from file or textbox
Prompts from file or textbox

▲WebUIの右下の「Script」プルダウンの中から「Prompts from file or textbox」を起動します。

Prompts from file or textbox
Prompts from file or textbox

▲プルダウンの中の「Prompts from file or textbox」を選択します。

Prompts from file or textbox
Prompts from file or textbox

▲「List of prompt inputs」というテキストボックスが表示されるので、ここに複数のプロンプトを改行しながら書きます。

1つのプロンプトが長くなっても途中で改行しないでくださいね。改行すると次のプロンプトと認識されます。

じょじお

ネガティブプロンプトを使う時は、特殊な書き方をするから、それは後で解説しますね。

新人術師

え、いつものところに書いてもダメなの?

じょじお

うん。このスクリプトを使う時は、スクリプト内に書かないとダメなの。
いつものテキストボックスに書いても無視されるから注意ね。

Prompts from file or textbox
Prompts from file or textbox

▲生成ボタンを押せば画像が生成されます。1回のボタンクリックで異なるプロンプトの画像が生成できました。

ファイルから複数プロンプトを実行する方法

Prompts from file or textboxの使い方
Prompts from file or textbox

▲テキストファイルから実行することもできます。

事前にプロンプトやパラメータを書いたテキストファイルを用意して、そのファイルを上図の赤枠のところにドラッグアンドドロップすれば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に、投げる依頼文はこちら。

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からの回答
ChatGPTからの回答
じょじお

これをコピペしてテキストファイルを作ります。

テキストファイルの作成

スクリプトをコピペしたテキストファイル

▲ChatGPTのテキストファイルをメモ帳などのテキストエディタに張り付けます。図のように、文章と文章の間に1行ずつ空いてしまいましたが特に問題はありませんでした。びっしりと詰める必要はないようです。

張り付けたら保存します。保存場所とファイル名は自分のわかりやすいもので大丈夫です。

じょじお

1行につき1オーダーとしてみなされます。空白行は無視してくれますが、余分な文字が行に含まれている場合は、その文字をもとに画像が生成されます。ですので、それらは排除しておきましょう。

ChatGPTからの回答の注意点

ChatGPTからの回答は途切れるときがある。
ChatGPTからの回答は途切れるときがある。

▲ChatGPTからの回答は、上記のように途切れることがあります。これは文字数制限によることが多いようです。

途切れた状態のテキストをスクリプトに含めると、画像生成が失敗する可能性がありますので注意してください。

途切れた場合は、ChatGPTに「続きください」などと伝えれば、続きの回答をもらうことができます。

ファイル

じょじお

テキストファイルができたのでこれを、「Prompts from file or textbox」に渡してみます。

Prompts from file or textboxの使い方
Prompts from file or textboxの使い方

▲テキストファイルを図のところにドラッグアンドドロップです。

Prompts from file or textboxの使い方
Prompts from file or textboxの使い方

▲テキストファイルをドロップすると「List of prompt Inputs」と書かれたテキストボックスに、テキストファイルの内容が読み込まれます(ファイル化せずに最初からここにスクリプトをペーストしてもOK)。

じょじお

これで準備は完了です。Generateボタンを押して実行してみます。

Prompts from file or textboxの使い方
Prompts from file or textboxの使い方

▲生成すると、こんな感じで大量の画像を一括生成できます。

生成結果

画像プレビューも見てみましょう。

Stabledeffusionの画像 一括生成結果
Stabledeffusionの画像 一括生成結果

▲こんな感じで大量の髪型バリエーションを取得することができました。

ちなみに↑の図の画像ビューアーは、Eagleという画像管理ツールを使ってます。画像整理にめちゃくちゃ便利なので全AIユーザーにおすすめです。Stable Deffusionの専用拡張機能と組み合わせると、自動的にEagleにタグ付きで保存できます。気になる方は下記からチェックしてみてくださいね。

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のプロンプト紹介します。

「衣装」のバリエーションを大量生成する方法

コスチュームのバリエーション一括生成結果
コスチュームのバリエーション一括生成結果
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のところには、衣装や服装を表す英単語が入ります。スクリプトをたくさん作ってください。

「表情」のバリエーションを大量生成する方法

表情のバリエーション一括生成結果
表情のバリエーション一括生成結果
ChatGPTへの投げた質問

下記はとあるスクリプトの決まったフォーマットです。

–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のところには、表情を表す英単語が入ります。スクリプトをたくさん作ってください。

「髪型」のバリエーションを大量生成する方法

ChatGPTへの投げた質問

下記はとあるスクリプトの決まったフォーマットです。

–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です。

まとめ

以上、複数プロンプトを同時に実行する方法を紹介しました。

覚えておくとキャラクター生成を効率的に行えると思います。ぜひ活用してみてください。

じょじお

読んでくださってありがとうございます!この記事がお役に立てましたらシェアボタンからシェアしてくれたらうれしいです!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次