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:
Roboflow Asset Library Attributes,Path Deviation,Image Blur,Keypoint Detection Model,Overlap Filter,Reference Path Visualization,PTZ Tracking (ONVIF),SIFT Comparison,Event Writer,Slack Notification,SAM2 Video Tracker,Halo Visualization,VLM As Classifier,Image Stack,Bounding Rectangle,Object Detection Model,Dot Visualization,Label Visualization,Background Color Visualization,Email Notification,SAM 3 Interactive,Velocity,Pixelate Visualization,JSON Parser,Track Class Lock,Trace Visualization,Detection Event Log,ByteTrack Tracker,Clip Comparison,Camera Focus,MQTT Writer,SIFT Comparison,Webhook Sink,Image Contours,Motion Detection,Local File Sink,Polygon Visualization,SIFT,Classification Label Visualization,Instance Segmentation Model,Keypoint Detection Model,Keypoint Visualization,Template Matching,Instance Segmentation Model,Icon Visualization,Seg Preview,Dynamic Crop,Stability AI Inpainting,Bounding Box Visualization,Polygon Zone Visualization,Stability AI Outpainting,Detections Transformation,Crop Visualization,BoT-SORT Tracker,Image Convert Grayscale,Byte Tracker,Mask Visualization,Halo Visualization,Detections Stitch,Detection Offset,Distance Measurement,SORT Tracker,Text Display,Morphological Transformation,VLM As Classifier,Roboflow Dataset Upload,VLM As Detector,Detections Consensus,Object Detection Model,Detections Filter,Ellipse Visualization,Detections Merge,Keypoint Detection Model,SAM3 Video Tracker,Time in Zone,SAM 3,Circle Visualization,Path Deviation,Twilio SMS Notification,S3 Sink,Email Notification,Camera Focus,Identify Changes,Byte Tracker,SAM 3,Image Slicer,OCR Model,Mask Area Measurement,Heatmap Visualization,Stitch Images,Identify Outliers,Time in Zone,Morphological Transformation,EasyOCR,YOLO-World Model,Blur Visualization,Moondream2,Detections List Roll-Up,Corner Visualization,Detections Stabilizer,Pixel Color Count,Model Comparison Visualization,SAM 3,Model Monitoring Inference Aggregator,Google Vision OCR,Image Threshold,Byte Tracker,Instance Segmentation Model,Polygon Visualization,Segment Anything 2 Model,Time in Zone,Stability AI Image Generation,Line Counter Visualization,Mask Edge Snap,Line Counter,Relative Static Crop,Per-Class Confidence Filter,Grid Visualization,Image Preprocessing,Gaze Detection,OPC UA Writer Sink,Color Visualization,Dynamic Zone,Detections Combine,Triangle Visualization,QR Code Generator,Contrast Enhancement,Roboflow Dataset Upload,Absolute Static Crop,Background Subtraction,OC-SORT Tracker,Image Slicer,Perspective Correction,Twilio SMS/MMS Notification,Roboflow Vision Events,Microsoft SQL Server Sink,Instance Segmentation Model,Depth Estimation,Roboflow Custom Metadata,Contrast Equalization,Camera Calibration,Detections Classes Replacement,VLM As Detector,Line Counter,Object Detection Model - outputs:
Size Measurement,Circle Visualization,Path Deviation,Path Deviation,Overlap Filter,PTZ Tracking (ONVIF),Event Writer,SAM2 Video Tracker,Halo Visualization,Bounding Rectangle,Dot Visualization,Byte Tracker,Label Visualization,Background Color Visualization,SAM 3 Interactive,Velocity,Pixelate Visualization,Mask Area Measurement,Heatmap Visualization,Track Class Lock,Time in Zone,Trace Visualization,Stitch OCR Detections,Detection Event Log,ByteTrack Tracker,Blur Visualization,Camera Focus,Detections List Roll-Up,Florence-2 Model,Corner Visualization,Detections Stabilizer,Model Comparison Visualization,Model Monitoring Inference Aggregator,Byte Tracker,Polygon Visualization,Segment Anything 2 Model,Polygon Visualization,Time in Zone,Mask Edge Snap,Line Counter,Per-Class Confidence Filter,Keypoint Visualization,Stitch OCR Detections,Icon Visualization,Color Visualization,Dynamic Zone,Detections Combine,Triangle Visualization,Roboflow Dataset Upload,Dynamic Crop,Stability AI Inpainting,BoT-SORT Tracker,Detections Transformation,Bounding Box Visualization,Crop Visualization,OC-SORT Tracker,Byte Tracker,Mask Visualization,Halo Visualization,Detections Stitch,Distance Measurement,Florence-2 Model,Detection Offset,SORT Tracker,Perspective Correction,Roboflow Vision Events,Overlap Analysis,Roboflow Dataset Upload,Detections Consensus,Roboflow Custom Metadata,Detections Filter,Ellipse Visualization,Detections Merge,Detections Classes Replacement,Line Counter,Time in Zone
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[object_detection_prediction,keypoint_detection_prediction,rle_instance_segmentation_prediction,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>"
}