track is now a thin Python tool around the ubon_cstuff / ubon_pycstuff
tracking pipeline. It is responsible for:
- loading input sequence metadata files such as MOT-style JSON/INI annotations
- running the
upyctracker on those inputs - evaluating results with MOT metrics
- replaying tracked runs with debug overlays
- comparing configs and searching parameters
- reading and writing the canonical UBTRK2 tracker-run format
The repo no longer supports utrack, bytetrack, or botsort.
git clone https://github.com/ubonpartners/track.git
cd track
conda env create -f environment.yml
conda activate track
python track.py --helpRuntime requirements:
ubon_pycstuff/ubon_cstufffor tracking and optional C metricsffmpegonPATHfor MP4 → H.264 conversion in theupycpath- datasets reachable under
/mldata/...or via equivalent local layout
| Path | Purpose |
|---|---|
track.py |
CLI entry point for view/track/test/compare/search and dataset conversion helpers |
src/trackset.py |
TrackSet input loader, UBTRK2 run import/export, and replay viewer |
src/track_util.py |
Detection/track object helpers, interpolation, drawing |
src/trackers.py |
upyc-only tracker factory |
src/upyc_tracker/ |
Python wrapper over ubon_pycstuff tracking results |
src/track_test.py |
MOT metrics, detection metrics, benchmark/test orchestration |
src/track_search.py |
Parameter search over ubon_cstuff config values |
TRACKER_DEBUG.md |
Detailed tracker-result/debug format and migration/design notes |
These remain supported as tracking inputs:
- MOT
seqinfo.ini+gt/gt.txt - JSON/YAML annotation files used as input sequence metadata, for example
/mldata/tracking/mot/annotation/MOT17-05.json - Caltech
.vbb
These are input formats, not the canonical stored tracker-result format.
Tracked runs are stored in the canonical UBTRK2 container implemented in
stuff.ubtrk2.
Container layout:
- top-level
ubtfbox (file header/version) - top-level
metabox (UTF-8 YAML metadata payload) - repeated top-level
framboxes (one frame per processed frame)
The same frame-record schema is intended for:
- disk persistence
- network transport
- offline tracker-component analysis
The metadata payload is UTF-8 YAML with stable string keys. Current keys written by track include:
schema_versionkindsource_videoframe_ratewidthheightclassespayload_encoding
Each fram box contains typed child boxes. Current frame payload includes:
fhdr: frame header (frame_time,result_type,motion_score,motion_roi,inference_roi)trks: tracked objects mapdets: optional detector output listdbug: debug entry mapimgp: source image path (optional)xtra: extension map for forward-compatible fields
objects is a map keyed by track_id.
Current stored object fields use detector-aligned names:
classconfidenceboxsubboxsubbox_confface_pointspose_pointsattrsreid_vectorface_embeddingclip_embeddingface_jpegclip_jpegfiqa_score
debug is a map of named debug entries. Viewer-supported typed entries currently include:
detectionsroibox_predictionmotion_fieldcost_map
Large arrays, vectors, embeddings, and JPEG blobs are stored inline as typed payload wrappers rather than in sidecar files.
For low-level container and payload wrapper documentation, see the
stuff repo README and stuff/stuff/ubtrk2.py.
python track.py --view --trackset /path/to/input.json
python track.py --view --trackset /path/to/run.ubtrk2The viewer accepts:
- input sequence metadata files
- UBTRK2 tracked-run files
python track.py \
--track \
--trackset /mldata/tracking/mot/annotation/MOT17-05.json \
--config /mldata/config/track/trackers/uc_v10.yaml \
--save-trackset /tmp/MOT17-05.ubtrk2 \
--displayThis will:
- load the input sequence metadata
- run the
upyctracker - compute metrics
- optionally display the run
- optionally save the full tracked run in UBTRK2 format
python track.py --test configs/tests.yamlpython track.py --compare compare.yaml --trackset /mldata/.../annotation.jsonpython track.py --search configs/search.yamlSearch now assumes upyc-style configs only. Parameters are found by key name
within the loaded config tree, and ambiguous repeated keys are rejected.
--testbenchmarks tracker configs over datasets with caching and summary tables--metrics cusesubon_pycstuff.c_mota_metricsfor faster metric computation- the replay viewer can inspect saved UBTRK2 runs directly
- the UBTRK2 run format is tested in the shared
stuffrepo
Format documentation is intentionally split by ownership:
stuff: authoritative low-level UBTRK2 container and payload encoding docstrack: how tracker runs use that format for replay, metrics, and analysisubon_cstuff: runtime result/debug schema emitted before serialization
See also:
TRACKER_DEBUG.md
Dual license:
- AGPL (non-commercial)
- Ubon Cooperative License (https://github.com/ubonpartners/license/blob/main/LICENSE)
Questions? contact bernandocribbenza@gmail.com (subject yolo-dpa question).