【画像生成 AI】 ComfyUI-easygoing-nodes を公開! SDXL のプロンプト解析の改良と LAB 色補正
はじめに
こんにちは、きまま / Easygoing です。
今回は、ComfyUI のカスタムノードパックの ComfyUI-easygoing-nodes を公開したのでご紹介します。
メインは SDXL のプロンプト解析の改良
ComfyUI-easygoing-nodes には、次の3つの機能が含まれています。
SDXL のプロンプト解析の試作改良
HiDream のテキストエンコーダーの処理を CPU で行う
色補正 やその他のカスタムノード
それぞれについて、順番に見ていきます。

1.CLIP-G のプロンプト解析の処理
SDXL には、次の2種類のテキストエンコーダーが搭載されています。
CLIP-L(軽量・短文を理解)
CLIP-G(高性能・長文を理解)
CLIP-L と CLIP-G は、それぞれが別々にプロンプトを解析していて、プロンプトを入力すると次のような処理が行われます。
入力プロンプト
cat, cute, sleeping
CLIP-L の解析(イメージ)
cat, cute, sleeping <終了>
CLIP-G の解析(イメージ)
cat, cute, sleeping<空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空><空>
CLIP-L は、短文を解析するため、終了のタグ が決められています。
一方で、CLIP-G は本来は長文を解析するため、終了のタグは使わず 開いた部分は<空>のタグ で埋められていきます。
これは CLIP-G と SDXL の仕様に基づいた正しい実装 なのですが、短いプロンプトを入力する場合(特に、タグ入力のアニメモデルの Negative Prompt など)、<空>が多く存在するため 意味のある単語から注意が分散してしまう 可能性があります。
CLIP-G にも、シンプルに理解させる
そこで、CLIP-L のシンプルな解釈を CLIP-G にも適用してみます。
具体的には、ComfyUI/comfy/sdxl_clip.py というファイルを、shiba*2 さんが公開されている修正版に差し替えてみます。
なお、同じく CLIP-G を利用する Stable Diffusion 3.5 と HiDream も この sdxl_clip.py を呼び出して使っているので、これらのモデルを利用する場合も違いが生じてきます。
実際のイラストで比較!
オリジナルの sdxl_clip.py

試作改良版の sdxl_clip.py

画像の一致率:99 ~ 99.5 %

画像比較ツール
イラストには確かに違いがあり、どちらが優れているか 優劣はつけ難い ですが、下の表現が気にいるようであれば、試作改良版を使ってみても良いと思います。
sdxl_clip.py の試作改良版は、ComfyUI-easygoing-nodes をインストールすれば自動で適用 されるので、その後の操作は必要ありません。
2.カスタムノードの追加
ここから、ComfyUI-easygoing-nodes で追加したカスタムノードについてご紹介します。
LAB 色空間での色補正
HDR Effects with LAB Adjust

HDR Effect with LAB Adjust ノードは、LAB 色空間 で色の補正を行うカスタムノードです。
画像生成で扱う PNG 画像は、通常は RGB 色空間 で処理を行いますが、これを LAB 色空間 に変換して明るさと色の調整を行います。
RGB 色空間

RGB 色空間では、Red(赤)、Green(緑)、Blue(青)の3つの原色を組み合わせて色を表現しています。
RGB 色空間では、明るさは RGB の合計値 で決まります。
そのため、RGB 色空間では 色を変えると明るさも変化 してしまい、また逆に 明るさを変えると色も変わって しまいます。
LAB 色空間

それに対して、LAB 色空間は 明るさと色を別のチャンネル に分けて処理します。
LAB 色空間では、明るさと色が互いに影響することなく、それぞれ個別に調整することができます。
各設定値の意味
HDR Effect with LAB Adjust ノードには、次の設定値があります。

明るさの調整
hdr_intensity: 明るさ調整の強さ
shadow_intensity: 暗い色を落とす
highlight_intensity: 明るい色を上げる
gamma_intensity: 全体を暗くする
色の調整
ab_strength: 色調整の強さ
a_adjustment: 緑 ⇔ 赤 の調整
b_adjustment: 青 ⇔ 黄 の調整
最終仕上げ
contrast: コントラスト
enhance_color: 彩度(色の濃さ)の調整

HDR Effect with LAB Adjust ノードは、デフォルトの設定値だと、
暗い色を強調して コントラストを上げる
肌色をターゲットに 少し赤みを加える
画像生成 AI 特有の 黄色っぽさを軽減する
する設定になっています。
実際のイラスト
それでは、実際のイラストで比べてみます。
HDR Effect wuth LAD Adjust ノードは単独でも効果はありますが、以前に紹介した ComfyUI-SuperBeasts の AI 自動色補正 と組み合わせるとさらに良い結果が得られることが多いので、合わせて利用することをオススメします。
オリジナル

AI 自動色補正(Super POP)

HDR 補正(HDR Eddects with LAB Adjust)

ワークフロー
今回の色補正で使ったワークフローです。

Save Image With Prompt
次は、Save Image With Prompt ノードをご紹介します。

filename_prefix:ファイル名
positive_prompt
negative_prompt
caption:画像のキャプション
numbers:ファイル名末尾の連番の有無
Save Image With Prompt ノードは、PNG 画像に、positive_prompt, negative_prompt, caption のメタデータをつけて保存します。
caption は、CLIP-Vision や Florence-2 モデルなどを使って、自動でキャプションをつけて保存するケースを想定しています。
numbers はファイル名末尾の連番の有無を表していて、true でデフォルトと同じ動作、False にすると 連番を省略 します。
サンプルワークフロー

参考:XnView MP(画像一括管理・編集ソフト)での表示画面

メタデータを閲覧できるアプリがあれば、ComfyUI を開かずに prompt, caption の内容を確認することができます。
D2 Load Image で prompt を呼び出す
D2-nodes-ComfyUI を公開している だにえる さんに、Save Image With Prompt ノードで保存した positive_prompt と negative_prompt のメタデータの呼び出しに対応していただきました。
D2 Load Image ノードを使うと、簡単に 過去のプロンプト を再利用することができます。

D2-nodes-ComfyUI には、ワークフローを見やすくして便利にする カスタムノードが多数収録されているので、みなさんもぜひ試してみて下さい。
D2 Regex Replace ノードの紹介
ComfyUI-easygoing-nodes のインストール方法
最後に、ComfyUI-easygoing-nodes のインストール方法をご紹介します。
ComfyUI-easygoing-nodes は、通常のカスタムノードと同じく、ComfyUI-Manager からインストールすることができます。
ComfyUI-Manager を使用(推奨)

ComfyUI-Manager で「easygoing」で検索すると、一覧に Easygoing Nodes が表示されます。
手動でインストール
手動でインストールする場合は、custom_nodes フォルダ内で次のコマンドを実行します。
git clone https://github.com/easygoing0114/ComfyUI-easygoing-nodes.gitComfyUI 起動時の ComfyUI-easygoing-nodes の読み込みの確認
ComfyUI の起動時に、ComfyUI-easygoing-nodes が正常に読み込まれると、次のログが表示されます。

このログが表示されていれば、CLIP-G 試作改良版 と HiDream のテキストエンコーダーの処理は正しく行われています。
まとめ:ComfyUI-easygoing-nodes を使ってみよう!
CLIP-G の処理の試作改良版
HiDream のテキストエンコーダーを CPU で処理
LAB 色補正を行うノード
今回、ComfyUI のカスタムノードを初めて作りましたが、その柔軟な実装方法に驚きました。
オリジナルのノードが作れることはもちろん、ComfyUI 本体の実行ファイルを、オリジナルのファイルを保ったまま修正版に置き換える ことができるので、元の環境を壊すことなく ComfyUI を改造できることが分かりました。

ComfyUI の本体はミニマムを追求し、コミュニティの自由な開発を促すエコシステム は、本当によくできていると思います。
なお、今回 ComfyUI-easygoing-nodes の公開にあたり、快くコードを提供いただいた Shiba*2 さんと SuperBeastsAI 氏に、改めて感謝したいと思います。
最後までお読みいただきありがとうございます!
更新履歴
2025.1.9
ComfyUI のアップデートに伴い、Load Clip (set device) ノード群を削除したため、記事を修正しました
