This implements training of SiamRPN with backbone architectures, such as ResNet, AlexNet.
export PYTHONPATH=/path/to/pysot:$PYTHONPATH
Prepare training dataset, detailed preparations are listed in training_dataset directory.
- VID
- YOUTUBEBB (New link for cropped data, BaiduYun, extract code: h964. NOTE: Data in old link is not correct. Please use cropped data in this new link.)
- DET
- COCO
Download pretrained backbones from Google Drive and put them in pretrained_models
directory
To train a model (SiamRPN++), run train.py
with the desired configs:
cd experiments/siamrpn_r50_l234_dwxcorr_8gpu
Refer to Pytorch distributed training for detailed description.
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
python -m torch.distributed.launch \
--nproc_per_node=8 \
--master_port=2333 \
../../tools/train.py --cfg config.yaml
Node 1: (IP: 192.168.1.1, and has a free port: 2333) master node
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
python -m torch.distributed.launch \
--nnodes=2 \
--node_rank=0 \
--nproc_per_node=8 \
--master_addr=192.168.1.1 \ # adjust your ip here
--master_port=2333 \
../../tools/train.py
Node 2:
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
python -m torch.distributed.launch \
--nnodes=2 \
--node_rank=1 \
--nproc_per_node=8 \
--master_addr=192.168.1.1 \
--master_port=2333 \
../../tools/train.py
After training, you can test snapshots on VOT dataset.
For AlexNet
, you need to test snapshots from 35 to 50 epoch.
For ResNet
, you need to test snapshots from 10 to 20 epoch.
START=10
END=20
seq $START 1 $END | \
xargs -I {} echo "snapshot/checkpoint_e{}.pth" | \
xargs -I {} \
python -u ../../tools/test.py \
--snapshot {} \
--config config.yaml \
--dataset VOT2018 2>&1 | tee logs/test_dataset.log
python ../../tools/eval.py \
--tracker_path ./results \ # result path
--dataset VOT2018 \ # dataset name
--num 4 \ # number thread to eval
--tracker_prefix 'ch*' # tracker_name