call_model) node to give each detected object a track_id that stays the same from frame to frame. Two objects of the same class get different ids, so you can tell a new person from one already seen, or count distinct trucks.
Tracking runs on the edge and works the same for every detection or segmentation model, whatever its runtime (Ultralytics, ONNX, TensorRT, Hailo and others). Segmentation masks are tracked through their bounding box.
Options
Pick ByteTrack unless the camera moves. On a moving camera ByteTrack sees every object jump at once when the view shifts, and can give them new ids; BoT-SORT compensates for that shift first.
How ids behave
- Each camera has its own ids, even when several cameras share one model, and so does each Call Model node.
- A new object gets its id once it has been seen in two consecutive frames; until then its
track_idisnull. - An object that disappears briefly keeps its id. Ids are not reused while the model stays loaded on the device.
- When frames stop for more than 2 seconds (and for more than twice the camera’s usual frame interval), tracking restarts: objects get new ids, numbered after the ones already issued. A camera sampled every few seconds keeps its ids.
- The label is unchanged: the id comes as a separate
track_idfield on each detection, in the node’sdetectionsoutput and on the device’s detections data channel.
Compile checks
Compilation fails with an error naming the node when a tracker is chosen on a model that:- does not output detections, for example a depth or speech-to-text model;
- runs in the cloud, because the edge worker never holds the frames.
none for those models.