Run on GPU

There are two approaches provided for training, evaluation and inference within mindvideo for each supported model. After installing MindSpore via the official website, one is to run the training or evaluation files under the example folder, which is a independent module for training and evaluation specifically designed for starters, according to each model’s name. And the other is to use the train and inference interfaces for all models under the root folder of the repository when working with the YAML file containing the parameters needed for each model as we also support some parameter configurations for quick start.

run with example files

# run training example
!python src/example/[TRAIN_FILE] --data_url [DATASET_PATH] --epoch_size [NUM_OF_EPOCH] --batch_size [BATCH_SIZE]

# run evaluation example
!python src/example/[EVAL_FILE] --data_url [DATASET_PATH] --pretrained_path [CKPT_PATH] --batch_size [BATCH_SIZE]

For example when training and evaluating the C3D model, please run the following command in root directory.

# run training example
!python src/example/c3d_ucf101_train.py --data_url /usr/dataset/ucf101 --pretrained True --pretrained_path ./c3d_pretrained.ckpt --batch_size 8

# run evaluation example
!python src/example/c3d_ucf101_eval.py --data_url /usr/dataset/ucf101 --pretrained_path ./c3d_pretrained.ckpt --batch_size 16

run with scripts and config file

!cd scripts
# run training example
!bash run_standalone_train_gpu.sh [CONFIG_PATH]
# run evaluation example
!bash run_standalone_eval_gpu.sh [CONFIG_PATH]

For example when training and evaluating the C3D model, please run the following command in root directory.

# run training example
!bash run_standalone_train_gpu.sh src/config/c3d_ucf101.yaml
# run evaluation example
!bash run_standalone_eval_gpu.sh src/config/c3d_ucf101.yaml

You can choose how to train and test model by simply setting the config. For example, if you want to modify the training or evaluating configuration of c3d, you can enter the /src/config folder and modify the c3d_ucf101.yaml file. The following shows some configurations available for modification in the yaml file.

# learning rate for training process
learning_rate:     # learning_rate scheduler
    lr_scheduler: "exponential"
    lr: 0.003
    lr_epochs: [15, 30, 75]
    steps_per_epoch: 596
    warmup_epochs: 1
    max_epoch: 150
    lr_gamma: 0.1

# optimizer for training process
optimizer:      
    type: 'SGD'
    momentum: 0.9
    weight_decay: 0.0005
    loss_scale: 1.0

loss:       
    type: SoftmaxCrossEntropyWithLogits
    sparse: True
    reduction: "mean"

train:       # ckpt related parameters
    pre_trained: False
    pretrained_model: ""
    ckpt_path: "./output/"
    epochs: 150
    save_checkpoint_epochs: 5
    save_checkpoint_steps: 1875
    keep_checkpoint_max: 30
    run_distribute: False

eval:       # infer process
    pretrained_model: ".vscode/c3d_20220912.ckpt"
    batch_size: 1
    image_path: ""
    normalize: True
    output_dir: "./eval_output"