generated at
🦊SEGS


ComfyUI-Impact-Pack独自の概念にSEGSというものがあります
>SEGSは、マスク、bbox、クロップ領域、confidence、label、ControlNet情報など、Detailerの操作に必要な情報を含む包括的なデータフォーマットです。
いろいろな情報がひとつにまとまっていて、マスクやBBOXとの違いが分からないと混乱してしまいます
一つ一つ丁寧に見ていきましょう


前提として便利なノード
SEGSと元の画像を入力することで、SEGSが持つマスクやBBOX情報をプレビューすることができます


クロップ領域とは?
マスクとの違いがわかりにくいかもしれませんが、上の画像のような関係性です
マスクやBBOXを基準に適当な余白を加えてクロップ領域にします
Detailerはこのクロップ領域のみで行うinpaintingです


BBOXとクロップ領域
YOLOやCLIPSegで物体検出をしたときのBBOXとクロップ情報がSEGSとして出力されます
この場合はBBOXがそのままマスクとして使用されます
bbox_threshold
bbox_dilation
BBOXの範囲を大きくします
crop_factor
クロップ領域を大きくします
1にすると(🟩)BBOXちょうど、これを増やしていくと(🟨)マスクの周囲も範囲に含まれるようになる
inpaintingモデルを使うときは周囲の情報も欲しいためcrop_factorを大きくしたほうが良いでしょう
drop_size
主に🦊Detailer_複数の対象のときに使いますが、小さすぎるBBOXを無視します


SEGMとクロップ領域
上のworkflowにSAMを加えると、BBOXの範囲内にあるオブジェクトをセグメンテーションします
つまるところ対象が顔なら、顔の形に合わせて切り抜きされます
post_dilation
マスクの形そのまま大きくなります


MaskToSEGS
上2つで使ったImpactSimpleDetectorSEGSノードはYOLO + SAM、もしくはCLIPSeg + SAMの組み合わせでしかSEGMを作れません
マスクを作る方法は他にもあります
手動、HQ-SAM + DINO etc.
そこで、マスクからSEGSに変換するMaskToSEGSノードというものが用意されています
手動マスク
combined
離れた位置にマスクがあった場合、MastToSEGSは自動で2つのSEGSに分割します
combined をenabledにした場合は、離れていても一つのSEGSとして出力します
crop_factor
上に同じ
bbox_fill
マスクが全部埋まるように矩形のマスクを作ります
drop_size
この値より小さなマスクは無視されます
contour_fill
ドーナツのようにぐるっと取り囲むマスクがあったとき、中空の部分も埋めます

ControlNet