🦊SEGS
SEGSは、マスク、bbox、クロップ領域、confidence、label、ControlNet情報など、Detailerの操作に必要な情報を含む包括的なデータフォーマットです。 いろいろな情報がひとつにまとまっていて、マスクやBBOXとの違いが分からないと混乱してしまいます
一つ一つ丁寧に見ていきましょう
前提として便利なノード
https://gyazo.com/dabf98325fbfdf6e356b4fdceb112c38
SEGSと元の画像を入力することで、SEGSが持つマスクやBBOX情報をプレビューすることができます
クロップ領域とは?
https://gyazo.com/e52ea814ccd051de4c939bb7e90eb941
マスクとの違いがわかりにくいかもしれませんが、上の画像のような関係性です
マスクやBBOXを基準に適当な余白を加えてクロップ領域にします
Detailerはこのクロップ領域のみで行うinpaintingです
BBOXとクロップ領域
https://gyazo.com/810cd1d5abd56101c3c466e101c68a49
YOLOやCLIPSegで物体検出をしたときのBBOXとクロップ情報がSEGSとして出力されます
この場合はBBOXがそのままマスクとして使用されます
bbox_threshold
bbox_dilation
BBOXの範囲を大きくします
crop_factor
クロップ領域を大きくします
https://gyazo.com/73af8ac93e427d68b47f4f1643222da0
1にすると(🟩)BBOXちょうど、これを増やしていくと(🟨)マスクの周囲も範囲に含まれるようになる
inpaintingモデルを使うときは周囲の情報も欲しいためcrop_factorを大きくしたほうが良いでしょう
drop_size
SEGMとクロップ領域
https://gyazo.com/09aea08bb558c0fe5aa8cada84993c57
上のworkflowにSAMを加えると、BBOXの範囲内にあるオブジェクトをセグメンテーションします
つまるところ対象が顔なら、顔の形に合わせて切り抜きされます
post_dilation
マスクの形そのまま大きくなります
https://gyazo.com/667231cdda003f55624a053ae247e324
MaskToSEGS
マスクを作る方法は他にもあります
手動、HQ-SAM + DINO etc.
手動マスク
https://gyazo.com/4f148df7de86626746ec3d6d8107db2f
combined
離れた位置にマスクがあった場合、MastToSEGSは自動で2つのSEGSに分割します
combinedをenabledにした場合は、離れていても一つのSEGSとして出力します
https://gyazo.com/17c33a2742df5b8e6951bd629ca7cbd2
crop_factor
上に同じ
bbox_fill
マスクが全部埋まるように矩形のマスクを作ります
https://gyazo.com/52cb9e12f47dc9054f8ca4b643faf36f
drop_size
この値より小さなマスクは無視されます
https://gyazo.com/24091cca46595d37f99a9a6f8548a069
contour_fill
ドーナツのようにぐるっと取り囲むマスクがあったとき、中空の部分も埋めます
https://gyazo.com/0f937efffea10bad9f94c32bd5b012c3
ControlNet