exponenta event banner

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

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

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

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

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

Свойства

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

Данные метки сцены, указанные как duration матрицы. SceneLabelData объект содержит одно свойство на определение метки сцены, где каждое свойство содержит 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 объект создает дополнительную строку для сигналов облака точек lidar. В этих типах сигналов можно рисовать 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}

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

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'});

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

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