🦊切り抜き
👈️ |
👉️ |
書き直しましたnomadoor.icon
このページは少し情報が古いかも
画像から特定のオブジェクトだけ切り抜いたり、背景除去したりするタスクです
ComfyUIで使われているものにはセグメンテーションとマッティング(matting)の二種類があり、細かいこというと別物なんですが面倒くさいのでまとめて"切り抜き"と呼びます ComfyUIにおける透過画像の仕組み
そしてマスク画像は黒背景に白で描かれ、白い部分がマスクされ(残り)ます 🚨混乱ポイント
https://gyazo.com/ea8f74e75643d8f9f190ab24a3fa7995
実装ミスだと思っているけれど正しい動作なんだろうか?nomadoor.icon
そもそも透過画像ロードしたときにできるマスクの白黒が逆じゃない?
投げてみたけれど優先度は低そうだnomadoor.icon
そうか、黒い部分は編集せず、白い部分は編集される → 白い部分にアルファチャンネルを付加する、だからこれでいいのか
切り抜きというのはこのマスク画像をいろんな方法で作るという作業です
手動
やはり頼れるのは己の手のみ
https://gyazo.com/c79966751014c9b4cbd1d6138fa752a1
画像を右クリックして出てくるメニューのOpen in MaskEditorをクリックするとエディターが出てきます
ペンで描いて右下のSave to nodeをクリックするとマスクとして保存されます
"前景"と"背景"をグラデーションのあるマスク(alpha matte)で区切ります
とてもいろんな種類があり、それを動かすカスタムノードも無限にあります コマッタネ…
...
🪢カスタムノード
現状ではオススメnomadoor.icon
https://gyazo.com/55b25e2c8f975db677719c7544caa4dd
セグメンテーション (segmentation)
画像の中から物体の"形"を白と黒のマスク(バイナリマスク)で抽出します
🪢カスタムノード
https://gyazo.com/f8e4ac73f372dce2e4e2f37d052296ca
画像を右クリックして出てくるメニューのOpen in SAM Detecterを押すとEditorが出てきます
SAMは物の形を潜在的に理解しているので、髪に点を打ては髪全体が、追加で顔に点を打てば頭全体がマスクになります
左クリックでマスクにしたい部位、右クリックでマスクにしたくない部位に点を打ちます
カテゴリ駆動の切り抜き
すでに用意されたカテゴリの形でセグメンテーションします
人の部位、服に関するものが多いです
🪢カスタムノード
https://gyazo.com/4e66dc65949ac423c5357d46ba4a59d8
他にもFace / Fashion / Body Partなどがあります
プロンプト駆動の切り抜き
テキストで指示したオブジェクト(例えばリンゴ、車、顔 etc.)を探しだして切り抜きます
いくつかの手法があります
CLIPの知識を使って任意の言葉でセグメンテーションします
🪢カスタムノード
https://gyazo.com/86c239b7edf6712f76123b0059244705
とても粗いので切り抜きとして使うことはほとんどありません
YOLOの代わりに物体検出として使うことがあります
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フレーム目からは自動で追跡してくれます