TensorFlow Object Detection API加载预训练模型checkpoint报错
配置问题排查与修正方案
你的报错来自4个可直接定位的配置与文件问题,逐一调整即可正常加载预训练checkpoint:
- 路径用户名拼写笔误
你在pipeline config中填写的checkpoint路径里的用户名,和系统实际的用户目录名不匹配(从训练报错返回的检索路径、启动命令配置的路径可验证,实际用户目录为Pierre),拼写错误会直接导致系统检索不到目标文件,触发NotFoundError报错。 - checkpoint前缀填写不符合TF2规范
你下载的TF2版本ssd_resnet152_v1_fpn模型的checkpoint,采用新版TensorFlow的文件命名规则,目录下的配套文件为ckpt-0.data-00000-of-00001、ckpt-0.index、ckpt-0.meta,对应官方要求填写的路径前缀是不带文件后缀的完整路径前缀,也就是...\\checkpoint\\ckpt-0。
不要沿用TF1时代的model.ckpt命名规则填写路径,也不要使用ckpt-0.*这类通配符,checkpoint加载器会直接识别失败。 - checkpoint文件损坏导致的格式报错
出现“not an sstable (bad magic number)”的报错,基本可以确认解压后的checkpoint文件存在损坏,常见诱因是下载过程中断、解压时被杀毒软件拦截修改。可重新下载对应模型压缩包,解压后核对checkpoint目录下的文件大小,确认没有0字节的残缺文件后再替换原文件。 - 配套参数配置错配
配置fine_tune_checkpoint的同时,必须同步指定fine_tune_checkpoint_type: "detection",因为你是加载完整预训练检测模型做微调,如果误写为classification会导致参数加载逻辑错配,仅加载骨干网络权重而跳过检测头参数加载。
修正后的pipeline config相关配置片段参考:
fine_tune_checkpoint: "C:\\Users\\Pierre\\Desktop\\Adv-ML-Project\\models\\research\\object_detection\\test_data\\checkpoint\\ckpt-0" fine_tune_checkpoint_type: "detection"
你当前使用的官方训练启动命令本身不存在问题,完成上述配置修正后,不需要调整现有项目目录结构即可正常启动训练流程。
内容的提问来源于stack exchange,提问作者Pierre
相关产品推荐
相关产品推荐

