画像から人やオブジェクトを“まるで最初から存在しなかった”かのように美しく消し去り、そこに自然な背景を生成できたら――そんな魔法のような処理を、今回ご紹介するワークフローで実現します。
Microsoftが開発したFlorence2を用いた高度なオブジェクト検出と、Metaの最新モデルSAM2による正確なセグメンテーションを組み合わせることで、消したい部分をピンポイントで捉えたうえで柔軟に補正を行うのが大きな特長です。さらにbig_lamaやRealVisXL V5.0 Inpaintingといったインペイントモデルの力を借りれば、不自然な跡を残さない本格的な合成が可能となります。
画像制作の新たな可能性を切り開く、この“魔法のワークフロー”をぜひ体験してみてください。
文末には、メンバーシップ向け特典としてAICUが開発中の新サービス「共有ComfyUI」の無料アクセスクーポンも付いてます!
https://note.com/aicu/n/n8d07d082c7c0
今回実装するワークフローは、写真などの画像から特定のオブジェクト(ここでは人物など)を検出し、その部分を消去しつつ自然な背景を再生成するものです。いわゆる「インペイント」と呼ばれる技術を活用し、複数のモデルを組み合わせて高品質な画像処理を実現します。
今回使用するカスタムノードは、以下の通りです。それぞれComfyUI Managerからインストールしてください。
ComfyUI-Florence2は、Florence2をComfyUIで使用するためのカスタムノードです。Florence2は、Microsoftが開発した視覚言語基盤モデルで、画像キャプション生成、物体検出、ビジュアルグラウンディング、セグメンテーション、文字認識、など、幅広いビジョンタスクを実行できます。今回は、プロンプトからのオブジェクト検出(髪と人物)を実現するために使用します。
なお、Florence2に必要なモデルは、インストール時に「ComfyUI/models/LLM」フォルダに自動でダウンロードされます。
リポジトリは、以下になります。
https://github.com/kijai/ComfyUI-Florence2
ComfyUI-segment-anything-2は、SAM2 (Segment Anything Model 2) をComfyUIで利用するためのカスタムノードです。SAM2は、Metaが開発した最新のオブジェクトセグメンテーションモデルで、画像と動画の両方に対応しています。今回は、Florence2で検出した髪や人物をセグメンテーションし、マスクを作成するためにSAM2を使用します。
SAM2に必要なモデルは、Kijai氏のHugging Faceのリポジトリから「ComfyUI/models/sam2」フォルダに自動でダウンロードされます。
リポジトリは、以下になります。
https://github.com/kijai/ComfyUI-segment-anything-2
ComfyUI-TensorOpは、ComfyUIでテンソル操作を行うためのノードセットです。今回のワークフローで、このノードを直接使用することはありませんが、ComfyUI-Florence2内で使用されているため、インストールが必要になります。
リポジトリは、以下になります。
https://github.com/un-seen/comfyui-tensorops
ComfyUI Inpaint Nodesは、画像のインペイント(欠損部分の補完)をより効果的に行うためのノードセットです。変更後の髪の生成に使用します。
リポジトリは、以下になります。
https://github.com/Acly/comfyui-inpaint-nodes
ComfyUI-KJNodesは、ComfyUIの既存ノードの機能を組み合わせて作成された便利なノードを提供しています。今回使用するサンプルワークフローで、このカスタムノードを使っているため、インストールが必要になります。インストールは、ComfyUI Managerから可能です。
リポジトリは、以下になります。
https://github.com/kijai/ComfyUI-KJNodes
インペイントで使用するモデルにbig_lamaを使用します。以下のリンクよりダウンロードし、「ComfyUI/models/inpaint」フォルダに格納してください。
big_lama.pt (右クリックでダウンロード)
リポジトリは以下になります。
https://github.com/advimman/lama
SDXLモデルのRealVisXLのインペイント版になります。インペイントに特化してトレーニングされており、通常のRealVisXLよりもインペイントに優れています。以下のリンクよりダウンロードし、「ComfyUI/models/checkpoints」フォルダに格納してください。
https://civitai.com/models/620368/realvisxl-inpainting
今回は、以下の画像を使用します。以下の画像をダウンロードし、「Load Image」ノードからアップロードしてください。
people.jpg (右クリックで保存)
以下がワークフローの全体像です。
文末のリンクよりダウンロードできます。
このワークフローは大きく3つのセクションで構成されています。
物体検出・セグメンテーションセクション: 人物を正確に検出するために、Florence2とSAM2という2つの強力なAIモデルを組み合わせています。
オブジェクト除去セクション: 検出された人物を、周囲の背景に合わせて自然に除去します。
修正仕上げセクション: 生成された画像の品質を向上させる後処理を行います。
全体の処理の流れは、下図になります。
オブジェクト検出: まず、入力画像を読み込み、Florence2という画像認識モデルを使って画像内の人間を検出します。
LoadImageノード
「people.jpg」などの写真を読み込みます。ここで登場する画像が、最終的に加工されます。
Florence2モデルのロード (DownloadAndLoadFlorence2Modelノード)
CogFlorence-2.1-Largeがダウンロードされ、Florence2Runノードで人間を検出できる状態になります。
Florence2Runノードで実行
読み込んだ画像を解析し、どこに「人が写っているか」を推定します。
結果として、人物領域のバウンディングボックス情報が生成されます。これは座標情報として出力され、後ほど利用されます。
座標変換 (Florence2toCoordinatesノード)
Florence2Runノードの出力データを元に、SAM2Segmentationが扱いやすい形(バウンディングボックス情報など)へ変換します。
こうして得られた座標が次の工程に送られます。
セグメンテーションとマスク作成: ここではSAM2というセグメンテーションモデルを使い、先ほど検出した人物部分をより正確なマスクとして切り抜きます。
DownloadAndLoadSAM2Modelノード
「sam2.1_hiera_base_plus.safetensors」といった重みファイルをダウンロードし、セグメンテーションに備えます。
Sam2Segmentationノード
入力画像と、先ほど検出した人物領域のバウンディングボックス情報を組み合わせ、正確な人物マスクを作成します。
これによって「消したい領域」が細かくマスクされます。
GrowMaskノード
作成したマスクを少し広げ、境界がギザギザにならないように調整します。たとえば12ピクセルだけ拡張し、人物周辺の背景まで少しカバーするイメージです。
次の段階では、インペイントモデルを使って、「人物を取り除いて自然な背景を復元する」処理を行います。
INPAINT_LoadInpaintModelノード
「big-lama.pt」などのモデルをロードし、画像から不要なオブジェクトを消去できるように設定します。
INPAINT_InpaintWithModelノード
前工程で得られたマスクと画像を入力として、実際に人物を除去し、その部分の背景を自然に埋めます。
big-lamaのようなモデルは、隣接ピクセルの情報を使って、なめらかに背景を再生成します。
ここで完成した画像には、すでに人物が消えて、背景だけが残っています。
最後に背景を再生成します。これは、インペイントモデルでのオブジェクト除去だけでは品質が悪いため、SDXLのような大型のモデルでマスクした箇所(人物がいた場所)のみ再生成します。
CheckpointLoaderSimpleノード
realvisxlInpainting_v5lightning.safetensorsを読み込み、CLIPやVAEなどStable Diffusion系のモジュールを使えるようにします。
CLIPTextEncodeノード(複数箇所)
「背景にしたい雰囲気」や「消したいもの」などをテキストプロンプト化し、生成の際に反映します。
ネガティブプロンプトとして「人間」「汚い背景」などを指定することで、不要な生成物を防ぎ、クオリティを上げます。
InpaintModelConditioningノード + KSamplerノード
インペイントのための条件付け(人物を消したい、背景を自然にしてほしいなど)を整え、サンプラーで実際に画像を生成します。
生成過程では、30ステップ程度の推論を行い、よりリアルで破綻のない画像を作成します。
VAEDecodeノード
サンプラーが作り出した潜在表現を最終的な画像としてデコードし、自然な画像を得ます。
SaveImageノード
仕上がった画像を保存し作業完了です。
それでは、ワークフローを実行してみましょう。
まずは、オブジェクト除去した直後の画像です。人物は削除されていますが、画像が荒いことが分かります。
次にRealVisXLでマスクした箇所を再生成した結果です。綺麗に補正されていることが分かります。
人物消去前の画像と比較してみましょう。しっかり人物が消え、人物の箇所を埋めるように綺麗に背景が生成されていることが分かります。
Florence2で対象を確実に捉え、SAM2で美しく切り抜き、そこからインペイントモデルのbig_lamaやRealVisXL Inpaintingを駆使して背景を巧みに生成する一連の流れは、“画像内の不要物を消す”という工程を飛躍的に進化させます。単にオブジェクトを取り除くのではなく、その部分を自然な風景として作り直すことで、まるで最初から何もなかったかのような仕上がりを実現できるのが最大の魅力です。複数のモデルやカスタムノードの連携を土台に、細部までこだわったプロンプトの設定などを活用することで、あらゆる画像編集のアイデアを叶える柔軟なワークフローとなるでしょう。
AICUは「つくる人をつくる」をビジョンに掲げ、最新の生成AI、クリエイティブAI技術を皆さまにお届けしています。
📝noteでは、生成AIに関する最新情報や使い方の解説を発信しています。ぜひフォローして、最新情報をチェックしてください!
https://note.com/aicu
📩メールマガジン「週刊AICU通信」では、AI関連のニュースやトレンド、イベント情報などを毎週お届けしています。購読登録はこちらから!
https://corp.aicu.ai/ja
📚️Kindleストアでは、「月刊AICUマガジン」を配信中!AI技術の特集や深掘り解説記事が読めます。
https://j.aicu.ai/kindle
Xでも情報発信中!フォローしてね😉
https://x.com/AICUai
#生成AI #StableDiffusion #画像生成AI #AI画像生成 #プロンプト #ComfyUI #SDXL #StableDiffusionWebUI #AIイラスト #生成 #Diffusers #AnimagineXL #CagliostroResearchLab #アニメイラスト
こちらのフォーム、もしくは下のURLでウェイトリストに登録することができます。
https://share.hsforms.com/2IfeHZPwASyin8_6BuJyHwAq3r78
2025年2月17日まで利用可能な無償招待コードをお送りします。
既にお試しいただいている方も、遠慮なく申し込んでください!
※noteのComfyUIマスタープランと、上記の「共有ComfyUI」はしばらく並列に運営していきます。他にもたくさんサービスを開発していきますので応援よろしくお願いいたします!
このラインより上のエリアが無料で表示されます。
この記事の続きはこちらから https://note.com/aicu/n/n6d17b04d8778
Originally published at https://note.com on Feb 1, 2025.