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

Этот пример показывает вам, как экспортировать объект основной истины в пользовательский формат данных Объектная нотация JavaScript (JSON) файл, и в формат данных COCO [1] файл JSON.

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

Этот пример использует объект основной истины, который содержит метки, ранее сгенерировал использование приложения Video 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'}    {0×0 char}     {1×1 struct}
    {'Lane' }    Line       0.49412    0.18431    0.55686    {'Road'   }    {0×0 char}     {0×0 double}
    {'Sunny'}    Scene            1    0.41176    0.16078    {'None'   }    {0×0 char}     {0×0 double}

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

Добавьте метаданные в аннотации путем определения Информации и Пар "имя-значение" Лицензии

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.

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

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

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

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

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

  1. Используйте тип метки Polygon, чтобы пометить экземпляры объектов.

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

Например:

Аннотировать изображение, которое содержит и экземпляры человека и области толпы,

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

  2. Создайте соответствующую метку Pixel с именем 'person_crowd' аннотировать области толпы человека.

'_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 указывает информацию о лицензиях при помощи аргумента пары "имя-значение" License. Значение должно быть массивом структур.

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

Категории

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

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

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

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

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

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

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

{
  "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 содержит список объектов аннотации. Формат данных объектов аннотации зависит от типа метки и можно следующим образом:

Прямоугольный ROI

{
  "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.

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
}

PolyLine 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 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 ROI

{
  "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
}

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

{
"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. Только Многоугольник и Пиксель толпы Маркируют ROI, может быть экспортирован в формат данных обнаружения объектов COCO.

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

Ссылки

[1] Лин TY. и др. (2014) Microsoft COCO: Общие Объекты в Контексте. \in: Флот D., Пэдждла Т., Шиле Б., Тейтелэарс Т. (редакторы) Компьютерное зрение – ECCV 2014. ECCV 2014. Читайте лекции Примечаниям в Информатике, vol 8693. Спрингер, Хан. https://doi.org/10.1007/978-3-319-10602-1_48