Как создать SFrame, совместимый с TuriCreate, для задачи обнаружения объектов

Я пытаюсь создать SFrame, содержащий изображения и координаты ограничивающих прямоугольников, чтобы выполнить обнаружение объекта с помощью TuriCreate. Я создал свой собственный набор данных с помощью IBM Cloud Annotations, экспортированного в формате CreateML. Когда я бегу:

usage_data = tc.SFrame.read_json("annotations.json")

Я получил:

[{'label': 'xyz' ... | 8be1172e-44bb-4084-917f-db ....

Это не тот формат, который запрашивается. Подтверждено выполнение приведенного ниже кода:

data = tc.SFrame.read_json("annotations.json")

train_data, test_data = data.random_split(0.75)

model = tc.object_detector.create(train_data)

predictions = model.predict(test_data)

`Я получаю:

ToolkitError: No "feature" column specified and no column with expected type "image" is found. "datasets" consists of columns with types: list, str.

Я бы хотел знать:

  1. Правильно ли экспортируются данные в формате CreateML?
  2. Могу ли я использовать SFrame.read_json() для чтения таких данных?

person Simone    schedule 13.08.2020    source источник


Ответы (1)


Вам нужно создать SFrame из папки изображений, а затем присоединить его к SFrame аннотаций, например:

imagesSFrame = turicreate.image_analysis.load_images('imagesFolder/')
combinedSFrame = images.join(annotationsSFrame)

Просто убедитесь, что каждая из ваших аннотаций имеет путь, который точно соответствует пути в вашем imagesSFrame. Ниже мой формат csv:

path, annotation,
imagesFolder/image1.png,[{'label': 'dog', 'coordinates': {'height': 118, 'width': 240, 'x': 155, 'y': 129}}]

print(imagesSFrame) позволит вам проверить, какой путь находится внутри ваших изображенийSFrame

person ryboo    schedule 28.08.2020