我按照他们在Github上描述的步骤安装了Object Detection API,然后运行了该脚本:
python object_detection/builders/model_builder_test.py
并且测试是成功的,所以我认为一切都已正确设置。接下来,我尝试运行带有qtconsole的Jupyter Notebook,以检测测试图像中的对象。但是,它返回此错误:
AttributeError Traceback (most recent call last)
<ipython-input-3-be6fe1ba8733> in <module>()
----> 1 from utils import label_map_util
2
3 from utils import visualization_utils as vis_util
4
~\Desktop\Objectdetection\models-master\object_detection\utils\label_map_util.py in <module>()
20 import tensorflow as tf
21 from google.protobuf import text_format
---> 22 from object_detection.protos import string_int_label_map_pb2
23
24
~\Desktop\Objectdetection\models-master\object_detection\object_detection.py in <module>()
114
115
--> 116 label_map = label_map_util.load_labelmap(PATH_TO_LABELS)
117 categories = label_map_util.convert_label_map_to_categories(label_map, max_num_classes=NUM_CLASSES, use_display_name=True)
118 category_index = label_map_util.create_category_index(categories)
AttributeError: module 'utils.label_map_util' has no attribute 'load_labelmap'
有谁知道这个问题的原因是什么?
谢谢。
最佳答案
在文件~\Desktop\Objectdetection\models-master\object_detection\utils\label_map_util.py
中
尝试更改此:from object_detection.protos import string_int_label_map_pb2
对此:from protos import string_int_label_map_pb2
说明:
模块load_labelmap
中的功能label_map_util
无法访问,因为string_int_label_map_pb2
的导入失败。
如果查看print(dir(label_map_util))
的输出,则可以看到此内容。
使用object_detection.protos
时:['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'logging', 'text_format', 'tf']
将相对路径更改为protos
后,该功能应可访问:['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_validate_label_map', 'convert_label_map_to_categories', 'create_category_index', 'get_label_map_dict', 'load_labelmap', 'logging', 'string_int_label_map_pb2', 'text_format', 'tf']