Skip to content
TsingWeiPublic

About

No description, website, or topics provided.

Resources

Stars

12 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

MaST:Motion-aware Sparse Pipeline for Lightweight Object Tracking

ECCV'26 accepted paper Motion-aware Sparse Pipeline for Lightweight Object Tracking [Arxiv]

Training code of MaST is comming soon. For now, the code supports multi-process ONNX Runtime inference on several benchmarks without PyTorch required.

Models

Model Search Size Template Size Backbone Depth ONNX Size
MaST_small 384×384 192×192 12 layers ~23 MB
MaST_tiny 256×256 128×128 12 layers ~22 MB
MaST_nano 256×256 128×128 8 layers ~16 MB

Environment Setup

Python >= 3.8 required.

# GPU inference (recommended)
pip install onnxruntime-gpu>=1.16.0 numpy opencv-python tqdm

# CPU-only inference
pip install onnxruntime>=1.16.0 numpy opencv-python tqdm

Full dependency list:

Package Version Required
onnxruntime-gpu >= 1.16.0 Yes (or onnxruntime for CPU)
numpy any recent Yes
opencv-python any recent Yes
tqdm any Optional (progress bars)

Note: CUDA 11.x or 12.x must be installed for GPU inference with onnxruntime-gpu.

Configuration

Edit config.py to set your local dataset paths:

DATASET_PATHS = {
    "nfs_path": "/path/to/NFS",
    "lasot_path": "/path/to/LaSOT",
    "got10k_path": "/path/to/GOT-10k",
    "trackingnet_path": "/path/to/TrackingNet",
    "uav_path": "/path/to/UAV123",
    "vasttrack_test_path": "/path/to/VastTrack/test",
    ...
}

Only set paths for datasets you plan to evaluate on.

Running Evaluation

python eval.py <model_name> --dataset <dataset_name> [--threads N] [--num_gpus N]

Examples

# LaSOT with 4 threads
python eval.py MaST_nano --dataset lasot --threads 4 --num_gpus 1

# NFS with 8 threads, 2 GPUs
python eval.py MaST_tiny --dataset nfs_30 --threads 8 --num_gpus 2
python eval.py MaST_tiny --dataset nfs_240 --threads 8 --num_gpus 2

# Single sequence (debug)
python eval.py MaST_tiny --dataset got10k_val --sequence Basketball --debug 1

Available Datasets

Name Description
nfs / nfs_30 NFS at 30 FPS
nfs_60 / nfs_120 / nfs_240 NFS at other frame rates
lasot LaSOT test set (280 sequences)
lasot_extension_subset LaSOT extension (150 sequences)
got10k_test GOT-10K test set
got10k_val GOT-10K validation set
trackingnet TrackingNet test set
uav UAV123 (123 sequences)
vasttrack_test VastTrack test split

Arguments

Argument Default Description
model_name (required) One of: MaST_small, MaST_tiny, MaST_nano
--dataset (required) Dataset name from the table above
--threads 0 Number of parallel worker processes. 0 = sequential
--num_gpus 1 Number of GPUs. Workers are distributed across GPUs round-robin
--debug 0 Set to 1 to skip saving results
--sequence None Run only this sequence (by name)

Dataset Directory Structures

NFS (Need for Speed)

NFS/
├── airboard_1/
│   └── 240/
│       ├── airboard_1/        # 240fps frames
│       │   ├── 00001.jpg
│       │   └── ...
│       └── airboard_1.txt     # annotation
├── basketball_1/
│   └── 240/
│       └── ...
└── ...

LaSOT

LaSOT/
├── airplane/
│   ├── airplane-1/
│   │   ├── img/
│   │   │   ├── 00000001.jpg
│   │   │   └── ...
│   │   ├── groundtruth.txt
│   │   ├── full_occlusion.txt
│   │   └── out_of_view.txt
│   └── airplane-9/
│       └── ...
├── basketball/
│   └── ...
└── ...

GOT-10K

GOT-10k/
├── test/
│   ├── list.txt
│   ├── GOT-10k_Test_000001/
│   │   ├── 00000001.jpg
│   │   └── groundtruth.txt
│   └── ...
└── val/
    ├── list.txt
    └── ...

TrackingNet

TrackingNet/
└── TEST/
    ├── anno/
    │   ├── 0BRwBMTKkS_OG3kCk8Lk.txt
    │   └── ...
    └── frames/
        ├── 0BRwBMTKkS_OG3kCk8Lk/
        │   ├── 0.jpg
        │   └── ...
        └── ...

UAV123

UAV123/
├── anno/
│   └── UAV123/
│       ├── bike1.txt
│       └── ...
└── data_seq/
    └── UAV123/
        ├── bike1/
        │   ├── 000001.jpg
        │   └── ...
        └── ...

VastTrack-Test

VastTrack/
├── class_name/
│   ├── class_name-1/
│   │   ├── imgs/
│   │   │   ├── 00001.jpg
│   │   │   └── ...
│   │   └── Groundtruth.txt
│   └── ...
└── ...

Output

Results are saved to results/<model_name>/<dataset_name>/:

results/
└── MaST_tiny/
    └── nfs_30/
        └── nfs/
            ├── airboard_1.txt          # bounding boxes (x y w h per line)
            ├── airboard_1_time.txt     # per-frame time
            └── ...

File Structure

spato_release/
├── README.md          # This file
├── eval.py            # Entry point CLI
├── tracker.py         # ONNX tracker (preprocessing + inference + postprocessing)
├── datasets/          # Dataset loaders for supported benchmarks
├── config.py          # Model configs + dataset paths (edit this!)
└── models/
    ├── MaST-tiny.onnx
    └── ...

Acknowlegement:

The idea and code are based on OSTrack, and the prediction head is developed from LoRATv2.

About

No description, website, or topics provided.

Resources

Stars

12 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages