IAMCCS SCAIL Identity Seeder
Stop SCAIL-2 from merging two people into one tracked blob
- model
- image
- bboxes
- initial_masks
SCAIL-2's whole selling point is that it dropped the skeleton and takes support masks directly - which is why it can do multi-character and animal driving at all. But the auto-detector that builds those masks has a bad habit: when two people are close together, their masks overlap and merge into one tracked object, and then your "two characters" shot silently becomes "one character with two halves". IAMCCS_ScailIdentitySeeder exists to stop that. You tell it where each person is with a click or a box, and it hands SCAIL-2's tracker exactly one clean mask per subject.
How it works
It's a thin, well-targeted wrapper around SAM3 (the same SAM3 model feeding SAM3_VideoTrack). You give it a model and an image - the first frame of your pose video, or the resized reference image, at the resolution the tracker actually runs on - plus either:
mode: points- one positive click per person, as a JSON list like[{"x":120,"y":210},{"x":480,"y":205}]. Order sets identity order.mode: boxes- one bounding box per person, wired from a boxes editor. Again, order = identity order.
refine_iterations (default 2) runs that many SAM decoder refinement passes per object; 0 gives you the raw prompt mask. Out the other side comes a single initial_masks output (type MASK) that plugs directly into SAM3_VideoTrack.initial_mask. The author's instructions are explicit: leave SAM3_VideoTrack's conditioning disconnected and let these seed masks do the tracking.
The mechanism that makes it work is the guarantee behind it: one prompt per person, so one tracked object per person, so no overlap-merging. If the auto-detector can't decide where one person ends and the next begins, you decide for it.
Why this is the node you reach for
Multi-identity is SCAIL-2's marquee feature and also its fiddliest setup. Anyone who has watched two characters melt into each other mid-shot knows the auto-mask path isn't reliable when bodies overlap. Seeding masks by hand costs you a few seconds per subject and buys you stable identity through the whole chunked clip - and since identity drift across chunks is already SCAIL-2's known failure mode, you don't want to stack a bad initial track on top of it.
One practical note from the tooltips: feed it the image at the resolution the tracker runs on, not your full 4K render. Segmenting the same frame at two different scales gives the tracker a different mask than the one it expects, and the drift shows up at the seam.
Install
Part of IAMCCS-nodes:
- ComfyUI Manager → search "IAMCCS" → install → restart.
- Or:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
Restart ComfyUI after. The pack wants ComfyUI ≥ 0.3.0, Python ≥ 3.12, Torch ≥ 2.8. You'll also need the SAM3 model itself loaded (same one your SAM3_VideoTrack node uses) and a SAM2/SAM3-compatible points or boxes source upstream - the node doesn't bring its own point editor, it just reads the JSON or BOUNDING_BOX you hand it.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | SAM3 model (same one feeding SAM3_VideoTrack). | |
| image | IMAGE | Frame to segment, at the resolution the tracker runs on (resized reference image, or pose video's first frame). | |
| mode | COMBO | points | points: one positive click per person (from a PointsEditor). boxes: one bounding box per person. |
| refine_iterations | INT | 20–5 | SAM decoder refinement passes per object (0 = raw prompt mask). |
| pointsopt | STRING | points mode: JSON list, one positive point per person, e.g. [{"x":120,"y":210},{"x":480,"y":205}]. Order sets identity order. | |
| bboxesopt | BOUNDING_BOX | boxes mode: one bounding box per person. Order sets identity order. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| initial_masks | MASK | — |