exponenta event banner

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

В этом примере показано, как экспортировать базовый объект истинности в файл JSON пользовательского формата данных JavaScript, а также в файл JSON формата данных COCO [1].

Вы можете анализировать файлы 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.

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

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

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

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

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

  1. Тип метки Полигон (Polygon) используется для маркировки экземпляров объекта.

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

Например:

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

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

  2. Создание соответствующей метки пикселя с именем '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 name-value. Значение должно быть массивом структуры.

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

Категории

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

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

  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.

Окупаемость инвестиций полигона

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

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

Cuboid 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. Невозможно экспортировать данные из пользовательского источника данных reader ground truth в формат файла JSON.

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

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

Ссылки

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