BoT-SORT Tracker¶
Class: BoTSORTBlockV1
Source: inference.core.workflows.core_steps.trackers.botsort.v1.BoTSORTBlockV1
Track objects across video frames using the BoT-SORT algorithm from the roboflow/trackers package.
BoT-SORT follows a ByteTrack-style association pipeline (high- and low-confidence detections, Kalman track states) and can apply camera motion compensation (CMC) before association when enabled. CMC estimates a global affine motion between frames so predicted boxes align better when the camera moves.
When to use BoT-SORT: - Scenes with moving or shaking cameras (enable Camera motion compensation). - Dense detection noise where ByteTrack-style two-stage matching helps. - When you want ByteTrack-like behaviour with an optional motion-compensation stage.
When to consider alternatives: - Fixed camera and you only need speed: ByteTrack or SORT may be simpler. - Heavy occlusion and erratic object motion without camera motion: OC-SORT. - Low-texture backgrounds where sparse-feature CMC is unreliable.
Camera motion compensation: When enabled, the block passes the workflow image pixels to the tracker each frame. If the image cannot be decoded to a numpy array, the tracker runs without CMC for that frame (a warning is logged).
Instant first-frame activation defaults to off so behaviour aligns with other
core tracker blocks for new_instances / already_seen_instances. Enable it
if you want tracks on frame 1 to receive stable IDs immediately (original BoT-SORT
paper-style).
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_botsort@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_first_assoc |
float |
Minimum fused similarity (IoU × confidence) for the first (high-confidence) association step. Default: 0.2.. | ✅ |
minimum_iou_threshold_second_assoc |
float |
Minimum IoU for the second (low-confidence) association step. Default: 0.5.. | ✅ |
minimum_iou_threshold_unconfirmed_assoc |
float |
Minimum fused similarity for matching unconfirmed tracks to remaining high-confidence detections. 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: 2.. | ✅ |
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.. | ✅ |
track_activation_threshold |
float |
Minimum detection confidence required to spawn a new track. Detections below this threshold are not used to create new tracks. Default: 0.7.. | ✅ |
high_conf_det_threshold |
float |
Confidence threshold for high-confidence detections used in association. Default: 0.6.. | ✅ |
enable_cmc |
bool |
Enable camera motion compensation (uses per-frame image pixels). Recommended for moving cameras.. | ✅ |
cmc_method |
str |
Camera motion estimator. One of: orb, sift, sparseOptFlow, ecc. Default: {DEFAULT_CMC_METHOD!r}.. | ❌ |
cmc_downscale |
int |
Downscale factor applied inside CMC for speed and robustness. Default: 2.. | ✅ |
instant_first_frame_activation |
bool |
If true, tracks on the first frame receive IDs immediately (paper-style). Default false so new/already-seen outputs match other core trackers.. | ✅ |
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.
Available Connections¶
Compatible Blocks
Check what blocks you can connect to BoT-SORT Tracker in version v1.
- inputs:
Camera Focus,Event Writer,Ellipse Visualization,Camera Focus,Image Contours,Image Preprocessing,Background Subtraction,SAM 3,Color Visualization,Crop Visualization,Mask Visualization,YOLO-World Model,Segment Anything 2 Model,Seg Preview,SAM2 Video Tracker,JSON Parser,Relative Static Crop,Google Vision OCR,SIFT Comparison,Object Detection Model,Instance Segmentation Model,EasyOCR,VLM As Detector,SAM 3,Contrast Enhancement,Image Convert Grayscale,Keypoint Detection Model,Image Blur,Keypoint Visualization,Identify Changes,MQTT Writer,OC-SORT Tracker,Camera Calibration,VLM As Detector,PTZ Tracking (ONVIF),SIFT Comparison,Twilio SMS Notification,Detections Stitch,Perspective Correction,Detections Classes Replacement,Time in Zone,SAM 3,Detection Offset,Mask Edge Snap,Contrast Equalization,Clip Comparison,SORT Tracker,Image Stack,Model Comparison Visualization,Identify Outliers,Dot Visualization,Dynamic Zone,Moondream2,Reference Path Visualization,Polygon Visualization,Detections Stabilizer,Microsoft SQL Server Sink,Path Deviation,Webhook Sink,SIFT,Instance Segmentation Model,Image Slicer,Stability AI Outpainting,Halo Visualization,Email Notification,QR Code Generator,ByteTrack Tracker,Local File Sink,Classification Label Visualization,Bounding Box Visualization,Object Detection Model,Pixelate Visualization,Path Deviation,Image Slicer,Template Matching,Depth Estimation,Text Display,Roboflow Vision Events,Byte Tracker,Object Detection Model,Time in Zone,Distance Measurement,Icon Visualization,Motion Detection,Blur Visualization,VLM As Classifier,Grid Visualization,Detections List Roll-Up,Stability AI Inpainting,Roboflow Dataset Upload,Overlap Filter,Image Threshold,Model Monitoring Inference Aggregator,Trace Visualization,Circle Visualization,Instance Segmentation Model,Label Visualization,Pixel Color Count,Morphological Transformation,Morphological Transformation,Polygon Zone Visualization,Keypoint Detection Model,VLM As Classifier,Dynamic Crop,Polygon Visualization,Detections Transformation,Stability AI Image Generation,Gaze Detection,Byte Tracker,Absolute Static Crop,Mask Area Measurement,Roboflow Dataset Upload,Stitch Images,Twilio SMS/MMS Notification,Line Counter,Detections Merge,Time in Zone,Byte Tracker,Triangle Visualization,Roboflow Asset Library Attributes,Background Color Visualization,Detections Consensus,Keypoint Detection Model,Corner Visualization,Detections Combine,Line Counter Visualization,BoT-SORT Tracker,Halo Visualization,Roboflow Custom Metadata,Line Counter,OCR Model,Email Notification,Slack Notification,S3 Sink,Detection Event Log,Detections Filter,Heatmap Visualization,Bounding Rectangle,Instance Segmentation Model,OPC UA Writer Sink,Per-Class Confidence Filter,Velocity - outputs:
Event Writer,Halo Visualization,Ellipse Visualization,ByteTrack Tracker,Camera Focus,Bounding Box Visualization,Pixelate Visualization,Color Visualization,Crop Visualization,Segment Anything 2 Model,Path Deviation,Mask Visualization,Roboflow Vision Events,SAM2 Video Tracker,Byte Tracker,Time in Zone,Distance Measurement,Icon Visualization,Blur Visualization,Detections List Roll-Up,Stability AI Inpainting,Roboflow Dataset Upload,Model Monitoring Inference Aggregator,Overlap Filter,Trace Visualization,Circle Visualization,Label Visualization,Keypoint Visualization,OC-SORT Tracker,Dynamic Crop,Polygon Visualization,Florence-2 Model,PTZ Tracking (ONVIF),Detections Transformation,Overlap Analysis,Detections Stitch,Byte Tracker,Perspective Correction,Mask Area Measurement,Roboflow Dataset Upload,Florence-2 Model,Detections Classes Replacement,Time in Zone,Line Counter,Detection Offset,Mask Edge Snap,Time in Zone,Detections Merge,Byte Tracker,SORT Tracker,Triangle Visualization,Detections Consensus,Background Color Visualization,Stitch OCR Detections,Model Comparison Visualization,Corner Visualization,Detections Combine,Dot Visualization,Dynamic Zone,BoT-SORT Tracker,Stitch OCR Detections,Polygon Visualization,Halo Visualization,Size Measurement,Roboflow Custom Metadata,Line Counter,Detections Stabilizer,Path Deviation,Detection Event Log,Detections Filter,Heatmap Visualization,Bounding Rectangle,Per-Class Confidence Filter,Velocity
Input and Output Bindings¶
The available connections depend on its binding kinds. Check what binding kinds
BoT-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. When camera motion compensation is enabled, frame pixels are read from this image..detections(Union[keypoint_detection_prediction,object_detection_prediction,instance_segmentation_prediction,rle_instance_segmentation_prediction]): Detection predictions for the current frame to track..minimum_iou_threshold_first_assoc(float_zero_to_one): Minimum fused similarity (IoU × confidence) for the first (high-confidence) association step. Default: 0.2..minimum_iou_threshold_second_assoc(float_zero_to_one): Minimum IoU for the second (low-confidence) association step. Default: 0.5..minimum_iou_threshold_unconfirmed_assoc(float_zero_to_one): Minimum fused similarity for matching unconfirmed tracks to remaining high-confidence detections. 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: 2..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..track_activation_threshold(float_zero_to_one): Minimum detection confidence required to spawn a new track. Detections below this threshold are not used to create new tracks. Default: 0.7..high_conf_det_threshold(float_zero_to_one): Confidence threshold for high-confidence detections used in association. Default: 0.6..enable_cmc(boolean): Enable camera motion compensation (uses per-frame image pixels). Recommended for moving cameras..cmc_downscale(integer): Downscale factor applied inside CMC for speed and robustness. Default: 2..instant_first_frame_activation(boolean): If true, tracks on the first frame receive IDs immediately (paper-style). Default false so new/already-seen outputs match other core trackers..
-
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 BoT-SORT Tracker in version v1
{
"name": "<your_step_name_here>",
"type": "roboflow_core/trackers_botsort@v1",
"image": "<block_does_not_provide_example>",
"detections": "$steps.object_detection_model.predictions",
"minimum_iou_threshold_first_assoc": 0.2,
"minimum_iou_threshold_second_assoc": 0.5,
"minimum_iou_threshold_unconfirmed_assoc": 0.3,
"minimum_consecutive_frames": 2,
"lost_track_buffer": 30,
"track_activation_threshold": 0.7,
"high_conf_det_threshold": 0.6,
"enable_cmc": false,
"cmc_method": "sparseOptFlow",
"cmc_downscale": 2,
"instant_first_frame_activation": false,
"instances_cache_size": "<block_does_not_provide_example>"
}