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

TensorFlow目标检测训练报错:'SymbolDatabase'无'RegisterServiceDescriptor'属性

解决TensorFlow目标检测训练中的RegisterServiceDescriptor属性错误

我之前也碰到过完全一样的错误,大概率是protobuf版本不兼容导致的——旧版本的protobuf库没有RegisterServiceDescriptor这个方法,但TensorFlow的TPU相关模块需要调用它,就会抛出这个属性错误。

先还原下你的问题场景:
跟着TensorFlow目标检测教程训练模型时,运行这条训练命令:

python train.py --logtostderr --train_dir=training/ --pipeline_config_path=training/faster_rcnn_inception_v2_pets.config

出现了如下错误堆栈:

FutureWarning: Conversion of the second argument of issubdtype from float to np.floating is deprecated. In future, it will be treated as np.float64 == np.dtype(float).type. from .conv import register_converters as register_converters
Traceback (most recent call last):
File "train.py", line 49, in
from object_detection import trainer
File "C:\Users\ASUS PC\Anaconda3\lib\site-packages\object_detection-0.1-py3.6.egg\object_detection\trainer.py", line 32, in
from object_detection.utils import variables_helper
File "C:\Users\ASUS PC\Anaconda3\lib\site-packages\object_detection-0.1-py3.6.egg\object_detection\utils\variables_helper.py", line 23, in
slim = tf.contrib.slim
File "C:\Users\ASUS PC\Anaconda3\lib\site-packages\tensorflow\python\util\lazy_loader.py", line 53, in getattr
module = self.load()
File "C:\Users\ASUS PC\Anaconda3\lib\site-packages\tensorflow\python\util\lazy_loader.py", line 42, in load
module = importlib.import_module(self.name)
File "C:\Users\ASUS PC\Anaconda3\lib\importlib_init
.py", line 126, in import_module
return bootstrap.gcd_import(name[level:], package, level)
File "C:\Users\ASUS PC\Anaconda3\lib\site-packages\tensorflow\contrib_init
.py", line 37, in
from tensorflow.contrib import distributions
File "C:\Users\ASUS PC\Anaconda3\lib\site-packages\tensorflow\contrib\distributions_init
.py", line 39, in
from tensorflow.contrib.distributions.python.ops.estimator import *
File "C:\Users\ASUS PC\Anaconda3\lib\site-packages\tensorflow\contrib\distributions\python\ops\estimator.py", line 21, in
from tensorflow.contrib.learn.python.learn.estimators.head import compute_weighted_loss
File "C:\Users\ASUS PC\Anaconda3\lib\site-packages\tensorflow\contrib\learn_init
.py", line 95, in
from tensorflow.contrib.learn.python.learn import *
File "C:\Users\ASUS PC\Anaconda3\lib\site-packages\tensorflow\contrib\learn\python_init
.py", line 28, in
from tensorflow.contrib.learn.python.learn import *
File "C:\Users\ASUS PC\Anaconda3\lib\site-packages\tensorflow\contrib\learn\python\learn_init
.py", line 40, in
from tensorflow.contrib.learn.python.learn.experiment import Experiment
File "C:\Users\ASUS PC\Anaconda3\lib\site-packages\tensorflow\contrib\learn\python\learn\experiment.py", line 39, in
from tensorflow.contrib.tpu.python.tpu import tpu_estimator
File "C:\Users\ASUS PC\Anaconda3\lib\site-packages\tensorflow\contrib\tpu_init
.py", line 54, in
from tensorflow.contrib.tpu.python import profiler
File "C:\Users\ASUS PC\Anaconda3\lib\site-packages\tensorflow\contrib\tpu\python\profiler_init_.py", line 23, in
from tensorflow.contrib.tpu.profiler.tpu_profiler_analysis_pb2 import *
File "C:\Users\ASUS PC\Anaconda3\lib\site-packages\tensorflow\contrib\tpu\profiler\tpu_profiler_analysis_pb2.py", line 16, in
from tensorflow.contrib.tpu.profiler import tpu_profiler_pb2 as tensorflow_dot_contrib_dot_tpu_dot_profiler_dot_tpu__profiler__pb2
File "C:\Users\ASUS PC\Anaconda3\lib\site-packages\tensorflow\contrib\tpu\profiler\tpu_profiler_pb2.py", line 395, in
_sym_db.RegisterServiceDescriptor(_TPUPROFILER)
AttributeError: 'SymbolDatabase' object has no attribute 'RegisterServiceDescriptor'

解决步骤

  1. 卸载当前不兼容的protobuf版本
    打开Anaconda Prompt或者终端,运行:
pip uninstall protobuf -y
  1. 安装兼容的protobuf版本
    因为你用的是TensorFlow 1.x的目标检测API(从faster_rcnn_inception_v2_pets.config和Python3.6环境能看出来),推荐安装3.19.6这个稳定兼容的版本:
pip install protobuf==3.19.6
  1. (可选)用虚拟环境避免依赖冲突
    如果你的全局Anaconda环境有很多包冲突,可以创建一个独立的虚拟环境:
conda create -n tf_det_env python=3.6
conda activate tf_det_env

然后在这个环境里重新安装TensorFlow、protobuf和Object Detection API的所有依赖,这样能彻底避免版本冲突问题。

调整完protobuf版本后,再重新运行你的训练命令,应该就能正常启动训练了。

内容的提问来源于stack exchange,提问作者Taimur Islam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:59:29