Аннотации, вызывающие ошибки при обнаружении объектов в Turi Create

Руководство по обнаружению объектов в Turi Create не охватывает настройку данных, в том числе порядок прикрепления категории "аннотации".

Что я сделал, так это создал отдельный annotations файл, который выглядит так:

{
  "1.jpg": {
    "type": "rectangle",
    "coordinates": {
      "height": 97,
      "width": 243,
      "x": 4224,
      "y": 1821
    },
    "label": "cw"
}

Затем я настраиваю свои данные, используя load_imagesи этот файл:

# Load images
data = tc.image_analysis.load_images('train', with_path=True)
# Open annotations file as dict
annotations = eval(open("annotations").read())
# Add annotations column to SFrame, using the annotations dict key with the same name as the file name
data["annotations"] = data["path"].apply(lambda path: bounds[os.path.split(path)[1]])

Это хорошо работает, и если я печатаю dataЯ получаю что-то вроде этого:

+-------------------------------+---------------------------+
|              path             |           image           |
+-------------------------------+---------------------------+
| /Users/Andrew/Code/turi/cw... | Height: 3816 Width: 11056 |
| /Users/Andrew/Code/turi/cw... | Height: 3888 Width: 10672 |
| /Users/Andrew/Code/turi/cw... |  Height: 3656 Width: 9700 |
| /Users/Andrew/Code/turi/cw... |  Height: 3872 Width: 8280 |
+-------------------------------+---------------------------+
+-------------------------------+
|          annotations          |
+-------------------------------+
| {'type': 'rectangle', 'coo... |
| {'type': 'rectangle', 'coo... |
| {'type': 'rectangle', 'coo... |
| {'type': 'rectangle', 'coo... |
+-------------------------------+

Я не знаю, почему это разделено на 2 строки в консоли - вероятно, только из-за размеров.

Итак, я перехожу к этой строке в руководстве по обнаружению объектов, где он намеревается визуализировать аннотации, примененные к данным:

tc.object_detector.util.draw_bounding_boxes(data["image"], data["annotations"])

Когда я запускаю это, я получаю эту ошибку в консоли:

Traceback (most recent call last):
  File "app.py", line 62, in <module>
    load_data(bounds)
  File "app.py", line 23, in load_data
    tc.object_detector.util.draw_bounding_boxes(data["image"], data["annotations"])
  File "/Users/Andrew/turi/lib/python2.7/site-packages/turicreate/toolkits/object_detector/util/_visualization.py", line 139, in draw_bounding_boxes
    .apply(draw_single_image))
  File "/Users/Andrew/turi/lib/python2.7/site-packages/turicreate/data_structures/sframe.py", line 2463, in apply
    dryrun = [fn(row) for row in test_sf]
  File "/Users/Andrew/turi/lib/python2.7/site-packages/turicreate/toolkits/object_detector/util/_visualization.py", line 124, in draw_single_image
    _annotate_image(pil_img, anns, confidence_threshold=confidence_threshold)
  File "/Users/Andrew/turi/lib/python2.7/site-packages/turicreate/toolkits/object_detector/util/_visualization.py", line 49, in _annotate_image
    for ann in reversed(anns):
TypeError: argument to reversed() must be a sequence

Кроме того, если я это закомментирую, а затем продолжу:

model = tc.object_detector.create(data, feature="image", annotations="annotations")

Я получаю ошибку:

Traceback (most recent call last):
  File "app.py", line 65, in <module>
    learn()
  File "app.py", line 37, in learn
    model = tc.object_detector.create(data, feature="image", annotations="annotations")
  File "/Users/Andrew/turi/lib/python2.7/site-packages/turicreate/toolkits/object_detector/object_detector.py", line 170, in create
    require_annotations=True)
  File "/Users/Andrew/turi/lib/python2.7/site-packages/turicreate/toolkits/object_detector/object_detector.py", line 66, in _raise_error_if_not_detection_sframe
    raise _ToolkitError("Annotations column must contain lists")
turicreate.toolkits._main.ToolkitError: Annotations column must contain lists

Предположительно я неправильно настраиваю колонку аннотаций в соответствии с ожиданиями.

1 ответ

annotations В столбце отсутствуют открывающие и закрывающие скобки. Если вы посмотрите на вывод визуализации в учебном пособии, то увидите, что в начале каждой аннотации есть открытая скобка (... и, вероятно, закрывающая скобка в конце).

Не совсем уверен, как это исправить в данный момент. Но постараюсь опубликовать, когда получу решение.

Немного поздно, но недавно у меня была эта проблема или, по крайней мере, тот же отчет об ошибке. Когда вы получите что-то вроде:

turicreate.toolkits._main.ToolkitError: Annotations column must contain lists 

пытаться

annotations.column_types() or data.column_types()

вы, скорее всего, увидите что-то вроде

 str, image, str

вместо желаемого

str, image, list

и проблема будет в строке, искаженной так, что синтаксический анализатор Python выдает ошибку. В моем случае дефект был просто лишним пробелом после закрывающей квадратной скобки в каждой строке. Исправьте это, повторно запустите column_types, чтобы убедиться, что список обработан правильно, и переходите к следующему препятствию!

Другие вопросы по тегам