mctr-mmptrack / README.md
deepsworld's picture
MCTR MMPTracking finetuned checkpoints (paper reproduction)
60d6f87 verified
|
Raw History Blame Contribute Delete
3.39 kB
---
language: en
library_name: mctr
tags:
- multi-camera-tracking
- multi-object-tracking
- mmptracking
- video
- checkpoint
pipeline_tag: other
license: bsd-3-clause
pretty_name: MCTR MMPTracking checkpoints
---
# MCTR — Multi Camera Tracking Transformer (MMPTracking checkpoints)
Checkpoints that reproduce the MMPTrack validation results of
> **MCTR: Multi Camera Tracking Transformer**, Alexandru Niculescu-Mizil, Deep Patel, Iain Melvin.
> [arXiv:2408.13243](https://arxiv.org/abs/2408.13243) · [code](https://github.com/necla-ml/mctr)
MCTR is an end-to-end multi-camera multi-object tracker: a DETR-style detector per camera
view, a shared set of **track embeddings** updated every frame, and soft probabilistic
track↔detection association trained with differentiable losses.
A single finetuned checkpoint per environment serves both reported variants:
- **MCTR** — outputs the per-view detection boxes (`scripts/trackeval_mmptrack.py`)
- **MCTR-TB** — outputs the track-head predicted boxes (`scripts/trackeval_trackbox_mmptrack.py`)
Each checkpoint is finetuned on one environment (fixed number of cameras / clips),
so there is one model per scene: cafe, industry, lobby, office, retail.
## Contents
| Scene | Cameras | File | Size (GB) | SHA-256 (first 16) |
|-------|---------|------|-----------|--------------------|
| cafe | 4 | `cafe/mctr_cafe_epoch99.pth` | 0.23 | `069d9a899211d902` |
| industry | 4 | `industry/mctr_industry_epoch99.pth` | 0.23 | `7f59c4e85afadad6` |
| lobby | 4 | `lobby/mctr_lobby_epoch99.pth` | 0.23 | `4421777c62f7c076` |
| office | 5 | `office/mctr_office_epoch99.pth` | 0.25 | `36db4869e9246262` |
| retail | 6 | `retail/mctr_retail_epoch99.pth` | 0.26 | `f5ba93e1c4a5085f` |
Each scene folder contains:
- `mctr_<scene>_epoch99.pth` — the finetuned checkpoint (epoch 99 of a 100-epoch finetune
of the 2-stage training protocol: `pairwise_init.yaml` → `pairwise.yaml`)
- `train_config.yaml` — exact training config of the run
- `metrics.json` — provenance + metrics (paper reference and reproduction)
The `.pth` is a `torch.save` dict with keys `cfg` (yacs config of the run), `state_dict`
(the `PAIRWISE` model, already de-`module.`-prefixed), `loss`, `epoch`. It is loaded by
`main_pairwise._build_model` in the training repo with `strict=True`; the camera count and
clip set are fixed by the embedded config.
## Usage
```sh
git clone https://github.com/necla-ml/mctr && cd mctr && make pull
mamba env create -f mcmot39 # conda env from the repo
mamba activate mcmot39 # conda activate mcmot39
# point the eval scripts at the MMPTracking dataset root you use, then:
python scripts/trackeval_mmptrack.py /path/to/mctr_cafe_epoch99.pth # MCTR
python scripts/trackeval_trackbox_mmptrack.py /path/to/mctr_cafe_epoch99.pth # MCTR-TB
```
Notes:
- The eval scripts hardcode the dataset root `/net/mlfs02/data/projects/shared/datasets/MMPTracking/`
and the MMPTracking clip layout (per-scene folders, `64pm` subsample); edit
`cfg.DATASET.ROOT` in the scripts to match your copy of the data.
- The scripts write tracklet files under `scripts/eval_outputs/` and call
`submodules/trackeval/scripts/run_mot_challenge.py` (HOTA/CLEAR/Identity, no preproc).
- Inference is online, frame-by-frame, batch size 1 (`keep_prob=0.9`); ~233 MB model,
roughly linear cost in the number of cameras.