运行export_inference_graph.py导出faster_rcnn_inception_v2模型时触发ValueError
报错根因
当前环境运行的Python 3.8.5、TensorFlow 2.4.1配套的Object Detection API,在特征提取器校验环节未识别到配置文件中指定的faster_rcnn_inception_v2类型,属于典型的旧教程配置规则与当前API版本不匹配的问题。
分步解决操作
- 第一步:核对当前API支持的特征提取器范围
直接打开报错堆栈中指向的model_builder.py文件,搜索文件内维护的_CHECKED_FEATURE_EXTRACTORS常量,定位faster_rcnn架构对应的支持列表,核对配置的特征提取器名称是否在列表内:
TF2.4.1对应的正式版Object Detection API中,不再使用TF1.x时代带faster_rcnn_前缀的inception_v2命名规则,旧教程的配置写法在当前版本会直接触发校验报错。 - 第二步:修正配置文件的特征提取器命名
打开CAPTCHA_training/faster_rcnn_inception_v2_coco.config,找到model.faster_rcnn.feature_extractor节点下的type字段,将原有值faster_rcnn_inception_v2替换为当前API支持的同结构名称inception_v2,去掉架构前缀。
注意:修改配置时必须保证导出用的配置和模型训练时使用的配置完全一致,如果训练阶段已经沿用了旧命名的特征提取器,不要直接替换名称,否则会出现checkpoint权重维度不匹配的加载失败问题。 - 第三步:处理配置修正后仍报相同错误的场景
如果修改命名后还是抛出“特征提取器不支持”的报错,说明本地手动安装的Object Detection API版本缺失inception_v2的特征提取器实现,需要重新拉取与TensorFlow 2.4.1完全适配的官方Model Garden代码包,替换本地site-packages中不完整的object_detection目录,不要使用pip源中非官方的旧版本安装包。 - 第四步:重新执行导出流程
完成配置修正、环境校验后,直接运行你之前编写的导出命令即可,无需调整已确认正确的各类路径参数。
内容的提问来源于stack exchange,提问作者Jatin Rajani
相关产品推荐
相关产品推荐

