MMDetection运行train_detector后如何保存微调模型权重及后续测试
MMDetection自定义微调模型checkpoint相关问题解答
1. 微调后模型的默认存储路径
你代码中通过cfg.work_dir = "../vinbig"指定了工作目录,训练过程中自动生成的checkpoint默认就保存在这个路径下。
结合你设置的cfg.checkpoint_config.interval = 3,训练时每3个epoch就会自动保存一次权重,文件命名规则为epoch_{epoch数}.pth,你设置了总epoch为6,训练完成后该目录下会生成epoch_3.pth、epoch_6.pth两个自动保存的权重文件,如果开启了最优权重保存,还会生成以评估指标命名的best_bbox_mAP_*.pth最优权重文件。
注意:Google Colab的临时磁盘在实例关机后会清空,如果你需要长期保留权重,需要手动将文件转存到挂载的谷歌云盘或者下载到本地。
2. 手动导出当前内存中模型的方法
如果训练完成后你还在当前会话环境中,想要手动导出内存里的模型权重做备份,可以直接调用MMCV的序列化工具:
import mmcv # 自定义路径保存当前模型权重 mmcv.dump(model.state_dict(), "../vinbig/finetuned_vfnet_custom.pth")
3. 加载保存的checkpoint进行后续推理的方法
无需重复训练,直接调用MMDetection的init_detector接口加载你保存的权重即可完成推理,示例代码如下:
from mmdet.apis import init_detector, inference_detector, show_result_pyplot import mmcv # 替换为你自己的配置文件路径和权重文件路径 config_path = "你的训练所用配置文件路径,例如vfnet_r50_fpn_mdconv_c3-c5_mstrain_2x_coco.py" checkpoint_path = "../vinbig/epoch_6.pth" # 初始化模型,用CPU推理就把device改成'cpu' model = init_detector(config_path, checkpoint_path, device="cuda:0") # 后续推理逻辑和你之前的写法完全一致 img = mmcv.imread('kitti_tiny/training/image_2/000068.jpeg') result = inference_detector(model, img) show_result_pyplot(model, img, result)
内容的提问来源于stack exchange,提问作者Krishna Singh
相关产品推荐
相关产品推荐

