見出し画像

【ComfyUI】画像から人間を抽出して消去する

※ 以下の記事でバージョンアップしています。以下の記事もご覧ください。


前回の記事では、オブジェクトを抽出し、オブジェクト以外のものを消去することをしましたが、今回はオブジェクトを消去し、背景だけにすることをやってみました。
結果は、以下のようになります。

消去前後の画像比較

1. 準備

カスタムノード

  • ComfyUI Segment Anything

    • ComfyUIでSegment Anythingを利用するためのカスタムノード

  • ComfyUI Inpaint Nodes

    • Inpaintを行なう箇所で使用する

  • ComfyUI WD 1.4 Tagger

    • Hires.fixの際に、画像からpositiveプロンプトを生成するために使用する

モデル

Segment Anythingで使用するGroundingDinoのモデルとコンフィグファイルを以下からダウンロードし、ConfigUI/models/grounding-dinoディレクトリに格納してください。(grounding-dinoディレクトリがない場合は、新規作成してください)

こちらもSegment Anythingで使用するSAM (Segment Anything Model) を以下からダウンロードし、ComfyUI/models/samディレクトリに格納してください。(samディレクトリがない場合は、新規作成してください)

Hires.fixの処理部でControlNetを使用しています。そこで使用する以下のモデルをダウンロードし、ComfyUI/models/controlnetに格納してください。

  • ControlNet 852_a_clone_xl

以下は、ComfyUI Inpaint Nodesで使用するモデルです。ComfyUI Inpaint NodesのGithubページにダウンロードする場所があるので(以下の画像参照)、そこからダウンロードしてください。

2. ノード構成

以下がノードの全体構成になります。SAMの箇所は、前回の記事で説明したので、今回は省きます。

ノードの全体構成

以下に今回のworkflowをフローチャートで表現したものを示します。大まかな流れは、次の通りです。

  1. SAMで人間を抽出する

  2. SAMで抽出したマスクを使用して、Inpaintで人間がいた部分を背景と同化させる

  3. Inpaintで生成された画像をHires.fixで補正する

フローチャート

以下は、Inpaintを行っている箇所です。
まず、SAMで生成されたマスクをGrowMaskで拡張します。Inpaintの範囲を拡張することで、より背景に溶け込みやすくします。
次に、そのマスクをInpaint (using Model)に入力します。このノードには、元画像とInpaintモデル (MAT_Places512_G_fp16) も入力します。

Inpaint処理部

最後にHires.fixの処理部です。
まず、Load Checkpointでcheckpointを読み込みます。今回は、LEOSAM's HelloWorld XLを使用しました。
次に、VAE EncodeにInpaintで生成された画像と、Load CheckpointのVAEを入力します。ここで生成されたLatentは、画像生成するKSamplerに入力されます。
KSamplerに入力するプロンプトを生成するために、Inpaintで生成された画像をWD14 Triggerに入力し、画像からタグを生成します。そこで生成されたタグをCLIP Text Encode (Prompt)に入力し、positiveプロンプトとして生成します。
positiveプロンプトは、Apply ControlNetに入力され、ControlNetが適用されます。今回使用したモデルは、ControlNet 852_a_clone_xlです。詳細は、こちらの記事をご確認ください。ControlNetのStrengthは0.3に設定しました。
最後にpositiveプロンプト、negativeプロンプト、Latentが入力されたKSamplerで画像生成します。ここでは、denoiseを0.55で生成しました。

Hires.fix処理部

3. 生成結果

まず、Inpaintのみの結果を示します。Inpaintのみでは、人は消えていますが、人がいた箇所が上手く補正されていません。これをHires.fixで補正します。

Inpaintのみを適用した結果

以下がHires.fixで補正した結果です。人がいた場所が綺麗に補正されています。他の箇所もHires.fixの影響で多少変化がある点が気になるので、まだまだ調整が必要です。

Hires.fixを適用した結果

この記事でご紹介したAI技術の応用方法について、もっと詳しく知りたい方や、実際に自社のビジネスにAIを導入したいとお考えの方、私たちは、企業のAI導入をサポートするAIコンサルティングサービスを提供しています。以下のようなニーズにお応えします。

  • AIを使った業務効率化の実現

  • データ分析に基づくビジネス戦略の立案

  • AI技術の導入から運用までの全面サポート

  • 専門家によるカスタマイズされたAIソリューションの提案

初回相談無料ですので、お気軽にご相談ください。以下のリンクからお問い合わせください。


この記事が気に入ったらサポートをしてみませんか?