Достоверные данные для меток сцен
The SceneLabelData объект сохраняет достоверные данные для определений меток сцен, определенных в groundTruthMultisignal объект.
При экспорте groundTruthMultisignal объект из Ground Truth Labeler сеанса приложения, SceneLabelData свойство экспортированного объекта сохраняет метки сцены как SceneLabelData объект. Как создать SceneLabelData программно используйте объект vision.labeler.labeldata.SceneLabelData функция (описанная здесь).
создает объект, содержащий данные меток сцены для нескольких сигналов. Созданный объект, sceneLabelData = vision.labeler.labeldata.SceneLabelData(labelNames,labelData)sceneLabelData, содержит свойства с именами меток сцен, перечисленными в labelNames. Эти свойства хранят соответствующие данные о метке сцены, заданные labelData.
labelNames - Имена меток сценИмена меток сцен, заданные как строковые массивы. Задайте имена всех меток сцен, имеющихся в groundTruthMultisignal объект, который вы создаете. Имена меток сцен можно получить из существующего groundTruthMultisignal объект путем доступа к LabelDefinitions свойство этого объекта. Используйте этот код и замените gTruth с именем groundTruthMultisignal переменная объекта.
isSceneLabel = gTruth.LabelDefinitions.LabelType == 'Scene';
gTruth.LabelDefinitions.Name(isSceneLabel)В экспортированном groundTruthMultisignal объект, SceneLabelData объект содержит свойство данных о метках для каждой метки сцены, даже если некоторые метки сцены не имеют данных о метках.
Свойства созданного SceneLabelData объект имеет имена, заданные как labelNames.
Пример: ["sunny" "rainy" "urban" "rural"]
labelData - Данные о метке сцены для каждой меткиduration матрицыДанные о метке сцены для каждой метки, заданные как массив ячеек 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 секунд для всех сигналов объекта. Задайте эту матрицу как часть массива ячеек, содержащего матрицы для дополнительных меток сцены.
SceneLabelName1,...,SceneLabelNameN - Данные меток сцены для каждой метки (как отдельные свойства)duration матрицыДанные о метке сцены, заданные как 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
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.