今回はLoRAなどを作成する際に必要となるキャプション付けについての話です。
画像を読み込ませて自動で.txtファイルを書き出してくれる拡張機能も多いので、多くのLoRA作成記事で紹介されていることもあり、多くの方はdanbooruタグでキャプションを付けているかと思います。
アニメ系のベースモデルはdanbooruタグで学習されていることがほとんどなので、今まではそれでも良かったのですが、Animaという自然言語にも強いアニメ系モデルが登場したことにより、自然言語でのキャプション付けも必要となってきました。
ですが、自然言語での自動キャプション付けの記事は少なく、NSFWに対応しているものは更に少ないというのが現状です。
そこで目を付けたのがVLMです。
VLMとは、画像を読み込むとそれを言語で表現してくれるモデルです。モデルは品質の高いものが無料で配布されており、それをNSFWに対応させたモデルもあります。
なので今回は、このVLMを使ってdanbooruタグと自然言語を同時にキャプション付けする方法を書いていきます。
使用するツール
使用するツールは以下です。
この2つのツールと、任意のVLMモデルの導入が済んでいる事を前提として進めていきます。
LM Studioの設定
ComfyUIとLM Studioを連携させる為の設定をしていきます。
左側から「Developer」を開き、「Status:」のスイッチをONにしてください。

これでComfyUIと連携出来るようになります。
スポンサーリンク
使用するカスタムノード
使用しているカスタムノードは以下。
・ComfyUI-Custom-Scripts
・was-node-suite-comfyui
・ComfyUI-WD14-Tagger
・EA_LMStudio
LM Studio系のカスタムノードは他を使用しても問題ありませんが、思考ステップ(reasoning)と応答ステップ(response)を分けて出力出来るカスタムノードを使用してください。
思考ステップまで出力されてしまうとキャプションとして機能しなくなってしまいます。
例として、EA_LMStudioのノードと、他のカスタムノードで追加されるノードで出力をしてみました。

システムプロンプトで「自然言語でキャプションを付ける事。キャプション以外は書かない事」と指示しています。
EA_Studioの応答ステップ“response”から出力された結果が以下。
Could you describe the scene or subject you'd like a caption for?
EA_Studioの思考ステップ“reasoning”から出力された結果が以下。
User says "こんにちは" (Hello). We need to respond with a caption? The instruction: "Write captions for image generation AI models in natural language." But user didn't provide an image. Maybe we should ask for description? Probably respond asking what they want.
LM Studio (Text Gen)から出力された結果が以下。
<|channel|>analysis<|message|>Need to respond with caption only. But user said "こんにちは". Probably they want a caption? Maybe just reply greeting? But instruction: do not write anything other than the caption. So we need to produce a caption. Could be something like "A cheerful wave in a bright, sunny setting." Let's give a generic greeting caption.<|end|><|start|>assistant<|channel|>final<|message|>A friendly “hello” written in vibrant calligraphy against a soft pastel background.
このように思考ステップまで反映されてしまうとキャプションとして機能しません。
ワークフローの配布
以下がキャプション付け用のワークフローです。
スポンサーリンク
配布ワークフローの解説
ワークフローの全体図は以下。

数値を変更するノードは基本的に「設定」グループにあるノードだけです。
それぞれ解説していきます。



・Fast Groups Bypasser (rgthree)
キャプションに使用したいものを選んでください。
・トリガーワード
トリガーワードが必要な場合はこのノードに入力してください。
・Load Image Batch
複数の画像を順番に読み込むノードです。黄色で囲った部分に画像が保存されているパスを入力してください。
・画像を読み込む
基本的には使いませんが、もし1枚だけキャプションを付けたいという場合は、こちらのノードを使用してください。
・EA LM Studio
赤枠で囲った箇所で、使用するモデルを選択してください。
ComfyUIより先にLM Studioを起動しておかないと選択肢が出ないので注意してください。
設定が済んだら後は生成ボタンを押すだけですが、ここで注意することがあります。
Load Image Batchノードで指定したフォルダに入っている画像枚数と同じ実行数にしてください。
フォルダに入っている画像が50枚であれば、実行数も50です。
もし、画像枚数が150枚というように100枚を超える場合は、100と50に分けて2回実行してください。
また、画像ファイルの名前が長すぎたり、記号が含まれているとエラーが出る場合があるので、心配なら変更しておきましょう。
テキストファイルはComfyUIの出力フォルダに保存されるので、それを画像の入っているフォルダへ移動したらキャプション付けの完了です。
最後に
これで自然言語でのキャプションも自動で付けることが出来るようになりました。
これで自然言語のキャプションを使用したLoRAを作成しやすくなりましたね!
それでは!


コメント