ドーモ、皆さんは画像生成している時、以前に作成した画像のプロンプト探すのが煩わしかったりいくつかのプロンプトからランダムで選出してくれないかなぁ…と思ったことありませんか、comfyui上でノードを組み合わせれば出来る事は出来ますがノードの量が多くなってしまうし何より面倒です…………ので作りました!一つのノードで分割、ランダム、選択してさらに好きな数のトークン(プロンプト)を選出してくれます!さらにさらにパッと見ただけで分かりやすく管理できるように工夫することも出来ます!下で詳しく説明します
mel_TextSplitNode

・まず分割する方法は2つあり、ひとつはdelimiterで指定した文字や記号で分割する方法、もう一つは画像の様に1: 2: …と数字の後ろに:と入れる方法の2つです、これらは併用することができます、このノードではトークンごとに内部で数字が割り振られていて一つ目の方法で分割したものは余っている数字から順に割り振られます、余っているというのは二つ目の方法で数字を指定して分割しているからです画像では2.3.5が指定して分割されています、なのでwalkingには1、smileは4になります、6:の中身は空なのでこの場合はトークンとして扱いません、
また行の先頭に#が付いている場合その行はコメントとして処理されトークンからは除外されます、行の途中についている場合そこから後ろが除外されますテキスト内に長いプロンプトのメモ書きなど残しておくのに便利です(例えば行の間に何番から何番はこんな感じのプロンプト~だとかプロンプトの最後に、~を出力するためのプロンプトだとか一言メモを残しておきたい時に使えます)
・max_outputsは出力するトークンの数です例えば3なら3つ出力されます(因みに複数出力された場合は自動でトークンの間に,を打って出力するようになってます)
・random_selectはfalseの場合は順番にtrueの場合はランダムに出力します
・selected_numberでは出力するトークンを数字で指定します、また複数指定することもでき、例えば 1 4 5といった風に数字の間に半角スペースを空けます(maxの値より多い場合maxの値は無視されます)また、maxが3で選択した数字が一つの場合randomがfalseの場合は選択したトークンのみを、trueの場合は足りない分をランダムで選出します
シード値がそのままの場合は同じ出力になります
mel_TextSplitNode2

上記のノードにテキストボックスを一つ増やしたものですが仕様が少し違います、まずテキスト1、2で選出したものを半角スペースで繋げて出力します、(自分は画像の様にランダムで髪色と髪型を出したいときなどに使用しています)、また注意点としてこのノードでは上記のノードとは違い、選択した数字の数がmaxの値より多くてもmaxの分しか出力しません、そして選択した数字が画像の様にテキスト1が4 3,テキスト2が 6 の場合3と6は常にセットで選出されるようになります、またトークンの数がmaxの値より少ない場合は同じものから選ばれるようになります、そしてrandomがtlueの時は上記のノードと同様ですがfalseの時maxの値が2以上の場合連番の数字が無作為に選ばれます
mel_TextFilterNode
このノードは「filter_values」で設定した数字と同じ数字が「filter_number」に入力された場合、空テキストを出力し、それ以外の場合接続されたテキストをそのまま出力します主にTextSplitNodeを2つ以上使用している時、特定のプロンプトの場合はこっちの方は出力して欲しくない時などに使用します
mel_RandomIntNode
1から100までの好きな値を上限とするint型の値を出力します、値はランダム、インクリメントまたは上限値の値をそのまま出力するかを選択できます
ResolutionSwitcher

予め決められたwidthとheightの値を出力します、switchがtrueの場合widthとheightの出力を逆にします(このノードはwan2.1を使っている時に解像度の変更する時、都度入力するのが面倒だったので作成しました)
最後に
説明は以上で終わりです!いかがでしょうか、長文のプロンプトなども一つのトークンとして使用できるので一つのノードに長文のプロンプトを配置して別のノードで細かいプロンプトをお気に入りのプロンプト群に僅かな変化を付けていくといったことも可能です、色々組み合わせて試してみてください!comfy managerでComfyUI_Mel_Nodesを検索するか、以下のコードをカスタムノードが格納されているディレクトリで使用することで適用できます!
git clone https://github.com/nako-nakoko/ComfyUI_Mel_Nodes.git
それではまた
(カスタムノード名のmelは差別化のために適当につけただけで特に意味はないです)
コメント