You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ObjectDetectionAPI报错:TypeError: __new__()收到意外参数'serialized_options'

解决 TypeError: __new__() got an unexpected keyword argument 'serialized_options' 问题

这个错误几乎百分百是protobuf版本不兼容导致的——你手里的protoc编译工具版本(3.5.1)和Python环境中安装的protobuf包版本不匹配,或是和你的TensorFlow版本存在兼容性冲突。下面是具体的排查和修复步骤:

第一步:检查Python环境的protobuf版本

先确认你Python环境里装的protobuf包是哪个版本,在终端运行:

pip show protobuf

查看输出中的Version字段,如果显示的是3.6.0及以上版本,就会和你的protoc 3.5.1出现不兼容:高版本的protobuf Python包会引入serialized_options这个新参数,但你用旧protoc编译出来的代码根本不支持这个参数。

第二步:匹配protoc与Python protobuf版本

如果查到的版本和3.5.1不一致,先卸载现有版本:

pip uninstall protobuf -y

然后安装和protoc完全匹配的版本:

pip install protobuf==3.5.1

第三步:验证TensorFlow兼容性

如果做完第二步还是报错,那大概率是你的TensorFlow版本和protobuf 3.5.1不兼容(比如TensorFlow 1.14及以上版本要求protobuf 3.6.1或更高)。这时候需要:

  1. 升级protoc到3.6.1或更高版本(比如和TensorFlow 1.15匹配的3.8.0)
  2. 安装对应版本的protobuf Python包:
    pip install protobuf==3.8.0
    
  3. 重新编译所有.proto文件:进入models/research目录,运行:
    protoc object_detection/protos/*.proto --python_out=.
    

第四步:重新运行测试脚本

完成上述步骤后,再次执行测试脚本:

python object_detection/builders/model_builder_test.py

如果仍有问题,建议检查你的TensorFlow版本和Object Detection API的版本是否匹配——比如你如果用的是TensorFlow 2.x,旧版本的installation.md步骤可能不适用,需要切换到TF2对应的Object Detection代码分支。

内容的提问来源于stack exchange,提问作者doruk.sonmez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:45:02