Stable Diffusionで画像を部分的に編集したいとき、最大の壁になるのがマスク作成の手間だ。ペンツールで対象物の輪郭をなぞり、はみ出した部分を消し、細かい髪の毛や半透明の境界に苦戦する。1枚に10分、10枚で100分。この作業が「テキストを入力するだけ」で終わるとしたら、ワークフロー全体の効率は根本から変わる。それを実現するのが、MetaのSAM3(Segment Anything Model 3)とComfyUIの組み合わせだ。
・SAM3はテキストプロンプトだけで画像内のオブジェクトを自動セグメンテーションできるMetaの最新モデル
・ComfyUIへの導入はカスタムノードのインストールとモデルファイルの配置で完了し、VRAM 8GB以上で動作する
・生成したマスクをStable Diffusionのインペイントに直接渡すことで、背景差し替えや部分編集を自動化できる
SAM3とは?Stable Diffusionユーザーが知るべきセグメンテーションモデルの進化
SAM3は、Metaが開発したSegment Anything Modelシリーズの最新版。画像内の任意のオブジェクトをセグメンテーション(領域分割)するAIモデルで、最大の特徴はテキストプロンプトによる対象指定に対応した点にある。
SAM1からSAM3への進化|何が変わったのか
初代SAMが登場したのは2023年。当時はポイントクリックやバウンディングボックスで対象を指定する方式だった。SAM2では動画フレームへの対応が加わり、時系列でのオブジェクト追跡が可能になった。そしてSAM3で実現したのが、自然言語によるセグメンテーション指定。
具体的に何ができるかを整理すると、以下の通り。
- テキストでの対象指定: 「red car parked on left」「person in red jacket」のように英語テキストで対象を指定し、該当オブジェクトのマスクを自動生成
- 複数オブジェクトの同時抽出: 1回のプロンプトで画像内の複数対象を同時にセグメンテーション
- 動画フレームへの適用: 静止画だけでなく動画のフレーム単位でのセグメンテーションにも対応
SAM2以前は、仮に10個のオブジェクトにマスクをかけたい場合、1つずつポイントをクリックして指定する必要があった。SAM3ならテキスト1行で済む。この差は、特に大量の画像を処理するワークフローで顕著に効いてくる。
テキスト指定がStable Diffusionワークフローにもたらす変化
Stable Diffusionでインペイント(部分的な画像生成)を行う場合、従来の手順は「画像を開く → ペンツールで手動マスク作成 → インペイント実行」という流れだった。手動マスクの精度はユーザーのスキルに依存し、複雑な輪郭ほど時間がかかる。
SAM3を組み込むと、この手順が「画像を読み込む → テキストで対象を指定 → 自動マスク生成 → インペイント実行」に変わる。ペンツールを握る必要がなくなるだけでなく、マスクの精度が人間の手作業を上回るケースも多い。特に髪の毛の境界や半透明のオブジェクトなど、手動では難しい領域でSAM3の自動マスクは威力を発揮する。
ComfyUIにSAM3を導入する手順【環境構築から動作確認まで】
SAM3をComfyUIで使うには、カスタムノードのインストールとモデルファイルの配置が必要になる。手順自体は複雑ではないが、事前にハードウェア要件を満たしているか確認しておくことが重要。
必要なスペックと事前チェック
まず確認すべきはGPUのVRAM容量。SAM3のモデルサイズと処理内容を考慮すると、以下が目安になる。
| 項目 | 最低要件 | 推奨環境 |
|---|---|---|
| VRAM | 8GB | 12GB以上 |
| システムメモリ | 16GB | 32GB |
| ディスク空き容量 | 5GB以上 | 10GB以上 |
| ComfyUIバージョン | 最新版推奨 | 最新版推奨 |
| Python | 3.10以上 | 3.11 |
VRAM 8GBでも動作はするが、高解像度の画像を扱う場合やほかのノードと組み合わせる場合にはVRAM不足が起きやすい。NVIDIA RTX 3060(12GB)以上であれば、ストレスなく使える環境と言える。
ComfyUI本体がまだ未導入の場合は、Stable Diffusionの初心者向け解説記事で基本的な導入手順を確認してほしい。本記事ではComfyUIが動作している前提で進める。
カスタムノードとモデルのインストール
導入方法は2つ。ComfyUI Managerを使う方法と、手動でインストールする方法がある。
ComfyUI Manager経由の場合(推奨)
ComfyUI Managerがインストール済みであれば、こちらが最も手軽な方法。
- ComfyUIを起動し、メニューからManagerを開く
- Install Custom Nodesを選択し、検索欄に「SAM3」または「Segment Anything 3」と入力
- 該当するカスタムノードパッケージが表示されたらInstallをクリック
- インストール完了後、ComfyUIを再起動
再起動後にノード一覧にSAM3関連のノードが追加されていれば成功。表示されない場合はComfyUIのコンソールログにエラーが出ていないか確認してほしい。
手動インストールの場合
ComfyUI Managerを使わない場合は、ターミナルからの操作が必要になる。
- ComfyUIのcustom_nodesフォルダに移動
- SAM3カスタムノードのリポジトリをgit cloneで取得
- 取得したフォルダ内のrequirements.txtを使って依存パッケージをインストール
- ComfyUIを再起動
モデルファイルの配置
カスタムノードとは別に、SAM3のモデルウェイトファイルをダウンロードする必要がある。
- MetaのSAM3リポジトリまたはHugging Faceからモデルファイルをダウンロード(sam3_hiera_large等)
- ComfyUIのmodelsフォルダ内にsam3ディレクトリを作成
- ダウンロードしたモデルファイルをこのディレクトリに配置
モデルファイルのサイズは大型版で約2.4GB。回線速度によってはダウンロードに時間がかかるため、安定した接続環境で行うとよい。
テキストプロンプトでマスクを生成する|SAM3ノードの使い方とコツ
環境構築が終わったら、実際にSAM3ノードを使ってマスクを生成してみよう。基本的なワークフローの構成と、テキストプロンプトの書き方で精度がどう変わるかを具体的に解説する。
基本ワークフローの構成
ComfyUI上でSAM3を使う最小構成は、3つのノードで組み立てられる。
ステップ1: 画像の読み込み
Load Imageノードで対象画像を読み込む。ComfyUIの標準ノードをそのまま使えばよい。解像度が高すぎる画像(4K以上)はVRAMを圧迫するため、必要に応じて事前にリサイズノードを挟んでおく。
ステップ2: SAM3ノードの配置と接続
SAM3のカスタムノードを配置し、Load Imageノードの出力をSAM3ノードの画像入力に接続する。SAM3ノードには主に以下のパラメータがある。
- model: 使用するSAM3モデルの選択(large / base / small)
- text_prompt: セグメンテーション対象を指定するテキスト
- threshold: マスクの閾値(0.0〜1.0、デフォルトは0.5前後)
モデルサイズはlargeが最も精度が高いが、処理速度とVRAM消費のバランスを考えるとbaseから始めるのが現実的な選択。
ステップ3: マスク出力の確認
SAM3ノードのマスク出力をPreview Imageノードに接続すれば、生成されたマスクを視覚的に確認できる。白い領域がマスク対象、黒い領域が非対象。この出力をそのまま後続のインペイントノードに渡せる構造になっている。
プロンプトの書き方で精度が大きく変わる
SAM3のテキストプロンプトは現状英語での入力が基本。日本語での指定は精度が大幅に低下するか、認識されないケースが多い。
実際に試した中で、プロンプトの具体性と精度の関係は明確だった。
| プロンプト例 | 精度の傾向 |
|---|---|
| car | 画像内の車すべてを検出。意図しない車も拾う |
| red car | 赤い車に限定。精度向上 |
| red sports car in the foreground | 前景の赤いスポーツカーをピンポイントで検出 |
| the person wearing a blue shirt on the right side | 右側の青シャツの人物を正確に分離 |
ポイントは3つ。色、位置、属性を組み合わせて指定すること。「car」だけでは画像内のすべての車がマスクされてしまうが、「red sports car in the foreground」なら対象を1台に絞り込める。
逆に、抽象的な指定は精度が落ちる。「the beautiful scenery」「the interesting object」のような主観的な表現はSAM3が正しく解釈できないことが多い。あくまで視覚的に識別できる属性で指定するのが鉄則。
Stable Diffusionのインペイントと組み合わせる実践ワークフロー
SAM3の真価は、単体でマスクを生成することよりも、そのマスクをStable Diffusionのインペイントに渡して画像編集を自動化するところにある。従来「手動マスク → インペイント」だった工程を「テキスト入力 → 自動マスク → インペイント」に置き換えることで、1枚あたりの作業時間を大幅に短縮できる。
マスクからインペイントへの接続
ComfyUI上での接続は直感的。SAM3ノードのマスク出力を、インペイント用のKSamplerノードまたはSet Latent Noise Maskノードのマスク入力に接続するだけで基本的なパイプラインが完成する。
具体的な接続の流れは次の通り。
- Load Image → SAM3ノード(テキストプロンプトでマスク生成)
- SAM3のマスク出力 → Set Latent Noise Maskノードのマスク入力
- Load Imageの画像出力 → VAE EncodeでLatentに変換
- VAE EncodeのLatent出力 → Set Latent Noise Maskの入力
- Set Latent Noise Maskの出力 → KSamplerで部分生成
- KSamplerの出力 → VAE Decode → Save Image
ノード数は多く見えるが、一度ワークフローを組んでしまえば、あとは画像とテキストプロンプトを差し替えるだけで何枚でも処理できる。ワークフローファイル(.jsonまたは.png)として保存しておけば、次回以降はロードするだけで再利用が可能。
実践ユースケース3選
ユースケース1: ECサイトの商品画像|背景差し替え
商品撮影した写真の背景を白やグラデーションに統一したいケースは多いはず。SAM3のプロンプトに「product」「main object on the table」などと指定すれば、商品部分のマスクが自動生成される。このマスクを反転させて背景領域にし、インペイントで白背景や任意のシーンに差し替える。
手動で切り抜いていた頃は1枚5〜10分かかっていた作業が、ワークフロー構築後は1枚あたり数十秒で完了する。10枚、50枚と数が増えるほど効果は大きい。
ユースケース2: キャラクターイラストの部分編集
生成したキャラクターイラストの衣装だけを変更したい場面もある。「jacket」「dress」「hat」のようにパーツを指定してマスクを切り、インペイントで別の衣装に差し替える。全体を再生成するよりも、ポーズや表情を維持したまま特定パーツだけ変えられるのが強み。
ただし注意点もある。衣装の境界が曖昧なイラスト(たとえばマントと背景が同系色の場合)では、マスクの精度が落ちやすい。こうした場面ではthreshold値を調整するか、プロンプトをより具体的にする対応が必要になる。
ユースケース3: 不要オブジェクトの除去
写真に映り込んだ電線、通行人、看板などを消したい場合にも使える。「power lines in the sky」「person walking in the background」のように除去対象を指定してマスクを生成し、インペイントで周囲の背景に馴染む画像を生成する。
AI画像生成ツールの比較記事でも紹介しているように、ComfyUI以外にもAI画像編集ツールは多数存在する。ただし、SAM3レベルの精密なテキストベースセグメンテーションをワークフロー内で自由に組み合わせられるのは、現時点ではComfyUIならではの利点と言える。
SAM3のトラブル対処と得意・不得意を正直に評価する
新しいモデルを導入すると、環境依存のトラブルは避けられない。ここではよくあるエラーとその対処法、そしてSAM3が万能ではない点を整理する。
よくあるエラーと解決策
VRAM不足エラー(CUDA out of memory)
最も頻繁に遭遇するのがこのエラー。対処法は3つある。
- モデルサイズをlarge → base → smallに変更して消費VRAMを削減
- 入力画像の解像度を下げる(2048px以上の画像は1024pxにリサイズ推奨)
- ComfyUIの設定で–lowvramまたは–medvramオプションを有効にする
ノードが表示されない
インストール後にノード一覧にSAM3関連のノードが出てこない場合は、まずComfyUIの再起動を試す。それでも解決しなければ、コンソールログを確認。依存パッケージの不足やPythonバージョンの非互換が原因であることが多い。
モデル読み込みエラー
モデルファイルの配置先ディレクトリが間違っているか、ファイルが破損しているケースがほとんど。カスタムノードのREADMEに記載されている正確なパスにファイルが置かれているか再確認してほしい。ダウンロードが途中で止まっていた場合は、ファイルサイズを公式と比較すればすぐにわかる。
SAM3が得意な場面・苦手な場面
テキストベースのセグメンテーションには、明確な得意・不得意がある。AIのリリース時には「何でもできる」という雰囲気が先行しがちだが、実際に使い込むと限界も見えてくる。
得意な場面
– コントラストがはっきりした画像での対象抽出(白背景の商品写真など)
– 具体的に名前をつけられるオブジェクト(car、person、tree、building)
– 前景と背景が明確に分離している構図
苦手な場面
– 複数のオブジェクトが複雑に重なり合っている画像
– 抽象的な概念の指定(「雰囲気のある部分」「かっこいいエリア」など)
– 同色・同形状のオブジェクトが密集している場面(群衆の中の特定の1人など)
– 極端に低解像度の画像やノイズが多い画像
SAM3が苦手とする場面では、従来のポイント指定方式(SAM2)や手動マスクのほうが確実な場合もある。「すべてをSAM3に任せる」のではなく、対象に応じてツールを使い分ける判断が重要になる。
マスク精度を上げるためのチューニング
デフォルト設定でうまくいかない場合、調整できるパラメータは限られているが効果は大きい。
threshold値の調整: デフォルトの0.5から上下させる。値を上げるとマスクの範囲が狭くなり(確信度の高い領域のみ抽出)、下げると広くなる(曖昧な境界も含める)。対象の輪郭がシャープな画像では0.6〜0.7、境界が曖昧な画像では0.3〜0.4に設定するとバランスが取りやすい。
入力解像度の変更: 低すぎると細部の認識精度が落ち、高すぎるとVRAMを消費する。実験した限りでは、1024×1024前後が精度と速度のバランスが最もよかった。
プロンプトの改善: 前述の通り、色・位置・属性を組み合わせた具体的な指定が有効。1回で思い通りの結果が出なくても、プロンプトを2〜3パターン試せばたいていの対象は正確にマスクできる。
まとめ|SAM3はStable Diffusionのマスク作業をどう変えるか
SAM3×ComfyUIの組み合わせは、Stable Diffusionワークフローの中で最も面倒だった「マスク作成」の工程を、テキスト入力だけで完了させる仕組みを提供する。手動でペンツールを使っていた時間を考えると、特に大量の画像を扱うユーザーにとっての恩恵は大きい。
導入のハードルも高くない。カスタムノードをインストールし、モデルファイルを所定のフォルダに配置するだけ。既存のComfyUIワークフローに追加する形で始められるため、今の環境を壊す心配はない。
どこから手をつけるか迷っている場合は、まず1枚の写真でSAM3ノード単体のマスク生成を試してみてほしい。テキストを入力して、意図した通りのマスクが出力される感覚を掴めれば、インペイントとの連携は自然に理解できるはず。
商品画像の背景処理を効率化したい人なら、ユースケース1の背景差し替えワークフローから。イラスト制作で部分編集を多用する人なら、ユースケース2の衣装変更フローから始めると、すぐに効果を実感できる。
SAM3は万能ではない。苦手な場面も確かにある。ただし「テキストだけで精密なマスクを切れる」という機能が、マスク作業のデフォルトを書き換える可能性は十分にある。まずは手元の画像で1回試してみること。それが次のワークフロー改善の第一歩になる。
よくある質問(FAQ)
Q: SAM3はVRAM何GB必要ですか?
最低8GBで動作する。ただし高解像度画像やほかのノードとの併用を考えると、12GB以上を推奨。VRAM 6GBのGPUではsmallモデルを選択し、入力解像度を下げれば動く場合もあるが、安定性は保証できない。
Q: SAM3は日本語プロンプトに対応していますか?
現時点では英語プロンプトが前提。日本語で入力しても反応するケースはあるが、精度は英語と比べて大幅に劣る。対象物の指定は英語で行うのが確実。
Q: SAM3で動画のセグメンテーションはできますか?
SAM3自体は動画フレームの処理に対応している。ただしComfyUIでの動画処理は別途AnimateDiffなどのノードとの連携が必要になるため、まずは静止画でのワークフローを確立してから動画に拡張するのが現実的な進め方。
Q: SAM2用のワークフローはSAM3でそのまま使えますか?
ノードの仕様が異なるため、そのまま差し替えることはできない。ただしワークフロー全体の構成(画像読み込み → マスク生成 → インペイント)は共通しているため、SAM3用のノードに置き換える作業自体はそれほど手間にならない。


コメント