模型准备
安装 NGC CLI
使用 NGC CLI 来获得预训练模型,关于 NGC 的详细信息可访问 官网 中的 SETUP 了解
1 | 创建 NGC CLI 目录 |
安装预训练模型
1 | 查看目前 NGC 上可下载的关于目标检测的预训练模型 |
设置模型参数
打开 $LOCAL_SPECS_DIR/ssd_train_resnet18_kitti.txt
,根据实际需要,修改模型参数,其中:
- batch_size_per_gpu:定义 batch_size 大小,(若 GPU 显存不大,可以调小一点,以免出现 out of memory)
- num_epochs:定义会训练多少轮,第一次训练建议不小于 80
- validation_period_during_training:定义训练验证轮次,可直观看出训练的效果变化
1 | random_seed: 42 |
模型训练
首先在 $LOCAL_EXPERIMENT_DIR
中创建模型输出文件夹 experiment_dir_unpruned_final
,保存训练结果
之后,使用 tao 套件进行训练,各参数如下:
- —gpus:几个 GPU
- —gup_index:使用哪个 GPU
- -e:训练的设置文件
- -r:训练模型输出文件夹
- -k:秘钥
- -m:预训练模型
1 | tao ssd train --gpus 1 -- gpu_index=$GPU_INDEX -e $SPECS_DIR/ssd_train_resnet18_kitti.txt -r $USER_EXPERIMENT_DIR/experiment_dir_unpruned_final -k $KEY -m $USER_EXPERIMENT_DIR/7th/pretrained_resnet18/pretrained_object_detection_vresnet18/resnet_18.hdf5 |
训练完成后,可在 $USER_EXPERIMENT_DIR/experiment_dir_unpruned_final/weights
目录下,查看每轮训练出的模型
文件 ssd_training_log_resnet18.csv
中,记录了所有模型的精度,文件具体内容如下:
1 | epoch,AP_banane,AP_bottle,AP_cardboard,loss,lr,mAP,validation_loss |
选择 mAP 最大的模型作为最好的模型
1 | set_env EPOCH=080 |
模型评估
选择好模型后,使用 tao 套件,可对模型进行评估
1 | tao ssd evaluate --gpu_index=$GPU_INDEX -e $SPECS_DIR/ssd_train_resnet18_kitti.txt -m $USER_EXPERIMENT_DIR/experiment_dir_unpruned_final/weights/ssd_resnet18_epoch_$EPOCH.tlt -k $KEY |
模型剪枝
首先在目录 $USER_EXPERIMENT_DIR
下建立存储剪枝模型的目录 experiment_dir_pruned
之后使用 tao 工具套件对模型进行剪枝,各参数如下:
- -m:要剪枝的模型
- -o:剪枝后的输出
- -ep:剪枝的方式
- -pth:剪枝的阈值
- -k:秘钥
1 | tao ssd prune --gpu_index=$GPU_INDEX -m $USER_EXPERIMENT_DIR/experiment_dir_unpruned_final/weights/ssd_resnet18_epoch_$EPOCH.tlt -o $USER_EXPERIMENT_DIR/experiment_dir_pruned/ssd_resnet18_pruned.tlt -eq intersection -pth 0.6 -k $KEY |
在经过剪枝后,需要对模型重新训练、评估,步骤同上