Экспорт основной истины в пользовательские файлы и файлы COCO JSON

В этом примере показано, как экспортировать основную истину в пользовательский файл JavaScript Object Notation (JSON) в формате данных COCO [1] в формате JSON.

Можно проанализировать файлы JSON, чтобы использовать их для обучения и вывода в рамках машинного обучения. Формат пользовательского файла JSON формата данных аналогичен формату данных COCO. Различие заключается в том, что формат представления аннотаций меток для файла JSON изменен, чтобы включать различные типы меток, поддерживаемые основной истиной.

Этот пример использует объект основная истина, который содержит метки, ранее сгенерированные с помощью приложения Video Labeler.

Чтобы экспортировать объект основная истина из приложения Labeler в файл JSON, выполните следующие шаги:

  1. Используйте Image Labeler или приложение Video Labeler, чтобы пометить изображения или видео соответственно.

  2. Экспортируйте метки в файл или рабочую область, чтобы сгенерировать объект основная истина.

  3. Следуйте шагам в этом примере.

Загрузка Основной истины объекта

Загрузка основной истины

load("VehicleImageSequenceGroundTruth.mat")

Отображение определений меток

VehicleImageSequenceGroundTruth.LabelDefinitions
ans=3×6 table
      Name        Type               LabelColor                 Group       Description     Hierarchy  
    _________    _______    _____________________________    ___________    ___________    ____________

    {'Car'  }    Polygon     0.5862     0.8276     0.3103    {'Vehicle'}    {0x0 char}     {1x1 struct}
    {'Lane' }    Line       0.49412    0.18431    0.55686    {'Road'   }    {0x0 char}     {0x0 double}
    {'Sunny'}    Scene            1    0.41176    0.16078    {'None'   }    {0x0 char}     {0x0 double}

Добавление информации и информации о лицензии (необязательно)

Добавьте метаданные к аннотациям путем определения пар Info и License Name-Value

info = struct( ...
    'year', 2020, ...
    'version', '1', ...
    'description', 'Vehicles Dataset', ...
    'date_created', datetime ...
    );

licenses = struct( ...
    'url', {'www.mathworks.com', 'www.mathworks.com'}, ...
    'name', {'License 1', 'License 2'} ...
    );

Экспорт объекта Основная истина в пользовательский файл JSON в формате данных

Использование exportGroundTruthToJSON функция для экспорта основной истины в файл JSON.

The exportGroundTruthToJSON функция анализирует данные в основной истине, кодирует их в пользовательском формате данных, который описан ниже, и затем генерирует файл JSON.

annotationsFileName = 'vehicles_annotations.json';
exportGroundTruthToJSON(VehicleImageSequenceGroundTruth, annotationsFileName, 'Info', info, 'License', licenses)

Экспорт объекта основной истины обнаружения объектов в файл JSON в формате данных COCO

Использование exportGroundTruthToJSON с 'COCO' Значение имени установлено на true для экспорта данных обнаружения объектов, которые были помечены с помощью многоугольников, в файл JSON формата данных обнаружения объектов COCO.

Чтобы создать основную истину для обнаружения объектов, который можно экспортировать в файл JSON формата данных COCO, выполните следующие шаги:

  1. Используйте тип метки многоугольника, чтобы пометить образцы объекта.

  2. Используйте тип метки Pixel, чтобы пометить области массива объекта. Имя метки должно быть следующим: polygonLabelName_crowd (Where polygonLabelName - имя метки соответствующего многоугольника).

Для примера:

Чтобы аннотировать изображение, содержащее экземпляры людей и области толпы,

  1. Создайте метку типа многоугольник с именем 'person' для аннотирования образцов лиц.

  2. Создайте соответствующую метку Pixel с именем 'person_crowd' для аннотации областей «человек-толпа».

The '_crowd' суффикс используется для связывания двух меток. Поэтому убедитесь, что для каждой метки пикселя толпы существует соответствующая метка многоугольника.

Примечание.При экспорте в формат данных обнаружения объектов COCO выдается ожидаемое предупреждение с указанием типов меток, которые игнорируются. В этом случае, поскольку основная истина имеет метки линия, они будут проигнорированы.

annotationsFileName = 'vehicles_annotations_coco.json';
exportGroundTruthToJSON(VehicleImageSequenceGroundTruth, annotationsFileName, ...
    'Info', info, 'License', licenses, 'COCO', true)
Warning: Label types, Line, Scene, are not supported and are ignored during export to a COCO data format JSON file

Пользовательский формат данных JSON

Экспортированный файл JSON содержит следующие пять полей:

  1. информация

  2. лицензии

  3. категории

  4. изображения/видео

  5. аннотации

Информация

Поле Info задает набор данных и информацию аннотации с помощью аргумента пары "имя-значение" 'Info'. Значение должно быть скалярной структурой.

Значение по умолчанию:

{
  "year": Current year,
  "version": "1",
  "description": "Created using MATLAB",
  "date_created": Current datetime
}

Лицензии

Поле Licenses задает информацию о лицензиях с помощью аргумента пары "имя-значение". Значение должно быть массивом структур.

Значение по умолчанию: []

Категории

Поле Категории содержит содержимое таблицы основной истины определений меток. Имена переменных в таблице используются в качестве полей и изменяются так, чтобы они были аналогичны формату данных COCO. Дополнительное поле Id определяет каждое определение метки.

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

  1. Атрибуты: Содержит определения атрибутов метки.

  2. Подметки: определения подметок Conatins метки.

Изображения/Видео

Поле Изображения/Видео содержит список изображений (или видео) объектов и соответствующую информацию.

Формат данных:

{
  "id": Unique Image ID,
  "time_stamp": Time stamp of the image frame (Only applicable to data sources with timestamps),
  "width": Width of the image/video,
  "height": Height of the image/video,
  "file_name": Name of the file,
  "file_path": Absolute file path,
  "date_captured": Last modified date of the image/ Current datetime
}

Аннотации

Поле Аннотации (Annotations) содержит список объектов аннотации. Формат данных объектов аннотации зависит от типа метки и следующий:

Прямоугольник информация только для чтения

{
  "id": Unique Annotation ID,
  "image_id": Image ID , 
  "category_id": Category ID,
  "position":  [x,y,width,height] bounding box location,
  "attributes": Contains attributes data,
  "sublabels": Contains sublabels data
}
  • x и y задайте верхний левый угол прямоугольника и задайте значение 0-индексации.

  • w задает ширину прямоугольника, которая является его длиной вдоль оси X.

  • h задает высоту прямоугольника, которая является его длиной вдоль оси Y.

Polygon ROI

{
  "id": Unique Annotation ID,
  "image_id": Image ID , 
  "category_id": Category ID,
  "position":  [[x1 y1 x2 y2 ...  xN yN]] for N points in the polygon,
  "attributes": Contains attributes data,
  "sublabels": Contains sublabels data
}

Полилиния информации только для чтения

{
  "id": Unique Annotation ID,
  "image_id": Image ID,
  "category_id": Category ID,
  "position": [x1 y1 x2 y2 ...  xN yN] for N points in the polyline.,
  "attributes": Contains attributes data,
  "sublabels": Contains sublabels data
}
  • x1, y1... задайте местоположение точки и проиндексируйте 0.

ProjectedCuboid ROI

{
"id": Unique Annotation ID,
"image_id": Image ID,
"category_id": Category ID,
"position": List of the form [xctr, yctr, zctr, xlen, ylen, zlen, xrot, yrot, zrot],
  "attributes": Contains attributes data,
  "sublabels": Contains sublabels data
}
  • xctr, yctr, и zctr укажите центр спроецированного кубоида с 0-индексацией.

  • xlen, ylen, и zlen задайте длину проективного кубоида вдоль оси X, оси Y и оси Z, соответственно, до применения вращения.

  • xrot, yrot, и zrot задайте углы поворота для проективного кубоида вдоль оси X, оси Y и оси Z, соответственно. Эти углы являются положительными по часовой стрелке при взгляде в прямом направлении их соответствующих осей.

Параметры PixelLabel информации только для чтения

{
  "image_id": Image ID,
  "file_name": Name of the pixel label image file,
  "file_path": Path to the pixel label image file,
  "segments_info": List of segment objects
}

Формат объектов сегмента: Каждый сегмент в изображении пиксельной метки представлен как объект сегмента

{
"id": PixelLabelID of the label or R+G*256+B*256^2 in case if PixeLabelID is an array,
"category_id": Category ID,
"area": Area covered by the pixels
}

Сцена

{
  "id": Unique Annotation ID,
  "image_id": Image ID,
  "category_id": Category ID of the scene label applicable to the image
}

Ограничения

  1. Пользовательские типы меток не могут быть экспортированы в файл JSON.

  2. Вы не можете экспортировать данные из пользовательского источника основной истины в формат файла JSON.

  3. Только многоугольник и Pixel Label ROI могут быть экспортированы в формат данных обнаружения объектов COCO.

  4. Файл JSON, сгенерированный функцией поддержки «exportGroundTruthToJSON», не может быть импортирован обратно в MATLAB как основную истину объект.

Ссылки

[1] Lin TY. и др. (2014) Microsoft COCO: общие объекты в контексте. In: Fleet D., Pajdla T., Schiele B., Tuytelaars T. (eds) Компьютерное Зрение - ECCV 2014. ECCV 2014. Лекции по информатике, том 8693. Спрингер, Чэм. https://doi.org/10.1007/978-3-319-10602-1_48

Для просмотра документации необходимо авторизоваться на сайте