Object tracking
Last updated
Was this helpful?
Last updated
Was this helpful?
Object Tracking is a new postprocessing layer that allows you to track bounding boxes across inference runs, turning raw bounding boxes into stable “tracked” detections. This can significantly reduce jitter and provide continuity of object labels across frames.
Enterprise preview
This feature is in preview mode and available for Enterprise customers only. Interested in also enabling object counting? Contact your Customer Success Manager (CSM).
To enable Object Tracking:
Go to Administrative zone > Object tracking in your Edge Impulse project.
Enable the Object Tracking feature.
Once enabled, all deployments (Linux, Mobile, EON Compiler, C++ library, WebAssembly, etc.) that contain an Object Detection block will automatically include the object tracking postprocessing. By default, it uses a set of standard parameters (described in detail below) that you can adjust to fit your use case.
When you have built a model that includes Object Tracking postprocessing, you can dynamically configure tracking thresholds via:
Use edge-impulse-linux-runner --model-file <model.eim>
.
The runner’s interactive console (and web UI via http://localhost:PORT
) now includes configurable tracking thresholds.
If you’re running your impulse in the Edge Impulse mobile client, you can configure thresholds in the UI as well (preview).
Note
We are actively working on adding these thresholds into the Studio UI. In the meantime, using the Linux CLI or Mobile Client is the easiest way to experiment with threshold settings.
In the Linux runner UI, you will see fields such as:
Keep grace: How many frames an object is kept if it disappears.
Max observations: The maximum number of observations to match for stable tracking.
IoU threshold: Intersection over Union threshold to decide if a bounding box is the same object.
Use IoU: Whether to use IoU-based matching.
For Linux EIM deployments, you can now directly pass thresholds to the runner:
In the Node.js SDK, there is a new function to set these thresholds at runtime:
For C++ library or EON Compiler deployments, you can configure thresholds in model-parameters/model_variables.h
(name may vary based on your project’s generated files). A typical configuration might look like:
Adjust these parameters to suit your use case (e.g., shorten or extend “keep grace,” or change your IoU threshold to handle occlusion scenarios, etc.).
A simple way to see the difference between raw bounding boxes and tracked bounding boxes:
Open http://localhost:9200
and http://localhost:9201
in two separate browser windows and observe the difference in bounding box stability.
You’ll see smoother, more persistent bounding boxes with object tracking enabled.
When reading inference metadata from an EIM file, look under the object_tracking
field to retrieve tracked objects.
Looking for a more complex example? Check out the Model Cascade approach, which chains together an Object Tracking model with an LLM (e.g., GPT-4):
If you encounter any issues with object tracking, please reach out to your solutions engineer for assistance.