Quickstart¶
git clone https://github.com/fragompul/edge-multi-object-tracking && cd edge-multi-object-tracking
python -m venv .venv && source .venv/bin/activate # Python 3.11+
pip install -e ".[dev,dashboard,agent]"
Track your own video (no dataset needed)¶
emot track my_video.mp4 --tracker botsort --save out.mp4 --jsonl tracks.jsonl
emot track 0 --show # webcam, live preview (q to quit)
emot track rtsp://camera/stream --tracker bytetrack # network stream
emot track data/mot17/MOT17-04 --max-frames 200 # a MOT17 image folder
YOLO weights are downloaded to weights/ on first use. Trackers: bytetrack, botsort, botsort_cmc, deepsort,
deepsort_osnet_cascade. Detectors: any Ultralytics checkpoint (--model yolo11s.pt --imgsz 960) or an exported
ONNX model (--onnx model.onnx --provider coreml --threads 4).
Ask questions about the result¶
emot ask tracks.jsonl "How many people crossed the middle line?" --fps 30 --width 1920 --height 1080 --offline
Reproduce the benchmark¶
make data # 7 MOT17 sequences (~2 GB of frames)
make detect # YOLO on every (sequence, backbone) ~10 min on Apple GPU
make features # ReID embeddings + camera motion ~15 min
make tune # Optuna, HOTA objective seconds
make bench # 294 tracking runs + detection AP ~5 min
make edge # edge benchmark (idle machine!) ~12 min
make figures web-data
Explore¶
make dashboard # Plotly Dash lab on http://127.0.0.1:8050
cd web && npm install && npm run dev # the Studio web app
docker compose up dashboard # containerised dashboard