SceneLabelData

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

Описание

The 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 вход. The SceneLabelData объект хранит каждую матрицу в свойстве, которое имеет то же имя что и этот сигнал.

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

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

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

Свойства

расширить все

Данные о метке сцены, заданные как duration матрицы. The 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}

The 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Получите данные метки сцены в заданные временные метки

Примеры

свернуть все

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

Создайте источник данных видео из файла 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 объект.

  • The Car определение метки появляется дважды. Хотя Car определяется как прямоугольник, можно рисовать прямоугольники только для сигналов изображения, таких как видео. The 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}

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

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

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

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]

Создайте объект основная истина из источников сигналов, определений меток и информаций только для чтения и меток сцены. Можно импортировать этот объект в приложение 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 объект, содержащий данные метки информация только для чтения, но без данных метки сцены, задайте SceneLabelData свойство как пустой массив. Чтобы создать этот массив, в MATLAB® введите этот код в командной строке.

    sceneData = vision.labeler.labeldata.SceneLabelData.empty

См. также

Приложения

Объекты

Введенный в R2020a