見出し画像

ComfyUI 標準ノード + α で画像編集! BiRefNet・Depth-Anything-V3・Lama Remover の使い方 【画像生成AI】

はじめに

こんにちは、きまま / Easygoing です。

今回は、ComfyUI の標準ノードに カスタムノード を少し加えた画像編集についてご紹介します。

港の花火を背景にした茶色い髪のアニメ少女のイラスト
港の花火

SAM 3.1 は汎用モデル

前回は、SAM 3.1 モデルを使った背景除去をご紹介しました。

SAM 3.1 モデルは、テキスト入力すれば何でも検出できる 汎用モデル です。

SAM 3.1 モデルの使い方

汎用モデルは、どのような対象でも認識できるのでとても便利ですが、前景と背景の二分割 の用途のみに限ると、専用のモデル を使う方が精度が優れています。

そこでまず、ComfyUI の標準ノードで利用できる BiRefNet モデル の使い方をご紹介します。

BiRefNet は背景除去の専用モデル!

BiRefNet は、二分割画像セグメンテーション(前景と背景を分離する)専用の AI モデルです。

BiRefNet モデルシリーズにはいくつか種類があるのですが、オーソドックスな BiRefNet モデルは Comfy Org から公式版 が配布されているので、今回はこちらを使います。

ワークフロー

BiRefNetを使った背景除去のComfyUIワークフロー図

モデル

birefnet.safetensors の設置場所

  • ComfyUI\models\background_removal(フォルダを新規作成)

カスタムノード

ComfyUI Nodes Managerでeasygoingと検索した画面のスクリーンショット
Nodes Manager で easygoing で検索

BiRefNet で背景除去

それでは、SAM 3.1 と BiRefNet の背景除去を比較してみます。

入力画像

花火を背景にしたアニメ少女の入力画像

SAM 3.1 で背景除去

SAM 3.1による背景除去結果(マスクと切り抜き)

BiRefNet で背景除去

BiRefNetによる背景除去結果(細部が正確)

SAM 3.1 と比較すると、BiRefNet の背景除去は 髪の毛 などの細部を正確に分類していることが分かります。

BiRefNet の境界はギザギザ

今度は、BiRefNet の境界部分をもっと拡大してみます。

BiRefNet の拡大図

BiRefNetマスクの境界部分拡大図(ギザギザが見える)

BiRefNet の検出を拡大してみると、細い髪の部分が ギザギザ途切れたような表現 になっています。

ComfyUI の実装では、BiRefNet モデルは 1024 x 1024 の固定解像度 で処理を行うため、高解像度のイラストでは解像度が足りず、このようになってしまいます。

半透明の部分をマスク領域に含める

それでは、髪が途切れずに確実に前景に入るようにするため、BiRefNet が前景と後景の間の 半透明 に判定した部分を 全て前景 に含めてみます。

BiRefNet で作成したマスクを Threshold Mask ノードに接続し、Threshold最低値の 0.01 に設定します。

Threshold Mask = 0.01

Thresholdを0.01にしたマスクと背景除去の結果

前と比べると、髪は前景 にしっかり含まれるようになりましたが、今度は境界部分に 細く背景 が入り込んでしまいました。

Mask Refine ノードでマスク領域を調整!

ここから、カスタムノードを使ってマスク領域をさらに調整します。

ComfyUI-AutoMaskMask Refine ノードは、pymatting と呼ばれる方法でオリジナルのイラストとマスクを比較して、マスク領域を調整するカスタムノードです。

Mask Refine ノードで境界を調整

Mask Refineノード適用後の綺麗なマスクの境界と切り抜き画像

Mask Refine ノードを使うと、マスクの境界をかなりきれいに修正することができました。

一方で、Mask Refine ノードは blur(ぼかし)をかけてから境界を調節するので 髪の細い部分は薄く なり、またマスクに囲まれた「角」の部分が丸まってしまう 欠点があります。

マスクを自動調整するノードは、どれも得手不得手があるので、利用するケースに応じて使い分けるのが良いでしょう。

BiRefNet が苦手な対象もある

BiRefNet は、主に テクスチャを中心に前景と背景を分離していますが、境界部分に似たような構造 があると分離の精度が低下してしまいます。

先ほどのワークフローを別のイラストで試してみます。

入力画像2

花火と海を背景にしたアニメ少女の入力画像2

BiRefNet → Mask Threshold → Mask Refine

花火の一部と髪に囲まれた小さな海の領域が誤検出されたマスク結果

このイラストでは、髪と色や明るさが近い 花火の一部 が、誤って前景と判定されてしまいました。

また、右下の 髪に囲まれた細かい海 の領域も背景と認識されず、前景に含まれてしまっています。

そこで、別のモデルを使って分離の精度を上げる方法を考えてみます。

Depth-Anything-V3 は深さを推定する

Depth-Anything-V3 モデルは、中国の ByteDance が公開している 単眼深度推定(1枚のイラストから深さを推定) を行うモデルです。

深度推定を正確に行う場合、本来であれば 複眼以上 の入力が必要になりますが、Depth-Anything-V3 モデルは多くの画像を学習することにより、単眼でもかなりの精度 で深度推定を行うことができます。

Depth-Anything-V3 モデルも、先ほどの BiRefNet と同じように ComfyUI の標準ノード で利用できます。

Depth-Anything-V3 モデルを使ってみる!

それでは、実際に Depth-Anything-V3 モデルを使って深度推定を行ってみます。

ワークフロー

Depth-Anything-V3の深度推定の ComfyUI ワークフロー図

モデル

設置フォルダ

  • ComfyUI\models\geometry_estimation(フォルダを新規作成)

Depth-Anything-V3 の単眼深度推定

オリジナル画像とDepth-Anything-V3で得られた深度マップ
オリジナルの画像  |  深度マップ(白が手前、黒が奥側)

Depth-Anything-V3 モデルを使って 深度マップ を作成すると、キャラクターが手前に来て、花火や髪の毛に囲まれた海の領域が 正しく遠景 と認識されていることが分かります。

深度マップから前景を判定する

それでは、深度マップから実際に前景を取り出してみましょう。

ワークフロー

BiRefNetとDepthを組み合わせた全景抽出ワークフロー

モデル

カスタムノード

まず、Depth-Anything-V3 で作成した深度マップから、BiRefNet で検出した領域を除く 不要な部分を黒く 切り取ります。

Depthマップから不要部分を黒く切り抜いた画像
Depth-Anything-V3  |  不要部分を黒で切り抜く

続いて、深度マップは黒から白までの グラディエーション で存在するので、前景と背景を分ける 閾値 を探します。

Convert Image to Mask ノードで深度マップをマスクに変換した後に、Auto Mask Threshold ノードに接続します。

Auto Mask Thresholdが提案する8つの閾値候補のマスク画像と切り抜いたイラスト
8つの候補を自動で提案

Auto Mask Threshold ノードは、マスクのヒストグラム(度数分布)を分析して、適切な 閾値の候補を8つ提案 してくれます。

今回は、中央の 5番目 の出力が良さそうだったので、threshold5 に設定して実行します。

BiRefNet単体とDepthを組み合わせの切り抜き画像の比較
BiRefNet  |  BiRefNet + Depth-Anything-V3

最後に Mask Refine を通して境界を調整します。

こうして、BiRefNet と Depth-Anything-V3 を 組み合わせる ことで、花火と髪に囲まれた領域を 正しく背景 に分離することができました。

Lama Remover で不要物を消去する!

最後に、Lama Remover の使い方をご紹介します。

Lama Remover は、以前にご紹介した 画像修復モデルLaMa を ComfyUI で使えるようにしたカスタムノードです。

LaMa モデル の画像修復について

ワークフロー

SAM 3.1とLama Removerを使った不要物を消去するワークフロー

モデル

sam3.1_multiplex の設置フォルダ

  • ComfyUI\models\checkpoints

big-lama.pt の設置フォルダ

  • ComfyUI\models\lama(フォルダを新規作成)

カスタムノード

ComfyUI の Nodes Manager の Lama Remover の検索画面のスクリーンショット

SAM 3.1 で消去したい対象を検出する

まず、SAM 3.1 モデルで消去したい対象を検出します。

今回は、次のイラストから 花火ボケ照明 を消去してみます。

入力画像3

花火とボケ照明のある青い服を着た銀髪少女のアニメの入力画像3

プロンプト

fireworks:10, bokeh lights:30

SAM 3.1 モデルで、複数の対象を同時に検出 したいときは、コロンのあとに 個数 を書くと最大でその個数まで一度に検出してくれます。

SAM 3.1が検出した花火とボケ照明のマスクと切り抜いた画像
SAM 3.1 が検出した花火とボケ照明

Lama Remover で不要物を消去する!

続いて、Big Lama Remover ノードに元のイラストとマスク領域を繋いで対象を消去します。

Lama Removerによる花火・ボケ照明消去前後の比較
オリジナル  |  消去後

こうして、SAM 3.1 と LaMa の2つの AI モデル を組み合わせて使うことで、簡単に不要な対象を消去することができました。

SAM 3.1 と LaMa は、いずれも軽量で高速のモデルなので、イラスト編集の下処理 の過程で大いに活用できるのではないでしょうか。

まとめ:AI を組み合わせて利用する!

  • BiRefNet は背景を分離

  • Depth-Anything-V3 は深さを推定

  • SAM 3.1 と LaMa を組み合わせて不要物を消去

今回は、ComfyUI での SAM 3.1・BiRefNet・Depth-Anything-V3・LaMa モデルの使い方をご紹介しました。

今日では、数多くの AI モデルがオープンウェイトで公開されていて、画像から領域を検出する segmentation の技術に限っても、性能の優劣 を単純に決めることはできません。

Bracer Jack 氏の segmentation モデルの比較動画

AI モデル には、それぞれ 得手・不得手 がありますが、複数のモデルを 組み合わせて利用する ことで、足りない部分をお互いにカバーしながら利用することができます。

最近では、ComfyUI が公式に対応するモデルも多くなり、新しいモデルを試すのが簡単になったので 無限の可能性 が広がっています。

白い服を着た女性が花火を背景にこちらを見て微笑んでいるアニメイラスト
ComfyUI の可能性は無限大

みなさんもこれを機会に、新しいモデルにチャレンジしてみてはいかがでしょうか?

最後までお読みいただきありがとうございます!


更新履歴

2026.8.10

  • ワークフローを一部更新しました


English Article


いいなと思ったら応援しよう!

この記事が参加している募集