メインコンテンツへスキップ
見出し画像

ComfyUIとForge Neoの画像合成で向いている作業と使い分け記録

    ComfyUIは自由度が高く、画像生成だけでなく画像加工や合成にも活用できます。

    画像の読み込み、切り抜き、拡大・縮小、重ね合わせ、文字入れ、保存までをノードでつなげられるため、一度ワークフローを組めば、複数の処理をまとめて実行できます。

    ただし、ComfyUIで画像合成で使っていると不便に感じる場面もあります。私が特に弱点だと感じているのは、処理能力ではなく、位置や大きさを見ながら調整するための操作画面です。

    そこで現在は、繰り返し実行する画像合成はComfyUI、画面を見ながら細かく調整したい処理はA1111系のForge Neo拡張機能という形で使い分けています。

    この記事では、ComfyUIとa1111系Forge Neoのどちらが画像合成に向いているのかを、実際にワークフローや拡張機能を作ってきた経験から整理します。


    ComfyUIで画像合成が便利なケース

    画像

    連続した複数の処理を自動化する場合は、ComfyUIが便利です。

    例えば、次のような画像加工を1本のワークフローとして組めます。

    1. 元画像を読み込む

    2. 元画像からimg2imgで服なしの差分画像を作る

    3. 服あり・服なしの2枚を上下に配置する

    4. 破れた紙のような境界を作る

    5. 下の画像を境界に合わせて部分的に表示する

    6. 画像枠を追加する

    7. 指定した文字を合成する

    8. 完成画像を保存する

    手作業では何度も画像を移動し、マスクを作り、文字を配置する必要があります。
    ComfyUIなら、それぞれの処理をノードとして接続し、入力画像や文字だけを変更して繰り返し実行できます。

    ComfyUIの公式ドキュメントでも、ワークフローは複数の処理をノードとリンクで構成する仕組みと説明されています。
    完成したワークフローはJSONとして保存できるため、別の画像加工ワークフローへコピーしてアレンジしやすい点も強みです。

    特に便利なのは、次のようなケースです。

    • 同じレイアウトで複数の画像を処理する

    • 切り抜き、合成、文字入れ、保存までを連続で実行する

    • フォルダ内の画像をまとめて処理する

    • 以前に作った処理の一部を別のワークフローへ流用する

    • 作業手順をワークフローとして残して再利用する

    一度完成すれば、毎回同じ編集操作をやり直す必要がなく、繰り返し処理や大量処理では、この差が大きくなります。

    ComfyUIの弱点は処理ではなく操作画面

    画像

    ComfyUIのノードには、数値入力、スライダー、プルダウン、画像アップロードなどを配置できます。
    しかし、画像を大きく表示しながら、合成位置や角度をマウスで調整するような操作には向いていません。

    JavaScriptを使ってComfyUIの画面を拡張することはできます。
    公式にもJavaScript拡張の仕組みが用意されており、ダイアログや独自UIを追加できます。
    ただし、画像合成用の操作画面を作る場合は、Python側の処理だけでなく、JavaScript側の表示やイベント処理も設計する必要があります。

    ノード内にすべてを詰め込むと表示が窮屈になり、別画面にすると今度はノードとの値の受け渡しが複雑になり、処理そのものは作れても、使いやすい操作画面まで仕上げる手間が大きいのが現状で試行錯誤の時間が結構かかります。

    特に、次のような調整はノードだけでは確認回数が増えます。

    • 破れ線を数ピクセルずつ上下に動かす

    • 人物の顔が切れない位置まで画像を移動する

    • 枠線の太さと余白のバランスを確認する

    • 合成画像の角度や透明度を少しずつ変更する

    • 文字の位置を完成画像を見ながら調整する

    数値を変更して実行し、結果を確認して、再び数値を変更する。
    この往復が多い処理ほど、ComfyUIの弱点が目立ち、結構疲弊します。

    a1111系Forge Neoの拡張機能で画像合成が便利なケース

    画像

    Forge Neo側では、PythonとGradioを使って画像合成専用の画面を作れます。

    Gradioは、Pythonの処理をブラウザから操作できるWeb UIとして表示するためのライブラリです。
    画像のアップロード欄、テキスト入力欄、スライダー、ボタン、処理結果の表示欄などをPythonコードから用意できます。画像をアップロードして表示するだけでなく、ブラシ、切り抜き、レイヤーを扱えるImageEditorも用意されています。

    Forge Neo自体もGradioをベースにしたWeb UIです。
    そのため、画像合成用のタブや操作項目を追加し、画面を広く使った拡張機能を作りやすい構成になっています。

    例えば、画像をアップロードして破れ線を重ねる処理では、次の項目を1画面にまとめられます。

    • 元画像のプレビュー

    • 破れ線の位置

    • 破れ線の角度

    • 線の幅

    • 線と線の間隔

    • 合成結果のプレビュー

    • 保存ボタン

    スライダーを動かした結果をその場でプレビューできるように作れば、位置を決めるために何度も生成処理を実行する必要がありません。

    1枚ごとに位置を変えたい処理、完成画像を見ながら調整したい処理、設定項目が多い処理では、Forge Neoの拡張機能の方が扱いやすくなります。

    ComfyUIとForge Neoの画像合成はどちらが上?

    比較項目ComfyUIForge Neoの拡張機能複数処理の連結得意可能だが処理をコードでまとめる必要があります。

    どちらが上というより、必要としている操作が異なります。

    ComfyUIは「工程を組み、同じ処理を再実行するための環境」、Forge Neoの拡張機能は「専用の操作画面から、完成状態を見ながら調整するための環境」と考えると分かりやすいです。

    最も使いやすいのはComfyUIとForge Neoの併用

    今まで全てComfyUIで完結する事に注力していました。
    現在は、すべての画像合成をComfyUIだけで完結させる必要はないと考えています。

    私が使い分ける基準は次のとおりです。

    ComfyUIを使う

    • 同じ処理を何度も実行する

    • 複数の加工を順番に実行する

    • 大量の画像をまとめて処理する

    • 別のワークフローと接続して使う

    • 処理手順そのものを保存して再利用する

    Forge Neoの拡張機能を使う

    • 1枚ごとに位置や大きさを変える

    • 完成画像を大きく表示して調整する

    • スライダーを動かしながら結果を確認する

    • 操作する人にノードの知識を求めたくない

    • 入力項目を整理した専用画面を作る

    両方を使う

    最初にForge Neoの拡張機能で位置、角度、余白などを調整し、仕様が固まった処理をComfyUIのワークフローへ組み込みます。

    今はそれぞれで加工してやっていますが今後は、APIで両方のシステムを横断するものが可能なので、ForgeNeoで画像合成してComfyUIで追加の処理をするものを作ろと思っています。
    紳士向けの表現のためにいろいろやっていますが、そろそろ本当に妄想内の表現を漫画や小説に落とし込みたいと思っています。

    あなたへのおすすめ