Training Classification Models on the ImageNet dataset
Training on the ImageNet dataset
Single node training of any classification backbone can be done using below command:
export CFG_FILE="PATH_TO_MODEL_CONFIGURATION_FILE"
cvnets-train --common.config-file $CFG_FILE --common.results-loc classification_results
By default, training will use all GPUs available on the machine. To restrict training to a subset of GPUs available on a machine, use CUDA_VISIBLE_DEVICES
environment variable
For example configuration files, please see config folder.
Note: Do not forget to change the training and validation dataset locations in configuration files.
Multi-node training of any classification backbone
Assuming we have 4 8-GPU nodes (i.e., 32 GPUs), we can train using below commands
Node-0
export CFG_FILE="PATH_TO_MODEL_CONFIGURATION_FILE"
cvnets-train --common.config-file $CFG_FILE --common.results-loc classification_results --ddp.rank 0 --ddp.world-size 32 --ddp.dist-url 'tcp://IP_OF_NODE0:FREEPORT' --ddp.backend nccl
Node-1
export CFG_FILE="PATH_TO_MODEL_CONFIGURATION_FILE"
cvnets-train --common.config-file $CFG_FILE --common.results-loc classification_results --ddp.rank 8 --ddp.world-size 32 --ddp.dist-url 'tcp://IP_OF_NODE0:FREEPORT' --ddp.backend nccl
Node-2
export CFG_FILE="PATH_TO_MODEL_CONFIGURATION_FILE"
cvnets-train --common.config-file $CFG_FILE --common.results-loc classification_results --ddp.rank 16 --ddp.world-size 32 --ddp.dist-url 'tcp://IP_OF_NODE0:FREEPORT' --ddp.backend nccl
Node-3
export CFG_FILE="PATH_TO_MODEL_CONFIGURATION_FILE"
cvnets-train --common.config-file $CFG_FILE --common.results-loc classification_results --ddp.rank 24 --ddp.world-size 32 --ddp.dist-url 'tcp://IP_OF_NODE0:FREEPORT' --ddp.backend nccl
Finetuning the classification model
If we want to finetune the ImageNet model with 1000
classes on another classification dataset with N
classes, we can do so by using following arguments:
Pass this argument
--model.classification.finetune-pretrained-model
to enable finetuningSpecify number of classes in pre-trained model using
--model.classification.n-pretrained-classes
argumentSpecify the location of pre-trained weights using
--model.classification.pretrained
argument
For a concrete example, see training recipe of MobileViTv2
Evaluating the classification model
Evaluation can be done using the below command:
export CFG_FILE="PATH_TO_MODEL_CONFIGURATION_FILE"
export MODEL_WEIGHTS="PATH_TO_MODEL_WEIGHTS_FILE"
CUDA_VISIBLE_DEVICES=0 cvnets-eval --common.config-file $CFG_FILE --common.results-loc classification_results --model.classification.pretrained $MODEL_WEIGHTS
If you are evaluating the model from finetuning task, please disable finetune-pretrained-model
argument by using the following --common.override-kwargs model.classification.finetune_pretrained_model=false
argument