PS D:\RealTimeObjectDetection> python Tensorflow/models/research/object_detection/model_main_tf2.py --model_dir=Tensorflow/workspace/models/my_ssd_mobnet --pipeline_config_path=Tensorflow/workspace/models/my_ssd_mobnet/pipeline.config --num_train_steps=10000
Traceback (most recent call last):
File "D:\RealTimeObjectDetection\Tensorflow\models\research\object_detection\model_main_tf2.py", line 31, in <module>
import model_lib_v2
File "D:\RealTimeObjectDetection\Tensorflow\models\research\object_detection\model_lib_v2.py", line 29, in <module>
import eval_util
File "D:\RealTimeObjectDetection\Tensorflow\models\research\object_detection\eval_util.py", line 35, in <module>
from object_detection.metrics import coco_evaluation
File "D:\RealTimeObjectDetection\Tensorflow\models\research\object_detection\metrics\coco_evaluation.py", line 28, in <module>
from object_detection.utils import object_detection_evaluation
File "D:\RealTimeObjectDetection\Tensorflow\models\research\object_detection\utils\object_detection_evaluation.py", line 46, in <module>
from object_detection.utils import label_map_util
File "D:\RealTimeObjectDetection\Tensorflow\models\research\object_detection\utils\label_map_util.py", line 29, in <module>
from object_detection.protos import string_int_label_map_pb2
File "D:\RealTimeObjectDetection\Tensorflow\models\research\object_detection\protos\string_int_label_map_pb2.py", line 9, in <module>
from google.protobuf import runtime_version as _runtime_version
ImportError: cannot import name 'runtime_version' from 'google.protobuf' (C:\Users\varda\AppData\Local\Programs\Python\Python311\Lib\site-packages\google\protobuf\__init__.py)
是版本错误吗?我还尝试在用户变量中设置 PYTHONPATH 变量,但编译器仍在查找 object_detection 文件的站点包,而我将路径设置为 D 驱动器中的不同位置
是对的,这是一个版本错误,但它可能与
PYTHONPATH
无关,而与
protobuf
包本身有关。此错误表明安装的
google.protobuf
版本没有
runtime_version
属性,这在该库的最新版本中是存在的。
以下是修复此错误的步骤:
1. 升级
protobuf
包:
打开命令提示符或终端并运行以下命令:
bash
pip install --upgrade protobuf
这将升级
protobuf
包到最新版本,其中应该包含
runtime_version
属性。
2. 重新启动内核或终端:
升级软件包后,请务必重新启动内核(如果使用的是 Jupyter Notebook)或关闭并重新打开命令提示符或终端。这将确保更改生效。
3. 验证安装:
运行以下 Python 代码以验证
protobuf
版本和
runtime_version
属性:
python
import protobuf
print(protobuf.__version__)
print(protobuf.runtime_version)
这应该打印
protobuf
的版本号,然后打印
runtime_version
。如果这没有引发错误,那么已经成功修复了该问题。
4. 如果问题仍然存在:
-
检查虚拟环境:
确保在正确的虚拟环境中工作,并且
protobuf
包已安装在该环境中。 -
卸载并重新安装:
尝试卸载并重新安装
protobuf
和tensorflow
包:bash pip uninstall protobuf tensorflow pip install protobuf tensorflow
-
TensorFlow 版本兼容性:
确保使用的 TensorFlow 版本与
protobuf
版本兼容。可以参考 TensorFlow 文档以获取兼容性信息。
完成这些步骤后,应该能够解决
ImportError
并运行的目标检测脚本。