В этом примере показано, как экспортировать базовый объект истинности в файл JSON пользовательского формата данных JavaScript, а также в файл JSON формата данных COCO [1].
Вы можете анализировать файлы 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.
exportGroundTruthToJSON функция анализирует данные в базовом объекте истинности, кодирует их в пользовательском формате данных, который описан ниже, и затем генерирует файл JSON.
annotationsFileName = 'vehicles_annotations.json'; exportGroundTruthToJSON(VehicleImageSequenceGroundTruth, annotationsFileName, 'Info', info, 'License', licenses)
Использовать exportGroundTruthToJSON с 'COCO' Имя (Name) - значение, равное true для экспорта данных обнаружения объектов, помеченных с помощью полигонов, в JSON-файл формата данных обнаружения объектов COCO.
Чтобы создать базовый объект истинности для обнаружения объектов, который можно экспортировать в JSON-файл формата данных COCO, выполните следующие действия.
Тип метки Полигон (Polygon) используется для маркировки экземпляров объекта.
Тип метки Пиксель (Pixel) используется для маркировки областей объемного изображения объекта. Имя метки должно быть следующим: polygonLabelName_crowd (Где polygonLabelName - имя метки соответствующего полигона).
Например:
Чтобы аннотировать изображение, содержащее как экземпляры человека, так и области толпы,
Создание метки типа многоугольник с именем 'person' для аннотирования экземпляров лиц.
Создание соответствующей метки пикселя с именем '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 содержит следующие пять полей:
информация
лицензии
категории
изображения/видео
аннотации
Поле Info определяет набор данных и информацию аннотации с помощью аргумента «Info» для пары имя-значение. Значение должно быть скалярной структурой.
Значение по умолчанию:
{
"year": Current year,
"version": "1",
"description": "Created using MATLAB",
"date_created": Current datetime
}
В поле Licenses указывается информация о лицензиях с помощью аргумента License name-value. Значение должно быть массивом структуры.
Значение по умолчанию: []
Поле Categories содержит содержимое таблицы определений меток истинности основания. Имена переменных в таблице используются в качестве полей и изменяются в соответствии с форматом данных COCO. Каждое определение метки определяется дополнительным идентификатором поля.
Каждый объект категории содержит следующие два дополнительных поля, которые заменяют переменную «» Hierarchy «», если она существует:
Атрибуты: содержит определения атрибутов метки.
Поднакладки: 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.
Невозможно экспортировать данные из пользовательского источника данных reader ground truth в формат файла JSON.
В формат данных обнаружения объектов COCO можно экспортировать только значения ROI метки многоугольника и пикселя толпы.
Файл 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