🦊Detector
🏠/🦊雑に学ぶComfyUI
前/🦊SEGS
次/🦊Detailer
物体検出(Object Detection)とセグメンテーションを行います
画像内にある特定の物体の位置を検出、切り抜きするタスクです
前提知識
🦊ComfyUI-Impact-Pack
🦊SEGS
BBOX
https://gyazo.com/1a10dcd7dcf8f72eee275a3d8484f882
バウンディングボックスのこと
物体の位置を四角形の座標で表す
SEGM
https://gyazo.com/cf587c9f4dcde9c0df17fc97962ff6aa
セグメンテーションのこと
物体の形を検出します
BBOXでオブジェクトの位置を指定 → これをSAM(Segment Anything Model)に渡しSEGMを作成 → これをマスクとして使ったり、SEGSとしてDetailerに受け渡したりする流れが多いです
🐈YOLO (BBOX)
高速な物体検出といえばこれですね
基本的にYOLOはあまり多くの種類を見分けることはできず、例えば顔だったら顔専用の、車だったら車専用のYOLOモデルがあります(もしくは作ります)
🪢追加のカスタムノード
https://github.com/ltdrdata/ComfyUI-Impact-SubpackComfyUI-Impact-Subpack
https://gyazo.com/ea6896b53f75b7d21475e19eac842e2d
yolo-face.json
おそらくUltralyticsDetectorProviderノードの中にすでにface/hand/personのモデルがあります
他のモデル
探してきた、もしくは作ったYOLOも使うことができます
ComfyUI Managerメニュー → Install Models → YOLOで検索
https://huggingface.co/Bingsu/adetailerBingsu/adetailer
https://github.com/ultralytics/assets/releases/ultralytics/assets
リンクは貼りませんが、CivitaiでAdetailerと探すとNSFWに特化したモデルが出てきます
作ってみる
https://github.com/nkchocoai/TrainYOLOModelTutorial/tree/masterYOLOモデルを作る
https://github.com/MNeMoNiCuZ/yolov8-scripts/Yolov8 Training & Inference Scripts
📎CLIPSeg (BBOX)
高速なのはいいですが、YOLOは特定の物体しか認識できないので少し使い勝手が悪いですね
CLIPSegはCLIPの知識を使ってセグメンテーションを行う技術です
これを応用することで、何万という種類の物体をテキストで検出できるようになります
cf. Zero Shot Object Detection with OpenAI's CLIP
🪢追加のカスタムノード
https://github.com/biegert/ComfyUI-CLIPSegComfyUI-CLIPSeg
https://gyazo.com/894f41f4d27b7c28123fd3efffdb14a6
CLIPSeg.json
無駄に検出範囲が大きくなることが多く精度はイマイチです
というよりも、CLIPSegが作ったマスクからBBOXを作るのですが、CLIPSegのセグメンテーション精度がイマイチなのです
故にCLIPSeg自体がセグメンテーションできるにも関わらずBBOXの作成にしか使いません
🦄YOLO World + EfficientSAM (BBOX & SEGM)
最新のYOLOにCLIPSegのように自然言語でオブジェクトを検出できるYOLO-Worldが登場しました
🪢追加のカスタムノード
https://github.com/ZHO-ZHO-ZHO/ComfyUI-YoloWorld-EfficientSAMComfyUI-YoloWorld-EfficientSAM
https://gyazo.com/354b1a0d7076398b849caaaf8ee2148e
YOLO-World.json
好きな言葉で物体検出ができます
ImpactSimpleDetectorSEGSノードのbbox_thresholdは低めの値にした方が良いかもしれません
このカスタムノードにはEfficientSAMという高速なSAMを使う機能もあります
これを活用し、BBOXだけでなくセグメンテーションも行うことができます(下半分のworkflow)
😚MediaPipe Face Mesh (BBOX & SEGM)
顔を検出し、メッシュを生成するAIです
これ一つでBBOXだけでなく、セグメンテーションもすることができます
🪢追加のカスタムノード
ComfyUI-Inspire-Pack
https://gyazo.com/b1404d207e1a7791f71f73ad0519cdb0
MediaPipe_Face_Mesh.json
顔特化であり、目や口といったパーツ単位でのセグメンテーションが簡単にできます
🖼️Segment Anything Model (SEGM)
上のYOLOやCLIPSegが作ったBBOXを元にセグメンテーションします
sam_model_optにSAMモデルを入力すれば自動でセグメンテーションになります
https://gyazo.com/52bcdbd797d1df470a1ba3febb6bf682
SAM.json
sam_model_optにSAMLoaderが接続されていれば自動でセグメンテーションになります
🦨Grounding DINO + HQ-SAM (BBOX & SEGS)
CLIPのように自然言語による物体検出を行うGrounding DINOとSegment Anything Modelの高性能版であるHQ-SAMを組み合わせてセグメンテーションを行います
Impact-Packとは別系統のカスタムノードのため、マスクからSEGSへ変換します
🪢追加のカスタムノード
ComfyUI Segment Anything
https://gyazo.com/b09407b280926ef4740132c2561ed37c
HQ-SAM.json
CLIPSeg同様、大体のオブジェクトをセグメンテーションできるので、人、顔、手以外はこれを使うことが多いです