PR

ComfyUIでプロンプトをファイル名にして保存!ランダム生成を効率化する方法

ComfyUI
ユキ
ユキ

あれ?どこだっけ?

管理人
管理人

どうしたんだい?ユキ

ユキ
ユキ

この前教えてもらったランダム生成を試しているんだけど、どれがどのワードを使ったかわかんなくなっちゃった・・・

管理人
管理人

そういう時はファイルの保存に選択されたワードを使えばいいよ。

今回はランダム生成で選択されたワードをファイル名にして保存する方法を教えるね。

ComfyUIで画像を大量に生成していると、「この画像はどんなプロンプトで生成したんだっけ?」と分からなくなることがあります。

特に、{A|B|C}を使ったランダム生成や、ワイルドカードを利用して複数のパターンを一度に生成すると、画像が増えるほど管理が難しくなります。

例えば、同じキャラクターで「海辺」「カフェ」「公園」と背景だけを変更して生成した場合、

ComfyUI_00001.png
ComfyUI_00002.png
ComfyUI_00003.png

という名前で保存されているだけでは、画像を開かなければどのパターンなのか分かりません。

そこで今回は、ランダム生成で実際に選択されたプロンプトの一部を、画像のファイル名に反映して保存する方法を紹介します。

例えば、

beach_sunset_001.png
beach_cafe_002.png
tropical_resort_003.png

のように保存できれば、ファイル名を見るだけで、どのパターンで生成した画像なのか判断できます。

一部のプロンプトを変更して画像を何枚も生成する場合にも便利な方法なので、今回は実際のComfyUI環境を使って試していきます。

この記事でできること

この記事では、ComfyUIのランダム生成を利用して、選択されたプロンプトの一部をファイル名に含めて保存する方法を解説します。

最終的には、

ランダム生成
↓
実際に選択されたワードを取得
↓
画像を生成
↓
選択されたワードをファイル名に反映

という流れを作ります。

例えば、背景をランダムに変更するプロンプトとして、

{beach|cafe|park}

を使用した場合、

beach_001.png
cafe_002.png
park_003.png

のように保存できるようにします。

これなら、生成した画像を後から整理するときにも分かりやすくなります。

なぜプロンプトをファイル名にするの?

通常のComfyUIでは、生成した画像は連番などのファイル名で保存されます。

もちろん画像を見れば内容は分かりますが、大量の画像を生成していると、次第に管理が大変になってきます。

例えば、

ComfyUI_00001.png
ComfyUI_00002.png
ComfyUI_00003.png
ComfyUI_00004.png

という画像が20枚、30枚と増えていくと、それぞれの画像がどのプロンプトに対応しているのか確認するために、画像を一枚ずつ開く必要があります。

一方で、

beach_00001.png
cafe_00002.png
park_00003.png
resort_00004.png

のように保存されていれば、ファイル名だけである程度の内容を判断できます。

画像をSNSやブログなどで使用するときに、生成した画像とプロンプトの対応関係を分かりやすくしておくと便利です。

今回は、そのための仕組みをComfyUIで作ってみます。

ImpactWildcardProcessor

今回はワイルドカードを使用するため「ImpactWildcardProcessor」ノードを使用します。

シード値を統一する必要があるため、seedの入力がありテキスト出力があるノードであれば同様のことができるはずです。

ImpactWildcardProcessorのインストール

ImpactWildcardProcessorはComfyUI Impact Packに含まれています。拡張機能の管理から「ComfyUI Impact Pack」と検索しインストールしておきます。

ComfyUI Impact Packは他にも便利なノードが入った詰め合わせセットなので是非ともインストールしておきましょう。

ワークフローへの追加方法

今回使用するノードは

  • ImpactWildcardProcessor×2
  • シード

これだけです。

この二つのノード(合計3つ)を呼び出します。

「シード」ノードから二つの「ImpactWildcardProcessor」ノードに繋ぎます。ここではどちらかを区別するために便宜上、上から「ImpactWildcardProcessoA」と「ImpactWildcardProcessorB」と呼びます。また、どちらも設定値は「populate」です。

・ImpactWildcardProcessorA:ファイル名を出力するためのノードです。ここには「__○○__」や「{○○|△△|□□|}などを入力します。追加したいワードがあれば追加できます。

例えば画像では髪色のワイルドカードを使用していますからファイル名が「black hair_0001」や「blue hair_0002」となってしまいます。これを「キャラ名+髪色」でファイルを管理したければ、「キャラ名__髪色__」と入力します。

このノードの出力先は「画像を保存」ノードのファイル名の所です。

・ImpactWildcardProcessorB:普通のランダム生成や、ワイルドカードを使用したプロンプトを入力します。出力先は「CLIPテキストエンコード」です

・シード:このノードの設定は「fixed」以外であればかまいません。fixedではシード値が固定されて、同じプロンプトしか生成されません。

うまくいけばこのようになります。

まとめ

ユキ
ユキ

わーい、すごく見やすくなったよ!

管理人
管理人

連番だけだと分かりにくいからね

ユキ
ユキ

これで画像生成が捗るね♪

今回は、ComfyUIのImpactWildcardProcessorを使ったワイルドカード生成と、ランダムに選ばれたワードを生成画像のファイル名に反映する方法を紹介しました。

ランダム生成を使えば、服装や背景、表情などをランダムに組み合わせながら、さまざまなバリエーションの画像を効率よく生成できます。

さらに、選ばれたワードをファイル名に利用すれば、

school_uniform_beach_smile_00001.png
maid_cafe_happy_00002.png
kimono_flower_field_serious_00003.png

のように、ファイル名を見るだけで画像の内容を確認できるようになります。

特に大量の画像を生成する場合、単純に連番で保存するよりも、後から画像を探したり比較したりする作業が圧倒的に楽になります。

ComfyUIでワイルドカードを活用するなら、「ランダムに生成する」だけでなく、「生成した画像を分かりやすく管理する」ところまで自動化するのがおすすめです。

ぜひワイルドカードとファイル名の自動化を組み合わせて、ComfyUIでの画像生成をさらに効率化してみてください。

コメント

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