SceneLabelData

Достоверные данные для меток сцены

Описание

SceneLabelData достоверные данные объектно-ориентированной памяти для определений меток сцены заданы в groundTruthMultisignal объект.

Создание

Когда вы экспортируете groundTruthMultisignal объект от сеанса приложения Ground Truth Labeler, SceneLabelData свойство экспортируемого объекта хранит метки сцены как SceneLabelData объект. Создать SceneLabelData возразите программно, используйте vision.labeler.labeldata.SceneLabelData функция (описанный здесь).

Описание

пример

sceneLabelData = vision.labeler.labeldata.SceneLabelData(labelNames,labelData) создает объект, содержащий данные о метке сцены для нескольких сигналов. Созданный объект, sceneLabelData, содержит свойства с именами меток сцены, перечисленными в labelNames. Эти свойства хранят соответствующие данные о метке сцены, заданные labelData.

Входные параметры

развернуть все

Имена меток сцены в виде массива строк. Задайте имена всех меток сцены, существующих в groundTruthMultisignal объект вы создаете. Можно получить имена меток сцены от существующего groundTruthMultisignal объект путем доступа к LabelDefinitions свойство того объекта. Используйте этот код и замените gTruth с именем groundTruthMultisignal переменная объекта.

isSceneLabel = gTruth.LabelDefinitions.LabelType == 'Scene';
gTruth.LabelDefinitions.Name(isSceneLabel)

В экспортируемом groundTruthMultisignal объект, SceneLabelData объект содержит свойство данных метки для каждой метки сцены, даже если некоторые метки сцены не имеют данных о метке.

Свойства созданного SceneLabelData объекту задал имена labelNames.

Пример: ["sunny" "rainy" "urban" "rural"]

Данные о метке Scene для каждой метки в виде массива ячеек duration матрицы. Каждая матрица в массиве ячеек содержит данные для метки сцены в соответствующем положении labelNames входной параметр. SceneLabelData объектно-ориентированная память каждая матрица в свойстве, которое имеет то же имя как тот сигнал.

Каждая матрица метки сцены имеет размер N-by-2. Каждая строка в этой матрице соответствует области значений времени, для которой была применена та метка сцены. N является количеством областей значений времени. Строки в матрице имеют форму [rangeStart, rangeEnd], где rangeStart и rangeEnd задайте начало и конец области значений времени для прикладной метки сцены.

Элементы строки имеют тип duration и должен быть в области значений минимума и максимуме всех меток времени в groundTruthMultisignal объект. Если метка сцены не применяется, то задайте пустую матрицу.

Пример: seconds([0 5; 10 20]) задает duration матрица, соответствующая одной сцене, помечает в groundTruthMultisignal объект. Величина в секундах. Метка сцены была применена от 0 до 5 секунд и снова с 10 до 20 секунд через все сигналы в объекте. Задайте эту матрицу как часть массива ячеек, содержащего матрицы для дополнительных меток сцены.

Свойства

развернуть все

Данные о метке Scene в виде duration матрицы. SceneLabelData объект содержит одно свойство на определение меток сцены, где каждое свойство содержит a duration матрица сцены помечает данные, соответствующие той метке сцены.

При экспорте SceneLabelData объект от сеанса приложения Ground Truth Labeler, имена свойства соответствуют именам меток сцены, сохраненным в LabelDefinitions свойство экспортируемого groundTruthMultisignal объект.

При создании SceneLabelData возразите программно, labelNames и labelData входные параметры задают имена свойства и значения созданного объекта.

Предположим, что вы хотите создать groundTruthMultisignal объект, содержащий метки сцены, которые описывают, является ли сцена солнечной, дождливой, городской, или сельской. Задайте метки сцены в массиве строк, labelNames.

labelNames = ["sunny" "rainy" "urban" "rural"];

Храните данные о метке для каждой метки сцены в массиве ячеек матриц, labelData. Каждая матрица содержит данные для соответствующей метки сцены в labelNames.

labelData = {sunnyData,rainyData,urbanData,ruralData}
  1×4 cell array

    {1×2 duration}    {2×2 duration}    {0×0 duration}    {4×2 duration}

SceneLabelData объект, sceneData, хранит эти данные в свойстве с соответствующим именем сигнала. Можно задать sceneData в SceneLabelData свойство groundTruthMultisignal объект.

sceneData = vision.labeler.labeldata.SceneLabelData(labelNames,labelData)
sceneData = 

  SceneLabelData with properties:

    rainy: [2×2 duration]
    sunny: [0 sec    10.15 sec]
    rural: [4×2 duration]
    urban: [0×0 duration]

Функции объекта

labelDefinitionsAtTimeПолучите имена определения меток сцены в заданной метке времени
labelDataAtTimeПолучите данные о метке сцены в заданных метках времени

Примеры

свернуть все

Создайте эталонные данные для видеосигнала и последовательности облака точек сигнала лидара, который получает ту же ведущую сцену. Задайте источники сигнала, пометьте определения, и ROI и данные о метке сцены.

Создайте источник видеоданных из файла MP4.

sourceName = '01_city_c2s_fcw_10s.mp4';
sourceParams = [];
vidSource = vision.labeler.loading.VideoSource;
vidSource.loadSource(sourceName,sourceParams);

Создайте источник последовательности облака точек из папки файлов данных об облаке точек (PCD).

pcSeqFolder = fullfile(toolboxdir('driving'),'drivingdata','lidarSequence');
addpath(pcSeqFolder)
load timestamps.mat
rmpath(pcSeqFolder)

lidarSourceData = load(fullfile(pcSeqFolder,'timestamps.mat'));

sourceName = pcSeqFolder;
sourceParams = struct;
sourceParams.Timestamps = timestamps;

pcseqSource = vision.labeler.loading.PointCloudSequenceSource;
pcseqSource.loadSource(sourceName,sourceParams);

Объедините источники сигнала в массив.

dataSource = [vidSource pcseqSource]
dataSource = 

  1x2 heterogeneous MultiSignalSource (VideoSource, PointCloudSequenceSource) array with properties:

    SourceName
    SourceParams
    SignalName
    SignalType
    Timestamp
    NumSignals

Составьте таблицу определений метки для достоверных данных при помощи labelDefinitionCreatorMultisignal объект.

  • Car определение метки появляется дважды. Даже при том, что Car задан как прямоугольник, можно чертить прямоугольники только для сигналов изображений, таких как видео. labelDefinitionCreatorMultisignal объект создает дополнительную строку для сигналов облака точек лидара. В этих типах сигнала можно чертить Car метки как кубоиды только.

  • Определения метки не имеют никаких описаний и никаких присвоенных цветов, таким образом, Description и LabelColor столбцы пусты.

  • Определения метки не имеют никаких присвоенных групп, таким образом, для всех определений метки, соответствующей ячейки в Group столбец установлен в 'None'.

  • Road пиксельное определение метки, таким образом, таблица включает PixelLabelID столбец.

  • Никакие определения метки не имеют подметки или атрибуты, таким образом, таблица не включает Hierarchy столбец для того, чтобы хранить такую информацию.

ldc = labelDefinitionCreatorMultisignal;
addLabel(ldc,'Car','Rectangle');
addLabel(ldc,'Truck','ProjectedCuboid');
addLabel(ldc,'Lane','Line');
addLabel(ldc,'Road','PixelLabel');
addLabel(ldc,'Sunny','Scene');
labelDefs = create(ldc)
labelDefs =

  6x7 table

      Name       SignalType       LabelType        Group      Description    LabelColor    PixelLabelID
    _________    __________    _______________    ________    ___________    __________    ____________

    {'Car'  }    Image         Rectangle          {'None'}       {' '}       {0x0 char}    {0x0 double}
    {'Car'  }    PointCloud    Cuboid             {'None'}       {' '}       {0x0 char}    {0x0 double}
    {'Truck'}    Image         ProjectedCuboid    {'None'}       {' '}       {0x0 char}    {0x0 double}
    {'Lane' }    Image         Line               {'None'}       {' '}       {0x0 char}    {0x0 double}
    {'Road' }    Image         PixelLabel         {'None'}       {' '}       {0x0 char}    {[       1]}
    {'Sunny'}    Time          Scene              {'None'}       {' '}       {0x0 char}    {0x0 double}

Создайте данные о метке ROI для первой системы координат видео.

numVideoFrames = numel(vidSource.Timestamp{1});
carData = cell(numVideoFrames,1);
laneData = cell(numVideoFrames,1);
truckData = cell(numVideoFrames,1);
carData{1} = [304 212 37 33];
laneData{1} = [70 458; 311 261];
truckData{1} = [309,215,33,24,330,211,33,24];
videoData = timetable(vidSource.Timestamp{1},carData,laneData, ...
                      'VariableNames',{'Car','Lane'});

Создайте данные о метке ROI для первого облака точек в последовательности.

numPCFrames = numel(pcseqSource.Timestamp{1});
carData = cell(numPCFrames, 1);
carData{1} = [27.35 18.32 -0.11 4.25 4.75 3.45 0 0 0];
lidarData = timetable(pcseqSource.Timestamp{1},carData,'VariableNames',{'Car'});

Объедините данные о метке ROI для обоих источников.

signalNames = [dataSource.SignalName];
roiData = vision.labeler.labeldata.ROILabelData(signalNames,{videoData,lidarData})
roiData = 

  ROILabelData with properties:

    video_01_city_c2s_fcw_10s: [204x2 timetable]
                lidarSequence: [34x1 timetable]

Создайте данные о метке сцены в течение первых 10 секунд ведущей сцены.

sunnyData = seconds([0 10]);
labelNames = ["Sunny"];
sceneData = vision.labeler.labeldata.SceneLabelData(labelNames,{sunnyData})
sceneData = 

  SceneLabelData with properties:

    Sunny: [0 sec    10 sec]

Создайте объект основной истины из источников сигнала, пометьте определения, и ROI и данные о метке сцены. Можно импортировать этот объект в приложение Ground Truth Labeler для ручной маркировки или запускать алгоритм автоматизации маркировки на нем. Можно также извлечь обучающие данные из этого объекта для моделей глубокого обучения при помощи gatherLabelData функция.

gTruth = groundTruthMultisignal(dataSource,labelDefs,roiData,sceneData)
gTruth = 

  groundTruthMultisignal with properties:

          DataSource: [1x2 vision.labeler.loading.MultiSignalSource]
    LabelDefinitions: [6x7 table]
        ROILabelData: [1x1 vision.labeler.labeldata.ROILabelData]
      SceneLabelData: [1x1 vision.labeler.labeldata.SceneLabelData]

Советы

  • Создать groundTruthMultisignal объект, содержащий данные о метке ROI, но никакие данные о метке сцены, задайте SceneLabelData свойство как пустой массив. Создать этот массив, в MATLAB® командная строка, введите этот код.

    sceneData = vision.labeler.labeldata.SceneLabelData.empty

Смотрите также

Приложения

Объекты

Введенный в R2020a