McByte Benchmarks
Run McByte over a complete benchmark test set — MOT17, DanceTrack, SportsMOT, or SoccerNet-tracking — and write one MOTChallenge-format result file per sequence.
What you'll learn:
- Point the command at your detection and frame directories
- Select one or more datasets to run
- Read the output layout, including the MOT17 submission files
Install
Get started by installing the package.
trackers benchmark mcbyte always builds McByte's full SAM + Cutie mask pipeline (enable_mask_manager=True), so — unlike the default McByteTracker() construction described on the McByte page — both SAM and Cutie must be installed before running this command. See the optional heavyweight dependencies note for install steps. For more general install options, see the install guide.
Supported Datasets
| Dataset | Detection format | Layout note |
|---|---|---|
mot17 |
xyxy |
Frame directories use the <sequence>-FRCNN suffix. |
dancetrack |
xyxy |
— |
sportsmot |
xyxy |
— |
soccernet |
mot |
Detection filenames follow the SoccerNet naming convention. |
Each sequence is processed independently with a fresh McByte tracker. If a sequence fails, the error is logged and the run continues with the remaining sequences.
Configure Dataset Roots
Every dataset needs a detection_root (one detection file per sequence) and an image_root (one frame directory per sequence). Neither has a built-in value — supply both per run, either through a --config file or inline as JSON with --dataset_roots.
Supply roots as JSON on the command line.
Select Datasets
Pass --dataset as a list to choose which datasets to run. Omit it to run every dataset in the table above.
A bare repeated --dataset overwrites the previous value — use --dataset+ to append instead:
As with every trackers subcommand, hyphens and underscores are interchangeable (--cmc-downscale and --cmc_downscale are the same option), and every boolean flag has a --no_ negation, e.g. --no_enable_cmc.
Expected Directory Layout
detection_root holds one detection .txt file per sequence:
detections/MOT17/test/MOT17-01.txt
detections/dancetrack/test/dancetrack0003.txt
detections/sportsmot/test/v_-9kabh1K8UA_c008.txt
detections/SoccerNet_tracking_2022_test_set_dets/SNMOT-116__det.txt
image_root holds one directory per sequence, each with an img1 subdirectory of frames, for every dataset:
MOT17, DanceTrack and SportsMOT detections use frame,x1,y1,x2,y2,confidence (XYXY). SoccerNet-tracking detections use the original ground-truth MOT layout, frame,id,left,top,width,height,confidence,... — the identity column is ignored, since tracker identities are produced by McByte.
Output
Results are written under --output_root, in one timestamped directory per run (<timestamp>__isolation or <timestamp>__no_isolation, reflecting --enable_isolated_mask_matching), with one subdirectory per dataset and a run.log capturing progress and failures.
outputs/mcbyte_benchmarks/
└── 20260807_120000__no_isolation/
├── run.log
└── mot17/
├── raw/
│ ├── MOT17-01.txt
│ └── ...
└── submission/
├── MOT17-01-FRCNN.txt
├── MOT17-01-SDP.txt
├── MOT17-01-DPM.txt
└── ...
Each sequence result is first written to a .partial file and only replaces the final file on success; use --skip_existing to skip a sequence whose result file is already present, and --keep_partial_results to keep a failed sequence's .partial file instead of deleting it.
MOT17 submission files
The MOT17 evaluation server expects one result file per detector name (FRCNN, SDP, DPM). Since McByte is detector-agnostic, trackers benchmark mcbyte duplicates each completed sequence's result across all three suffixes under mot17/submission/. The remaining MOT17 sequence numbers this run produces no result for are written as empty placeholder files for all three suffixes, so the submission directory always contains the complete set of names.
CLI Reference
All arguments accepted by trackers benchmark mcbyte.
| Argument | Description | Default |
|---|---|---|
--config |
Path to a configuration file. | — |
--print_config |
Print the configuration after applying all other arguments, then exit. | — |
--dataset |
Datasets to run, as a list: --dataset=[mot17,soccernet]. Repeat as --dataset+ to append instead of overwrite. |
all datasets |
--dataset_roots |
Where each dataset's files live, keyed by the same names --dataset selects. Each entry holds a detection_root and an image_root; neither has a built-in value. |
— |
--device |
Device for SAM + Cutie, e.g. cuda, cpu, or mps. auto resolves to CUDA when available, otherwise CPU; MPS is never auto-selected and must be requested explicitly. |
auto |
--enable_isolated_mask_matching |
Match masks in isolation. Negate with --no_enable_isolated_mask_matching. |
false |
--output_root |
Directory holding one timestamped run directory per run. | outputs/mcbyte_benchmarks |
--skip_existing |
Skip a sequence whose result file is already present. Negate with --no_skip_existing. |
false |
--enable_cmc |
Compensate for camera motion. Negate with --no_enable_cmc. |
true |
--cmc_method |
Camera-motion compensation method. Options: orb, sift, sparseOptFlow, ecc. |
sparseOptFlow |
--cmc_downscale |
Frame downscale factor applied before compensation. | 6 |
--keep_partial_results |
Keep the .partial file a failed sequence leaves behind instead of deleting it. Negate with --no_keep_partial_results. |
false |