subject-follow — Video Segmentation AI Model
Click a person on the first frame and the crop follows that one person for the whole clip, delivered vertical at 1080x1920 with the audio kept. Built for a fixed wide stage shot where several people are on screen and you want a single-subject cut of one of them. Tracking is by instance, so the crop stays on the person you picked when they cross in front of someone else.
What it does
Click one person on the first frame and Subject Follow returns a finished 1080x1920 vertical video that stays on them, with the source audio carried through unchanged.
SAM 3.1 does the tracking, but the track is not the deliverable - the moving crop is. It is built for a fixed wide stage shot with several people in it, and tracking is by instance, so the crop stays with the person you picked when someone else crosses in front of them.
When to use it
- Horizontal footage turned vertical without opening an editor
- One person kept centred while others move through the frame
- Audio surviving the reframe, so the clip is publishable as-is
- A whole batch framed alike, by applying one framing preset
- Handing the raw crop to an upscaler, using native output
Details
- CategoryVideo Segmentation
- Year2026
- LicenseCustom (SAM License)
Compliance & Provenance
- ProviderMeta (open) · Specialized
- EU AI Act RiskMinimal Risk
- Art. 50 TransparencyNot applicable
Inputs & Outputs
- VideoInputvideo
Source video. A fixed wide shot with no cuts works best; 4K is worth it because the crop is taken from the source.
- VideoOutputvideo
1080x1920 vertical video following the selected person, with the source audio.
Parameters
- pointstringdefault
Who to follow: click the person on the preview frame. Stored as "x,y" fractions of width and height.
The subject to follow, as "x,y" fractions of frame width and height (e.g. "0.31,0.42"), pointing at that person on the frame named by 'seed_time'. Required — there is no default, because centring on a line of people would silently pick a different person and still look like a successful run. This is a coordinate, not an identity: the node performs no face recognition and cannot be given a reference photo.
- seed_timefloatdefault 0range 0–600
Which second the click refers to. Pick a moment where the person is clearly visible and not hidden behind someone.
Time in seconds of the frame the 'point' refers to. Tracking runs FORWARD from here, so anything before this moment inherits the first tracked position — set it to the first instant the subject is clearly visible rather than to the middle of the clip.
- framingstringdefault naturaloptions: natural, full_body, upper_body, face
How tightly to frame the person. Natural keeps the original size; the others punch in until they fill the frame that much.
How tightly the tracked subject is framed. The node measures the subject and solves for the punch-in, so this replaces guessing at 'zoom': a subject's share of the output height is their share of the source height times zoom. 'natural' applies no punch-in and leaves the 'zoom' value in force. 'full_body' fills about 85% of the frame height, 'upper_body' and 'face' crop tighter and ride the crop up toward the head. Sizing targets the subject's TALL moments, so an arm raised or a step toward camera does not clip. The punch-in is capped at 4x, so a very distant subject lands short of the target.
- zoomfloatdefault 1range 1–4
Punch-in on the subject. 1 keeps the natural size; higher crops tighter and enlarges more.
Punch-in factor on the tracked subject. 1.0 (default) crops the 9:16 window at its natural size; up to 4.0 tightens on the subject. Note the cost: the delivered frame is always 1080x1920, so a tighter crop enlarges a smaller piece of the source.
- track_fpsfloatdefault 5range 1–15advanced
How often the tracker looks. Higher follows fast movement more closely and costs more GPU time.
Sampling rate for tracking, in frames per second. The pan is interpolated between samples, so this does not have to match the source rate; 5 is enough for stage choreography. Raising it increases GPU time roughly linearly and shortens how much source time one tracking session covers, since a session caps at 300 sampled frames.
- mask_widthintegerdefault 960range 480–1920advanced
Width the tracker sees, in pixels. The crop is always taken from the full-resolution source.
Width in pixels that frames are downscaled to before tracking. Only affects where the subject is found, never the delivered resolution — the crop is taken from the untouched source. Lower is faster and uses less VRAM; too low and a distant person's mask gets too small to locate reliably.
- output_scalestringdefault deliveredoptions: delivered, nativeadvanced
Deliver the finished 1080x1920 vertical video, or the crop at its own size for an upscaling node to enlarge.
What size the crop is written at. 'delivered' (default) writes the finished 1080x1920 fancam. 'native' writes the crop at its own pixel size with no enlargement — on the tighter framings that is only ~300px wide, so scaling it here throws the detail away before a super-resolution node can use it. Chain 'native' into a video upscaling node (FlashVSR v1.1 is 4x and the fastest) to get a vertical clip that is both tight and sharp; the SR output is already 9:16 and larger than 1080x1920, so nothing has to be scaled down afterwards. The run log reports the crop size and how much enlargement it would have needed.
Limitations
- A tight crop out of a wide shot is soft by construction - the punch-in trades framing against sharpness
- One subject per run, chosen by a single click on the first frame
Tags
Alternatives in Video Segmentation
- SAM3.1 (Video)
Language-prompted video segmentation and tracking — SAM 3.1 Object Multiplex. Up to 16 objects tracked jointly, max 300 input frames (~10s at 30fps). 1-3 min per 200 frames.