名前を入力するだけで何でもマスク:ComfyUIのFlorence 2によるマスキングとインペイント

「crown」「tiger」「glasses」と入力するだけで、Florence 2がマスクを返します。ComfyUIでワークフローを構築し、SD 1.5でマスクした領域をインペイントし、2つのマスクを1つに合成して、マスクを縁取りに変えます。

Anton Tenitsky2026年10月13日約15分で読めます動画版は下にあります

このガイドはAIで英語から翻訳したもので、誤りを含む可能性があります。英語の原文を読む。

王冠をかぶった白い頭蓋骨。Florence 2のテキストプロンプトによるマスクで、王冠が緑でハイライトされている

「t-shirt」と入力すれば、Tシャツのマスクが得られます。「face」「bookshelf」「wall」と入力すれば、それらが得られます。Florence 2は、テキストの説明から物体を見つけられるMicrosoftのビジョンモデルで、ComfyUIではそれをインペイントできるマスクに変えます。できることは信じられないほどですが、注意点もあり、それも説明します。

Florence 2は、論文Florence-2: Advancing a Unified Representation for a Variety of Vision Tasks(Xiao et al., 2023)で説明されています。多くのタスク(キャプション、物体検出、セグメンテーションなど)向けの研究モデルで、ここではマスクにだけ使います。

ポイント

  • ノード: ComfyUI-Florence2(Kijai製)、ComfyUI Essentials、テキスト出力用のUniversal Styler、比較用のrgthree。
  • モデル: 最良のマスクにはFlorence-2-large。予備にbase。
  • タスク: referring_expression_segmentationにして、マスクしたいものを入力します。
  • インペイント: 元の画像とマスクを使ったInpaintModelConditioning。denoiseは0.5〜0.62あたり。
  • マスクの組み合わせ: Mask Composite(add)で2つのマスクを結合。Grow Maskとmultiplyで縁取りを作ります。

ComfyUIが初めてなら、ComfyUIのノードの基本とテキストから画像へとComfyUI Managerのインストールから始めてください。完成したワークフローは私のPatreonで無料です。JSONをドラッグして入れ、足りないノードをManagerからインストールします。

ノードをインストールする

Manager → Custom Nodes Managerで、次をインストールします。

  1. ComfyUI Essentials:本当に必要な基本的なノード集(Mask Preview、Image Resizeなど)。
  2. ComfyUI Universal Styler:テキストを取り出すのに役立ちます(そのGet TextノードがFlorenceのキャプションを表示します)。
  3. Florence 2。 Kijaiとspacepxlの2つのパッケージがあります。Kijaiのほうがスターが多く、より最近更新されています。2つはとても似ていますが、spacepxlのものは最新のComfyUIで動かすためにコードの一部を書き直す必要がありました。Kijaiのものを使ってください。

インストール後にComfyUIを再起動します。

Florence 2の部分を構築する

  1. DownloadAndLoadFlorence2Modelを追加します。初回実行時にモデルを自動でダウンロードするので、git cloneもモデルフォルダを探す必要もありません。
  2. Florence2Runを追加して、モデルを接続します。
  3. 画像を入れたLoad Imageを、Florence2Runの画像入力に接続します。
  4. すべての出力を接続します。画像用のPreview Image、マスク用の(Essentialsの)Mask Preview、キャプション用のGet Textノード。出力が接続されていないと、ネットワークが動かず、モデルもダウンロードされません。
虎の写真を入れたLoad Imageが、タスクreferring_expression_segmentationとプロンプトtigerのFlorence2Runノードに入力され、マスクプレビューに虎のシルエットが表示されている
基本の構成:モデルローダー、テキストプロンプト付きのFlorence2Run、すべての出力にプレビュー。

Queueをクリックします。初回の実行でモデルがダウンロードされ、回線によって数分以上かかることがあります。コマンドウィンドウで確認できます。デフォルトのタスクは、画像内の物体を見つけて、それぞれの周りにバウンディングボックスを描きます(ここでは王冠と頭蓋骨)。バウンディングボックスはここではあまり役に立たず、必要なのは本物のマスクです。

Florence 2が描いたバウンディングボックスを付けた、王冠をかぶった頭蓋骨
デフォルトのタスク:認識した物体の周りのバウンディングボックス。

モデルを選ぶ

  • Florence-2-base: デフォルト。
  • Florence-2-base-ft / large-ft:「ft」は特定の目的向けにファインチューンされたという意味です。おすすめしません。baseより悪い結果でした。
  • Florence-2-large: 強くおすすめです。1枚あたりの時間はかなり長くなりますが、はるかに良いマスクを作ります。

タスクを選ぶ

taskのリストが最も重要な設定です。captionにすると画像を記述します。このマシンではGet Textノードにテキストが表示されませんでしたが、コマンドウィンドウには表示され、別のマシンでは機能しました。そもそもキャプションはここでの目的ではありません。

ほぼいつも使うタスクは**referring_expression_segmentation**です。テキスト欄に欲しいものを入力して実行すると、マスクが得られます。

王冠が緑でマスクされた頭蓋骨の画像
「Crown」:マスクは王冠全体だけを覆っています。

「Skull」は、すぐにきれいなマスクになりました。「Crown」は、最初はうまくいきませんでした。AIモデルは完璧ではなく、ときどきこうなります。largeからbaseに戻して同じプロンプトで実行すると、良い王冠のマスクが得られました。ときどきモデルを入れ替えるのは、作業の一部です。

マスクした領域をインペイントする

  1. InpaintModelConditioningを追加します。Florence2Runのmaskと、Florence2Runではなく元のLoad Imageの画像を接続します。Florenceの画像出力には、色付きのマスクが描き込まれているからです。
  2. 標準のテキストから画像へのチェーンを構築します:Load Checkpoint(epiCPhotoGasmを使用)、ポジティブとネガティブのCLIP Text Encode(緑と赤に色分け)、KSampler、VAE Decode、Save Image。
  3. プロンプトを先にInpaintModelConditioningに通してから、KSamplerに入れます。VAEをInpaintModelConditioningに接続し、そのlatent出力をKSamplerのlatent入力に接続します。
  4. 望む変更(王冠なら「silver」)を入力し、denoiseを約0.62に設定します。denoiseはプロンプトと元の画像の混ざり具合を制御し、ここで最も重要な値です。

VAEの接続が足りないと文句を言われたら、1本つないでください。結果はこちらです。

装飾された銀の王冠をかぶった頭蓋骨と、隣のrgthree Image Comparerノード
王冠だけが変わりました。金の代わりに銀で、2つの単語を入力しただけです。

比較するには、rgthreeのImage Comparerを追加し、新しい画像をA、元の画像をBにします。有効化するにはもう一度実行する必要があり、結果は別のものになります。

2つのマスクを組み合わせる:虎全体

Fotoref(私が共同創業者を務めるフォトストック)の虎の写真で、「tiger」は体の前半分をマスクしましたが、後ろ脚を見逃しました。マスクをテストする間は、インペイントのノードをバイパス(選択してCtrl+B)しておきます。

  1. Ctrl+C、Ctrl+Shift+VでFlorenceの枝をコピーします。接続が保たれます。同じ出力ノード(プレビュー、マスクプレビュー、Get Text)を付けてください。なくても、使わなくても、動きません。
  2. 足りない部分のプロンプトを試します。「Tiger back leg」はうまくいきませんでした。largeモデルと、もっと創造的なプロンプト「tiger black stripes front and back」で、後ろ脚が得られました。そこにたどり着くまで、約10個のプロンプトを試しました。
  3. Mask Compositeを追加します。一方のマスクをdestination、もう一方をsourceに入れ(本当はAとBと呼ぶべきでしょう)、operationはaddにします。白に白を足すからです。Multiplyでは、すべてが消えてしまいます。
  4. 結合したマスクをプレビューします:虎全体。
虎が緑でハイライトされた2つ目のFlorenceの枝と、虎全体のシルエットのマスクプレビュー
2つ目のプロンプトが後ろ脚を捉え、合わせて虎全体をマスクが覆います。

インペイントのノードのバイパスを解除して、合成したマスクをInpaintModelConditioningに接続します。プロンプトを変えるのを忘れて、銀色の虎ができました。「cat」では猫になり、うまく溶け込みました。体の下部を近くの植物で置き換え、片方の足の下に岩を置きました。素晴らしい生成まであと少しで、もう少し実行が必要です。

同じジャングルのシーンを歩く、虎の代わりのキジトラ猫
虎の代わりの「Cat」。周りの植物に溶け込んでいます。

顔

私の3Dスカルプトの1つで、「face」は顔のマスクになりました。プロンプト「male」では、別の人物の顔をインペイントしました。denoise 0.25では、結果は元に近い見た目になりましたが、スカルプトした奇妙な解剖学(角、下のピアス)には苦労し、それをひげで置き換えました。これは予想どおりです。

コツ: Florence2Runにはseedがあります。control_after_generateをrandomizeからfixedに変えると、新しいプロンプトを試すたびにマスクが再生成されなくなります。

マスクを縁取りに変える

自撮り写真で、「glasses」はかなり良いマスクになりました。しかし、変えたいのはフレームだけで、細すぎてFlorenceがプロンプトからマスクできません。代わりに、従来のマスクノードで実現できます。

  1. 眼鏡のマスクに(コアノードの)Invert Mask。
  2. Grow Maskで10ピクセル。反転したマスクでは、白が広がり、黒が縮みます。
  3. Mask Compositeで、拡大したマスクをdestination、元のマスクをsourceにして、operationをmultiplyにします。一方から他方を引き、フレームの縁取りが残ります。
  4. 各段階を見るために、途中にMask Previewノードを加えます。
expand 10に設定したGrow Maskが、multiplyに設定したMask Compositeに入力され、プレビューに反転して縮んだ眼鏡のマスクが表示されている
反転、10 pxで拡大、乗算:その差が薄い縁取りになります。

その縁取りを、プロンプト「silver」、denoise 0.5でInpaintModelConditioningに接続しました。正直、異なるdenoiseの値やプロンプトを試しても、ここでは本当に良い結果は得られませんでした。大事なのはテクニックです。プロンプトからマスクを得て、VFXやコンポジットアプリで使うのと同じ、拡大して引き算するコツを適用することです。

次のステップ

より強力なモデルでのより本格的なインペイントは、Fluxによるインペイントをご覧ください。マスクを描かずに顔と手を直すには、AIの顔と手の自動修正をご覧ください。マスクは、IPAdapterのスタイル転送を1つの被写体に集中させるのにも役立ちます。

動画版を見る (15:54)

上の内容はすべて動画でも説明しています。画面を見ながら進めたい方はこちらをどうぞ。 動画は英語です。

よくある質問

マスクには、どのFlorence 2モデルを使うべきですか?

Florence-2-largeはbaseよりずっと良いマスクになりますが、時間がかかります。fine-tuned(ft)バージョンは、私のテストではbaseより悪い結果でした。largeが何かを見逃したときは、同じプロンプトでbaseを試してください。見つかることもあります。

テキストプロンプトからマスクを作るFlorence 2のタスクはどれですか?

referring_expression_segmentationです。Florence2Runノードのテキスト欄に、マスクしたいものを入力します。

Florence 2がオブジェクトの一部しかマスクしませんでした。どうすればよいですか?

足りない部分を2つ目のプロンプト(または別のモデル)でマスクし、addに設定したMask Compositeノードで2つのマスクを結合します。

実行のたびにマスクが変わるのはなぜですか?

Florence2Runには独自のseedがあります。control_after_generateをrandomizeからfixedに変えると、別のインペイントプロンプトを試す間、マスクが変わらなくなります。

Anton Tenitsky は コンピュータグラフィックスで15年以上の経験を持つ3Dアーティストで、Nickelodeon、Gameloft、Marvel Rivalsをはじめ多くのクライアントと仕事をしてきました。 プロフィールを見る

関連ガイド