[Mar. 17, 2026]
- Fix evaluation weight loading failure due to unsynced
ModelManagerversion. - Add distributed static evaluation task scheduler to ensure deterministic inference results.
- The original
distributed_dynamic_schedulingintroduces randomness in final results due to random task ordering caused by parallel execution. - The new task scheduler ensures deterministic final results via static task scheduling.
- Enable static task scheduling by setting
data.eval.sampler.typetodistributed_static_schedulinginrun.yaml. - Testing shows the
distributed_static_schedulinghas similar runtime to the original one, so it has been set as the default scheduler.
- The original
- Add
--dry_runsupport inrun.sh.
[Jan. 6, 2026]
- Add SOT joint training support.
- For SOT datasets, RGB is simply treated as dual-modal data for implementation.
- Add
--mixin_config train_sotin the command to enable SOT joint training (LasHeR, LaSOT, TrackingNet, COCO, GOT-10k).
[Jan. 4, 2026]
- Add online template enable/disable support.
- Add
--mixin_config disable_online_templatein the command to disable the online template.
- Add
[Dec. 23, 2025]
- We have released the code of MMLoRAT.
[Dec. 11, 2025]
- Hunting for an ultra-efficient, high-performance RGB-T tracker? We have released the code for our GOLA, which is accepted by AAAI 2026!
This framework is currently being refined, and the trained model will be released soon.
Assuming you have a Python 3.10.15 environment with pip installed.
apt update
apt install -y libturbojpegpip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu118pip install -r requirements.txtThis codebase should also work on Windows and macOS for debugging purposes.
The paths should be organized as follows:
-- LasHeR/trainingset
|-- 1boygo
|-- 1handsth
...
...
Fill in the paths.
LasHeR_PATH: '/path/to/LasHeR0428/'
RGBT234_PATH: '/path/to/RGBT234/'
RGBT210_PATH: '/path/to/RGBT210/'
GTOT_PATH:
...Note: Our code performs evaluation automatically when model training is complete.
- Model weight is saved in
/path/to/output/run_id/checkpoint/epoch_{last}/model.bin. - Performance metrics can be found on terminal output.
- Tracking results are saved in
/path/to/output/run_id/eval/epoch_{last}/.
- Download pretrained models and put them in the
pretrained_modelsfolder. - If you want to train the tracker without online template, download weights with the
wo_otsuffix.
- Using
run.shfor training and evaluation (Linux with NVIDIA GPU only)
# MMLoRAT-B-224
bash run.sh MMLoRAT dinov2 --output_dir '/path/to/output' --weight_path '/path/to/weights' --device_ids 0,1 --disable_wandb
# MMLoRAT-B-378
bash run.sh MMLoRAT dinov2 --mixin_config base_378 --output_dir '/path/to/output' --weight_path '/path/to/weights' --device_ids 0,1 --disable_wandb
# MMLoRAT-L-224
bash run.sh MMLoRAT dinov2 --mixin_config large --output_dir '/path/to/output' --weight_path '/path/to/weights' --device_ids 0,1 --disable_wandb
# MMLoRAT-L-378
bash run.sh MMLoRAT dinov2 --mixin_config large_378 --mixin_config base_378 --output_dir '/path/to/output' --weight_path '/path/to/weights' --device_ids 0,1 --disable_wandb
# MMLoRAT-G-224
bash run.sh MMLoRAT dinov2 --mixin_config giant --output_dir '/path/to/output' --weight_path '/path/to/weights' --device_ids 0,1 --disable_wandb
# MMLoRAT-G-378
bash run.sh MMLoRAT dinov2 --mixin_config giant_378 --output_dir '/path/to/output' --weight_path '/path/to/weights' --device_ids 0,1 --disable_wandb
# Joint training
bash run.sh MMLoRAT dinov2 --mixin_config train_sot --output_dir '/path/to/output' --weight_path '/path/to/weights' --device_ids 0,1 --disable_wandb
# Evaluate all datasets after training.
bash run.sh MMLoRAT dinov2 --mixin_config test_full --output_dir '/path/to/output' --weight_path '/path/to/weights' --device_ids 0,1 --disable_wandb
# Evaluate RGBT234 after training.
bash run.sh MMLoRAT dinov2 --mixin_config test_rgbt234 --output_dir '/path/to/output' --weight_path '/path/to/weights' --device_ids 0,1 --disable_wandb
# Evaluate RGBT210 after training.
bash run.sh MMLoRAT dinov2 --mixin_config test_rgbt210 --output_dir '/path/to/output' --weight_path '/path/to/weights' --device_ids 0,1 --disable_wandb
# Evaluate GTOT after training.
bash run.sh MMLoRAT dinov2 --mixin_config test_gtot --output_dir '/path/to/output' --weight_path '/path/to/weights' --device_ids 0,1 --disable_wandbYou can use the following command to inference and evaluate separately:
# Inference and evaluate on LasHeR.
bash run.sh MMLoRAT dinov2 --mixin_config evaluation --output_dir '/path/to/output' --weight_path '/path/to/weights' --device_ids 0,1 --disable_wandb
# Inference and evaluate on RGBT234.
bash run.sh MMLoRAT dinov2 --mixin_config evaluation --mixin_config test_rgbt234 --output_dir '/path/to/output' --weight_path '/path/to/weights' --device_ids 0,1 --disable_wandb
# Inference and evaluate on RGBT210.
bash run.sh MMLoRAT dinov2 --mixin_config evaluation --mixin_config test_rgbt210 --output_dir '/path/to/output' --weight_path '/path/to/weights' --device_ids 0,1 --disable_wandb
# Inference and evaluate on GTOT.
bash run.sh MMLoRAT dinov2 --mixin_config evaluation --mixin_config test_gtot --output_dir '/path/to/output' --weight_path '/path/to/weights' --device_ids 0,1 --disable_wandb
# Inference and evaluate all datasets.
bash run.sh MMLoRAT dinov2 --mixin_config evaluation --mixin_config test_full --output_dir '/path/to/output' --weight_path '/path/to/weights' --device_ids 0,1 --disable_wandbYou can evaluate the output results separately through the following steps:
-
Unzip the tracking results to a folder of your choice.
-
Run the evaluation script
evaluation.py.
# Evaluate on LasHeR
python evaluation.py lasher --tracker_names MMLoRAT --result_paths /path/to/tracking/results
# Evaluate on RGBT234
python evaluation.py rgbt234 --tracker_names MMLoRAT --result_paths /path/to/tracking/results
# Evaluate on RGBT210
python evaluation.py rgbt210 --tracker_names MMLoRAT --result_paths /path/to/tracking/results
# Evaluate on GTOT
python evaluation.py gtot --tracker_names MMLoRAT --result_paths /path/to/tracking/results- Using
profile_model.pyfor model profiling.
# MMLoRAT-B-224
python profile_model.py MMLoRAT dinov2 --device cuda
# MMLoRAT-B-378
python profile_model.py MMLoRAT dinov2 --mixin_config base_378 --device cuda
...- This repo is based on LoRAT, we thank for it's
trackitframework, which helps us to quickly implement our ideas. - We thank the rgbt library for facilitating evaluation in a Python environment.
If you find this code useful in your research, please consider citing:
@inproceedings{gola,
title={Group Orthogonal Low-Rank Adaptation for RGB-T Tracking},
author={Shao, Zekai and Hu, Yufan and Liu, jingyuan and Fan, Bin and Liu, Hongmin},
booktitle={AAAI},
year={2026}
}