【ComfyUI】特定のオブジェクトのみを抽出する
今回は、画像の中で必要なオブジェクトのみを残し、それ以外を削除する方法を試したいと思います。以下の画像のように人、PC、ノート、机のみを抽出します。
1. 準備
カスタムノード
ComfyUI Segment Anything
ComfyUIでSegment Anythingを利用するためのカスタムノード
モデル
Segment Anythingで使用するGroundingDinoのモデルとコンフィグファイルを以下からダウンロードし、ConfigUI/models/grounding-dinoディレクトリに格納してください。(grounding-dinoディレクトリがない場合は、新規作成してください)
こちらもSegment Anythingで使用するSAM (Segment Anything Model) を以下からダウンロードし、ComfyUI/models/samディレクトリに格納してください。(samディレクトリがない場合は、新規作成してください)
2. ノード構成
以下がノードの全体構成になります。
以下がSegmentの実施箇所です。SAMModelLoaderでSAMの読み込み、GroundingDinoModelLoaderでGroundingDinoモデルの読み込みを行います。その結果をGroundingDinoSAMSegmentに入力します。
今回は、SAMにsam_hq_vit_h、GroundingDinoにGroundingDINO_SwinBを選択しました。(おそらく選択できるモデルの中で最も性能が良いモデル)
抽出対象は、GroundingDinoSAMSegmentのpromptにカンマ区切りで入力します。今回は、写真内のすべての物を対象にしたかったため、objectsと入力しました。thresholdは、調整した結果、0.02が最も良い結果が出たので、0.02を設定しています。
GroundingDinoSAMSegmentの結果を以下の箇所で表示しています。MASKは、Convert Mask to Imageでマスクから画像に変換しています。
GroundingDinoSAMSegmentで出力される画像は、マスクして抽出された箇所以外(今回では背景)が透明になっていないので、以下で透明にする処理をしています。
Join Image with Alphaは、マスクされた箇所(白)を透明にするので、InvertMaskでマスクを反転させてから、Join Image with Alphaに入力することで、目的の画像を出力できます。
3. 生成結果
以下が生成結果です。少しオブジェクトの周りがジャギーになってしまっていますが、目的のオブジェクトを抽出できています。
この記事でご紹介したAI技術の応用方法について、もっと詳しく知りたい方や、実際に自社のビジネスにAIを導入したいとお考えの方、私たちは、企業のAI導入をサポートするAIコンサルティングサービスを提供しています。以下のようなニーズにお応えします。
AIを使った業務効率化の実現
データ分析に基づくビジネス戦略の立案
AI技術の導入から運用までの全面サポート
専門家によるカスタマイズされたAIソリューションの提案
初回相談無料ですので、お気軽にご相談ください。以下のリンクからお問い合わせください。
この記事が気に入ったらサポートをしてみませんか?