В этом примере показано, как экспортировать основную истину в пользовательский файл JavaScript Object Notation (JSON) в формате данных COCO [1] в формате JSON.
Можно проанализировать файлы JSON, чтобы использовать их для обучения и вывода в рамках машинного обучения. Формат пользовательского файла JSON формата данных аналогичен формату данных COCO. Различие заключается в том, что формат представления аннотаций меток для файла JSON изменен, чтобы включать различные типы меток, поддерживаемые основной истиной.
Этот пример использует объект основная истина, который содержит метки, ранее сгенерированные с помощью приложения Video Labeler.
Чтобы экспортировать объект основная истина из приложения Labeler в файл JSON, выполните следующие шаги:
Используйте Image Labeler или приложение Video Labeler, чтобы пометить изображения или видео соответственно.
Экспортируйте метки в файл или рабочую область, чтобы сгенерировать объект основная истина.
Следуйте шагам в этом примере.
Загрузка основной истины
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'} ... );
Использование exportGroundTruthToJSON
функция для экспорта основной истины в файл JSON.
The exportGroundTruthToJSON
функция анализирует данные в основной истине, кодирует их в пользовательском формате данных, который описан ниже, и затем генерирует файл JSON.
annotationsFileName = 'vehicles_annotations.json'; exportGroundTruthToJSON(VehicleImageSequenceGroundTruth, annotationsFileName, 'Info', info, 'License', licenses)
Использование exportGroundTruthToJSON
с 'COCO'
Значение имени установлено на true
для экспорта данных обнаружения объектов, которые были помечены с помощью многоугольников, в файл JSON формата данных обнаружения объектов COCO.
Чтобы создать основную истину для обнаружения объектов, который можно экспортировать в файл JSON формата данных COCO, выполните следующие шаги:
Используйте тип метки многоугольника, чтобы пометить образцы объекта.
Используйте тип метки Pixel, чтобы пометить области массива объекта. Имя метки должно быть следующим: polygonLabelName_crowd (Where polygonLabelName - имя метки соответствующего многоугольника).
Для примера:
Чтобы аннотировать изображение, содержащее экземпляры людей и области толпы,
Создайте метку типа многоугольник с именем 'person'
для аннотирования образцов лиц.
Создайте соответствующую метку 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 содержит следующие пять полей:
информация
лицензии
категории
изображения/видео
аннотации
Поле Info задает набор данных и информацию аннотации с помощью аргумента пары "имя-значение" 'Info'. Значение должно быть скалярной структурой.
Значение по умолчанию:
{ "year": Current year, "version": "1", "description": "Created using MATLAB", "date_created": Current datetime }
Поле Licenses задает информацию о лицензиях с помощью аргумента пары "имя-значение". Значение должно быть массивом структур.
Значение по умолчанию: []
Поле Категории содержит содержимое таблицы основной истины определений меток. Имена переменных в таблице используются в качестве полей и изменяются так, чтобы они были аналогичны формату данных COCO. Дополнительное поле Id определяет каждое определение метки.
Каждый объект категории содержит следующие два дополнительных поля, которые заменяют переменную 'Иерархия', если она существует:
Атрибуты: Содержит определения атрибутов метки.
Подметки: определения подметок 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 }
{ "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.
{ "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, соответственно. Эти углы являются положительными по часовой стрелке при взгляде в прямом направлении их соответствующих осей.
{ "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 }
Пользовательские типы меток не могут быть экспортированы в файл JSON.
Вы не можете экспортировать данные из пользовательского источника основной истины в формат файла JSON.
Только многоугольник и Pixel Label ROI могут быть экспортированы в формат данных обнаружения объектов COCO.
Файл 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