OC-SORT Tracker¶
Class: OCSORTBlockV1
Source: inference.core.workflows.core_steps.trackers.ocsort.v1.OCSORTBlockV1
Track objects across video frames using the OC-SORT algorithm from the roboflow/trackers package.
OC-SORT extends SORT with two key mechanisms:
- Observation-Centric Re-Update (OCR): When a track reappears after occlusion, OC-SORT retroactively corrects the Kalman filter using the real observations before and after the gap, reducing accumulated drift.
- Observation-Centric Momentum (OCM): A direction-consistency cost is blended with IoU during association, penalising matches where the candidate detection lies in a direction inconsistent with the track's recent motion.
This makes OC-SORT significantly more robust than SORT in scenes with heavy occlusion, erratic motion, and uniform appearance.
When to use OC-SORT: - Crowded scenes with frequent and prolonged occlusions (e.g. pedestrians, warehouse workers). - Non-linear or erratic motion patterns (e.g. dancing, sports with abrupt direction changes). - When identity consistency over long sequences is more important than raw speed.
When to consider alternatives: - For general-purpose tracking with mixed-confidence detections, try ByteTrack. - For maximum simplicity and speed with a strong detector, try SORT.
Outputs three detection sets: - tracked_detections: All confirmed tracked detections with assigned track IDs. - new_instances: Detections whose track ID appears for the first time. - already_seen_instances: Detections whose track ID has been seen in a prior frame.
The block maintains separate tracker state and instance cache per video_identifier,
enabling multi-stream tracking within a single workflow.
Type identifier¶
Use the following identifier in step "type" field: roboflow_core/trackers_ocsort@v1to add the block as
as step in your workflow.
Properties¶
| Name | Type | Description | Refs |
|---|---|---|---|
name |
str |
Enter a unique identifier for this step.. | ❌ |
minimum_iou_threshold |
float |
Minimum IoU required to associate a detection with an existing track. Default: 0.3.. | ✅ |
minimum_consecutive_frames |
int |
Number of consecutive frames a track must be matched before it is emitted as a confirmed track (tracker_id != -1). Default: 3.. | ✅ |
lost_track_buffer |
int |
Number of frames to keep a track alive after it loses its matched detection. Higher values improve occlusion recovery. Default: 30.. | ✅ |
high_conf_det_threshold |
float |
Confidence threshold for high-confidence detections used in association. Default: 0.6.. | ✅ |
direction_consistency_weight |
float |
Weight for the direction consistency term in the OC-SORT association cost. Higher values prioritise alignment between historical motion direction and the direction to the candidate detection. Default: 0.2.. | ✅ |
delta_t |
int |
Number of past frames used by OC-SORT to estimate per-track velocity for direction consistency momentum. Default: 3.. | ✅ |
instances_cache_size |
int |
Maximum number of track IDs retained in the instance cache for new/already-seen categorisation. Uses FIFO eviction. Default: 16384.. | ❌ |
The Refs column marks possibility to parametrise the property with dynamic values available
in workflow runtime. See Bindings for more info.
Runtime compatibility¶
-
soft— runtimehosted_serverless,dedicated_deployment; executionremote; inputvideo - Block keeps per-video state in process memory (keyed by video_metadata.video_identifier). With remote step execution on stateless or multi-replica HTTP runtimes, successive requests may be served by different worker processes, so the state resets between calls and the output is meaningless for tracking / counting / aggregation. Use local step execution in an InferencePipeline for stable cross-frame results.
-
soft— inputimage - Block depends on temporal context from video or repeated-frame workflows. With a still image/photo, there is no meaningful history to track, compare, aggregate, or visualize, so the block provides little or no benefit.
Available Connections¶
Compatible Blocks
Check what blocks you can connect to OC-SORT Tracker in version v1.
- inputs:
Detections Filter,Path Deviation,Polygon Zone Visualization,Absolute Static Crop,Instance Segmentation Model,SAM 3,Keypoint Detection Model,Reference Path Visualization,Image Stack,SAM 3 Interactive,Stability AI Inpainting,Gaze Detection,Triangle Visualization,Crop Visualization,Byte Tracker,Image Convert Grayscale,EasyOCR,Dynamic Zone,Model Comparison Visualization,Detection Event Log,Camera Focus,Image Slicer,Track Class Lock,YOLO-World Model,OC-SORT Tracker,Overlap Filter,Heatmap Visualization,Stitch Images,Keypoint Visualization,Polygon Visualization,Time in Zone,Detections Stabilizer,Dynamic Crop,Perspective Correction,Segment Anything 2 Model,Line Counter,Polygon Visualization,QR Code Generator,Instance Segmentation Model,VLM As Detector,OCR Model,Roboflow Visual Search Classifier,SAM2 Video Tracker,Circle Visualization,Line Counter,Contrast Enhancement,Grid Visualization,Mask Edge Snap,Distance Measurement,Ellipse Visualization,Time in Zone,Byte Tracker,Keypoint Detection Model,Pixelate Visualization,Detections Transformation,Corner Visualization,SORT Tracker,Image Blur,Label Visualization,Template Matching,ByteTrack Tracker,Bounding Rectangle,Seg Preview,Path Deviation,Object Detection Model,Pixel Color Count,Velocity,Per-Class Confidence Filter,Roboflow Visual Search,Image Preprocessing,Trace Visualization,Morphological Transformation,Color Visualization,SIFT Comparison,Stability AI Outpainting,Detections Consensus,Morphological Transformation,Camera Calibration,PTZ Tracking (ONVIF),Dot Visualization,Keypoint Detection Model,Motion Detection,Halo Visualization,Detection Offset,SAM 3,Google Vision OCR,Classification Label Visualization,Clip Comparison,Bounding Box Visualization,Image Contours,Camera Focus,Halo Visualization,SAM3 Video Tracker,Moondream2,Stability AI Image Generation,Object Detection Model,VLM As Detector,Relative Static Crop,Detections Combine,Contrast Equalization,Identify Changes,Image Slicer,Detections Merge,Mask Area Measurement,BoT-SORT Tracker,Detections Classes Replacement,Instance Segmentation Model,Byte Tracker,SAM 3,Detections Stitch,Text Display,Depth Estimation,Image Threshold,Icon Visualization,Blur Visualization,Line Counter Visualization,Time in Zone,SIFT Comparison,SIFT,Instance Segmentation Model,Background Subtraction,Identify Outliers,Object Detection Model,Background Color Visualization,Detections List Roll-Up,Mask Visualization - outputs:
Detections Filter,Triangle Visualization,Byte Tracker,Model Comparison Visualization,Detection Event Log,Stitch OCR Detections,OC-SORT Tracker,Track Class Lock,Heatmap Visualization,Keypoint Visualization,Detections Stabilizer,SAM2 Video Tracker,Line Counter,Distance Measurement,Ellipse Visualization,Pixelate Visualization,Detections Transformation,Corner Visualization,Overlap Analysis,Bounding Rectangle,Velocity,Per-Class Confidence Filter,Color Visualization,Roboflow Dataset Upload,Detection Offset,Bounding Box Visualization,Halo Visualization,Detections Combine,Mask Area Measurement,Detections Classes Replacement,Model Monitoring Inference Aggregator,Blur Visualization,Path Deviation,SAM 3 Interactive,Stability AI Inpainting,Crop Visualization,Dynamic Zone,Overlap Filter,Florence-2 Model,Time in Zone,Polygon Visualization,Dynamic Crop,Event Writer,Perspective Correction,Segment Anything 2 Model,Line Counter,Polygon Visualization,Circle Visualization,Mask Edge Snap,Time in Zone,Byte Tracker,Florence-2 Model,Roboflow Custom Metadata,SORT Tracker,ByteTrack Tracker,Label Visualization,Path Deviation,Roboflow Vision Events,Trace Visualization,Detections Consensus,PTZ Tracking (ONVIF),Dot Visualization,Halo Visualization,Camera Focus,Roboflow Dataset Upload,Detections Merge,Stitch OCR Detections,BoT-SORT Tracker,Byte Tracker,Detections Stitch,Size Measurement,Icon Visualization,Time in Zone,GeoTag Detection,Background Color Visualization,Detections List Roll-Up,Mask Visualization
Input and Output Bindings¶
The available connections depend on its binding kinds. Check what binding kinds
OC-SORT Tracker in version v1 has.
Bindings
-
input
image(image): Input image with embedded video metadata (fps and video_identifier). Used to initialise and retrieve per-video tracker state..detections(Union[rle_instance_segmentation_prediction,instance_segmentation_prediction,keypoint_detection_prediction,object_detection_prediction]): Detection predictions for the current frame to track..minimum_iou_threshold(float_zero_to_one): Minimum IoU required to associate a detection with an existing track. Default: 0.3..minimum_consecutive_frames(integer): Number of consecutive frames a track must be matched before it is emitted as a confirmed track (tracker_id != -1). Default: 3..lost_track_buffer(integer): Number of frames to keep a track alive after it loses its matched detection. Higher values improve occlusion recovery. Default: 30..high_conf_det_threshold(float_zero_to_one): Confidence threshold for high-confidence detections used in association. Default: 0.6..direction_consistency_weight(float_zero_to_one): Weight for the direction consistency term in the OC-SORT association cost. Higher values prioritise alignment between historical motion direction and the direction to the candidate detection. Default: 0.2..delta_t(integer): Number of past frames used by OC-SORT to estimate per-track velocity for direction consistency momentum. Default: 3..
-
output
tracked_detections(Union[object_detection_prediction,instance_segmentation_prediction,keypoint_detection_prediction,rle_instance_segmentation_prediction]): Prediction with detected bounding boxes in form of sv.Detections(...) object ifobject_detection_predictionor Prediction with detected bounding boxes and segmentation masks in form of sv.Detections(...) object ifinstance_segmentation_predictionor Prediction with detected bounding boxes and detected keypoints in form of sv.Detections(...) object ifkeypoint_detection_predictionor Prediction with detected bounding boxes and RLE-encoded segmentation masks in form of sv.Detections(...) object ifrle_instance_segmentation_prediction.new_instances(Union[object_detection_prediction,instance_segmentation_prediction,keypoint_detection_prediction,rle_instance_segmentation_prediction]): Prediction with detected bounding boxes in form of sv.Detections(...) object ifobject_detection_predictionor Prediction with detected bounding boxes and segmentation masks in form of sv.Detections(...) object ifinstance_segmentation_predictionor Prediction with detected bounding boxes and detected keypoints in form of sv.Detections(...) object ifkeypoint_detection_predictionor Prediction with detected bounding boxes and RLE-encoded segmentation masks in form of sv.Detections(...) object ifrle_instance_segmentation_prediction.already_seen_instances(Union[object_detection_prediction,instance_segmentation_prediction,keypoint_detection_prediction,rle_instance_segmentation_prediction]): Prediction with detected bounding boxes in form of sv.Detections(...) object ifobject_detection_predictionor Prediction with detected bounding boxes and segmentation masks in form of sv.Detections(...) object ifinstance_segmentation_predictionor Prediction with detected bounding boxes and detected keypoints in form of sv.Detections(...) object ifkeypoint_detection_predictionor Prediction with detected bounding boxes and RLE-encoded segmentation masks in form of sv.Detections(...) object ifrle_instance_segmentation_prediction.
Example JSON definition of step OC-SORT Tracker in version v1
{
"name": "<your_step_name_here>",
"type": "roboflow_core/trackers_ocsort@v1",
"image": "<block_does_not_provide_example>",
"detections": "$steps.object_detection_model.predictions",
"minimum_iou_threshold": 0.3,
"minimum_consecutive_frames": 3,
"lost_track_buffer": 30,
"high_conf_det_threshold": 0.6,
"direction_consistency_weight": 0.2,
"delta_t": 3,
"instances_cache_size": "<block_does_not_provide_example>"
}