Ошибка значения: сообщение протокола StringIntLabelMapItem не имеет частоты поля

#tensorflow #object-detection #object-detection-api

#tensorflow #обнаружение объекта #object-detection-api

Вопрос:

Я пытаюсь создать детектор объектов, используя tensorflow из учебника YouTube. Я создал среду conda и установил все необходимые пакеты. Теперь, когда я пытаюсь запустить его скрипт в VSCode, он показывает эту ошибку.

 Traceback (most recent call last):
File "updated_old_example.py", line 79, in <module>
categories = label_map_util.convert_label_map_to_categories(label_map,max_num_classes=NUM_CLASSES, use_display_name=True)
File "/Users/Home/Desktop/Project/Object_Detection/models/research/object_detection/utils/label_map_util.py", line 133, in convert_label_map_to_categories
if item.HasField('frequency'):
ValueError: Protocol message StringIntLabelMapItem has no field frequency.
 

Я впервые сталкиваюсь с этой ошибкой. Некоторые исправления были бы очень признательны.

Ответ №1:

Я никогда раньше не сталкивался с подобной проблемой, но после загрузки новых моделей из tensorflow API эта ошибка просто появляется. Затем я попытался сравнить файл, который записан в сообщении об ошибке, со старой версией моделей API tensorflow, вот где появляется ошибка. все, что вам нужно сделать, это найти этот файл:

 Object_Detection/models/research/object_detection/utils/label_map_util.py", line 133
 

затем удалите этот код

   if item.HasField('frequency'):
    if item.frequency == string_int_label_map_pb2.LVISFrequency.Value(
        'FREQUENT'):
      category['frequency'] = 'f'
    elif item.frequency == string_int_label_map_pb2.LVISFrequency.Value(
        'COMMON'):
      category['frequency'] = 'c'
    elif item.frequency == string_int_label_map_pb2.LVISFrequency.Value(
        'RARE'):
      category['frequency'] = 'r'
  if item.HasField('instance_count'):
    category['instance_count'] = item.instance_count