🦊切り抜き
次/
画像から特定のオブジェクトだけ切り抜いたり、背景除去したりするタスクです
細かいこというと別物なんですが面倒くさいのでまとめて"切り抜き"と呼びます
🪟透過画像の仕組み
そしてマスク画像は黒背景に白で描かれ、白い部分がマスクされ(残り)ます 🚨混乱ポイント
https://gyazo.com/ea8f74e75643d8f9f190ab24a3fa7995
実装ミスだと思っているけれど正しい動作なんだろうか?nomadoor.icon
そもそも透過画像ロードしたときにできるマスクの白黒が逆じゃない?
投げてみたけれど優先度は低そうだnomadoor.icon
切り抜きというのはこのマスク画像をいろんな方法で作るという作業です
👍手動
やはり頼れるのは己の手のみ
https://gyazo.com/c79966751014c9b4cbd1d6138fa752a1
画像を右クリックして出てくるメニューのOpen in MaskEditorをクリックするとエディターが出てきます
ペンで描いて右下のSave to nodeをクリックするとマスクとして保存されます
🧩Rembg
🪢カスタムノード
https://gyazo.com/415faa492dd1749d424b78f2f8334eb2
u2netやisnet-animeの中からよさそうなものを選びます
RMBG-1.4 / BiRefNet
Rembgよりもちょっと性能が良いです
🪢カスタムノード
👨🦱Segment Anything Model
Rembgは"背景"というとてもざっくりとしたものをマスクにします
マスクを反転しても、前景と背景の二種類どちらかしか切り抜きできません
もっと自由に好きな部位のみのマスクとかしたいですね
🪢カスタムノード
https://gyazo.com/f8e4ac73f372dce2e4e2f37d052296ca
画像を右クリックして出てくるメニューのOpen in SAM Detecterを押すとEditorが出てきます
SAMは物の形を潜在的に理解しているので、髪に点を打ては髪全体が、追加で顔に点を打てば頭全体がマスクになります
左クリックでマスクにしたい部位、右クリックでマスクにしたくない部位に点を打ちます
👁️HQ-SAM + Ground DINO
🪢カスタムノード
https://gyazo.com/08100911d5aab2ff295516a96935e18f
dogと入れれば犬が、cupと入れればカップのみが切り抜きされます
めちゃめちゃ使うnomadoor.icon
Florence-2 + Segment Anything Model 2
統合VLMであるFlorence-2はOCRやVQAなどいろんなことができるんですが、Ground DINOと同じように、テキストで指示した物体の位置をBBOXで教えてくれる物体検出をすることもできます 🪢カスタムノード
https://gyazo.com/d5e2589191a86ef939137634bc33ec0c
Florence2Runノードのtext_input欄に検出した物体名を入れ、taskをcaption_to_phrase_groundingにします 検出した物体が2つ以上会った場合(e.g. 上の画像ではfaceが2つある)
全部まとめて一つのマスクとして出力したいときはどうしたらいいんですか…?nomadoor.icon
🎥動画の切り抜き
Segment Anything Model 2の真価は動画で目的のオブジェクトを追跡してセグメンテーションできるところにあります
上のFlorence-2 + Segment Anything Model 2を動画へ拡張してみましょう
https://gyazo.com/0917ed6ad7a32b1b9b35df242639d038
🟪Florence-2で最初のフレームから(今回は)"human"で物体検出します
SAM2は動画の最初のフレームで位置を指定してあげれば、2フレーム目からは自動で追跡してくれます
📎CLIPSeg
CLIPの知識を使って任意の言葉でセグメンテーションします
🪢カスタムノード
https://gyazo.com/86c239b7edf6712f76123b0059244705
とても粗いので切り抜きとして使うことはほとんどありません
YOLOの代わりに物体検出として使うことがあります