Задайте источники сигнала, пометьте определения, и ROI и данные о метке сцены
возвращается синхронизировал данные о метке, собранные из данных об истине мультисигнальной земли, labelData = gatherLabelData(gTruth,signalNames,labelTypes)gTruth. Функция возвращает данные о метке для сигналов, заданных signalNames и типы метки заданы labelTypes.
[ дополнительно возвращает метки времени сигнала, сопоставленные с собранными данными о метке, с помощью аргументов от предыдущего синтаксиса.labelData,timestamps] = gatherLabelData(___)
Используйте timestamps с writeFrames функционируйте, чтобы записать связанные системы координат сигнала из groundTruthMultisignal объекты к диску. Используйте эти системы координат и связанные метки как обучающие данные для моделей глубокого обучения или машинного обучения.
[___] = gatherLabelData(___,'SampleFactor', указывает, что демонстрационный фактор раньше подпроизводил данные о метке.sampleFactor)
Соберите данные о метке для видеосигнала и сигнала последовательности облака точек лидара от groundTruthMultisignal объект. Запишите системы координат сигнала, сопоставленные с теми данными о метке к диску, и визуализируйте системы координат.
Добавьте путь к папке последовательности облака точек к пути поиска файлов MATLAB®. Видео уже находится на пути поиска файлов MATLAB.
pcSeqDir = fullfile(toolboxdir('driving'),'drivingdata', ... 'lidarSequence'); addpath(pcSeqDir);
Загрузите groundTruthMultisignal объект, который содержит данные о метке для видео и последовательности облака точек лидара.
data = load('MultisignalGTruth.mat');
gTruth = data.gTruth;
Задайте сигналы, из которых можно собрать данные о метке.
signalNames = ["video_01_city_c2s_fcw_10s" "lidarSequence"];
Видео содержит прямоугольные метки, тогда как последовательность облака точек лидара содержит метки кубоида. Соберите прямоугольные метки от видео и метки кубоида от последовательности облака точек лидара.
labelTypes = [labelType.Rectangle labelType.Cuboid]; [labelData,timestamps] = gatherLabelData(gTruth,signalNames,labelTypes);
Отобразите первые восемь строк данных о метке из двух сигналов. Оба сигнала содержат данные для Car метка. В видео, Car метка чертится как прямоугольная ограничительная рамка. В последовательности облака точек лидара, Car метка чертится как ограничительная рамка кубоида.
videoLabelSample = head(labelData{1})
lidarLabelSample = head(labelData{2})
videoLabelSample =
table
Car
_________________
{[299 213 42 33]}
lidarLabelSample =
table
Car
____________________________________________________
{[17.7444 6.7386 3.3291 3.6109 3.2214 3.5583 0 0 0]}
Запишите системы координат сигнала, сопоставленные с собранными данными о метке к временным местоположениям папки с одной папкой на сигнал. Используйте метки времени, возвращенные gatherLabelData функция, чтобы указать, который сигнал структурирует, чтобы записать.
outputFolder = fullfile(tempdir,["videoFrames" "lidarFrames"]); fileNames = writeFrames(gTruth,signalNames,outputFolder,timestamps);
Writing 2 frames from the following signals: * video_01_city_c2s_fcw_10s * lidarSequence
Загрузите записанные системы координат видеосигнала при помощи imageDatastore объект. Загрузите связанные прямоугольные данные о метке при помощи boxLabelDatastore объект.
imds = imageDatastore(fileNames{1});
blds = boxLabelDatastore(labelData{1});
Загрузите записанные системы координат сигнала лидара при помощи fileDatastore объект. Загрузите связанные данные о метке кубоида при помощи boxLabelDatastore объект.
fds = fileDatastore(fileNames{2},'ReadFcn',@pcread);
clds = boxLabelDatastore(labelData{2});
Визуализируйте записанные видеокадры при помощи vision.VideoPlayer объект. Визуализируйте записанные системы координат лидара при помощи pcplayer объект.
videoPlayer = vision.VideoPlayer; ptCloud = preview(fds); ptCloudPlayer = pcplayer(ptCloud.XLimits,ptCloud.YLimits,ptCloud.ZLimits); while hasdata(imds) % Read video and lidar frames. I = read(imds); ptCloud = read(fds); % Visualize video and lidar frames. videoPlayer(I); view(ptCloudPlayer,ptCloud); end


Удалите путь к папке последовательности облака точек.
rmpath(pcSeqDir);
gTruth — Данные об истине мультисигнальной землиgroundTruthMultisignal возразите | вектор из groundTruthMultisignal объектыДанные об истине мультисигнальной земли в виде groundTruthMultisignal объект или вектор из groundTruthMultisignal объекты.
Каждый groundTruthMultisignal объект в gTruth должен включать все сигналы, заданные в signalNames входной параметр.
Кроме того, каждый объект должен включать по крайней мере одну отмеченную метку на собранное определение метки. Предположим gTruth groundTruthMultisignal объект, содержащий данные о метке для одного видеосигнала под названием video_front_camera. Объект содержит отмеченные прямоугольные метки видимой области (ROI) для car пометьте определение, но не для truck пометьте определение. Если вы используете этот синтаксис, чтобы собрать метки типа Rectangle от этого объекта, затем gatherLabelData функция возвращает ошибку.
labelData = gatherLabelData(gTruth,"video_front_camera",labelType.Rectangle);signalNames — Имена сигналовИмена сигналов, из которых можно собрать данные о метке в виде вектора символов, строкового скаляра, массива ячеек из символьных векторов или вектора строки. Имена сигнала должны быть допустимыми именами сигнала, сохраненными во входных данных об истине мультисигнальной земли, gTruth.
Получить имена сигнала из groundTruthMultisignal объект, используйте этот синтаксис, где gTruth имя переменной объекта:
gTruth.DataSource.SignalName
Пример: 'video_01_city_c2s_fcw_10s'
Пример: "video_01_city_c2s_fcw_10s"
Пример: {'video_01_city_c2s_fcw_10s','lidarSequence'}
Пример: ["video_01_city_c2s_fcw_10s" "lidarSequence"]
labelTypes — Пометьте типыlabelType скаляр перечисления | labelType вектор перечисления | массив ячеек labelType скаляры перечисления и векторыПометьте типы, из которых можно собрать данные о метке в виде labelType скаляр перечисления, labelType вектор перечисления или массив ячеек labelType скаляры перечисления и векторы. gatherLabelData функция собирает данные о метке для каждого сигнала, заданного входом signalNames и каждый groundTruthMultisignal объект задан входом gTruth. Число элементов в labelTypes должен совпадать с количеством сигналов в signalNames.
Чтобы собрать данные о метке для одного типа метки на сигнал, задайте labelTypes как labelType скаляр перечисления или вектор. Через весь groundTruthMultisignal объекты в gTruth, gatherLabelData функция собирает labelTypes(n) пометьте данные из signalName(n), где n индекс типа метки и соответствующего имени сигнала, данные о метке которого должны быть собраны. Каждая возвращенная таблица в выходе labelData массив ячеек содержит данные только для одного типа метки на сигнал.
В этом примере кода, gatherLabelData функция собирает метки типа Rectangle от видеосигнала под названием video_front_camera. Функция также собирает метки типа Cuboid от сигнала последовательности облака точек лидара, сохраненного в папке под названием lidarData. gTruth введите содержит groundTruthMultisignal объекты, от которых должны быть собраны эти данные.
labelData = gatherLabelData(gTruth, ... ["video_front_camera","lidarData"], ... [labelType.Rectangle,labelType.Cuboid];
Чтобы собрать данные о метке для одной метки вводят от отдельных сигналов, необходимо повторить тип метки для каждого сигнала. В этом примере кода, gatherLabelData функция собирает метки типа Rectangle от video_left_camera и video_right_camera видеосигналы.
labelData = gatherLabelData(gTruth, ... ["video_left_camera","video_right_camera"], ... [labelType.Rectangle,labelType.Rectangle];
Чтобы собрать данные о метке для нескольких типов метки на сигнал, задайте labelTypes как массив ячеек labelType скаляры перечисления и векторы. Через весь groundTruthMultisignal объекты в gTruth, gatherLabelData функция собирает labelTypes{n} пометьте данные из signalName(n), где n индекс типов метки и соответствующего имени сигнала, данные о метке которого должны быть собраны. Функциональные группы данные для этих метка вводят в одну таблицу на сигнал на groundTruthMultisignal объект.
В этом примере кода, gatherLabelData функция собирает метки типа Rectangle и Line от video_front_camera видеосигнал. Функция также собирает метки типа Cuboid от сигнала последовательности облака точек лидара, сохраненного в папке под названием lidarData. gTruth введите содержит groundTruthMultisignal объекты, от которых должны быть собраны эти данные.
labelData = gatherLabelData(gTruth, ... ["video_front_camera", ... "lidarData"], ... {[labelType.Rectangle labelType.Line], ... labelType.Cuboid};
Можно задать один или несколько из этих перечисляемых типов.
labelType.Rectangle — Прямоугольные метки ROI
labelType.Cuboid — ROI кубоида помечает (облака точек)
labelType.ProjectedCuboid — Спроектированные метки ROI кубоида (изображения и видеоданные)
labelType.Line — Метки ROI линии
labelType.PixelLabel — Пиксельные метки ROI
labelType.Polygon — Пиксельные метки ROI
labelType.Scene — Метки сцены
Чтобы собрать данные о метке для сцен, необходимо задать labelTypes как labelType.Scene скаляр перечисления. Вы не можете задать никакие другие типы метки с labelType.Scene.
sampleFactor — Демонстрационный фактор (значение по умолчанию) | положительное целое числоДемонстрационный фактор раньше подпроизводил данные о метке в виде положительного целого числа. Демонстрационный фактор K включает каждый Kth сигнализируют о системе координат. Увеличьте демонстрационный фактор, чтобы исключить избыточные системы координат из сигналов с высокими частотами дискретизации, такими как видео.
Пример: 'SampleFactor',5
labelData Данные МеткиПометьте данные, возвращенные как M- N массив ячеек таблиц, где:
M количество groundTruthMultisignal объекты в gTruth.
Когда labelTypes содержит ROI labelType перечисления, N количество сигналов в signalNames и число элементов в labelTypes. В этом случае, labelData{m,n} содержит таблицу данных о метке для nсигнал th signalNames это находится в mth groundTruthMultisignal объект gTruth. Таблица содержит данные о метке только для типов метки в nположение th labelTypes.
Когда labelTypes содержит только labelType.Scene перечисление, N равно 1. В этом случае, labelData{m} содержит таблицу данных о метке сцены через все сигналы в mth groundTruthMultisignal объект gTruth.
Для данной таблицы данных метки, tbl, таблица имеет размер T- L, где:
T количество меток времени в сигнале, для которого существуют данные о метке.
L количество определений метки, которые имеют типы метки, собранные для того сигнала.
tbl(t,l) содержит данные о метке, собранные для lth помечают в tметка времени th.
Если один из сигналов не имеет никаких данных о метке в метке времени, то соответствующая таблица данных метки не включает строку для той метки времени.
Для каждой ячейки в таблице формат возвращенных данных о метке зависит от типа метки.
| Маркируйте Type | Формат устройства хранения данных для меток в каждой метке времени |
|---|---|
labelType.Rectangle |
|
|
Рисунок показывает, как эти значения определяют положение кубоида.
|
|
Рисунок показывает, как эти значения определяют положение кубоида.
|
labelType.Line |
|
labelType.PixelLabel | Данные о метке для всех пиксельных определений метки хранятся в одном M-by-1 |
labelType.Polygon |
|
labelType.Scene | Логический 1 TRUE) если метка сцены применяется, в противном случае логический 0 ложь) |
Считайте массив ячеек данных о метке собранным при помощи gatherLabelData функция. Функция собирает метки от трех groundTruthMultisignal объекты с именами переменных gTruth1, gTruth2, и gTruth3.
Для видеосигнала под названием video_front_camera, функция собирает метки типа Rectangle и Line.
Для сигнала последовательности облака точек лидара, сохраненного в папке под названием lidarData, функция собирает метки типа Cuboid.
Этот код показывает вызов gatherLabelData функция.
labelData = gatherLabelData([gTruth1 gTruth2 gTruth3], ... ["video_front_camera", ... "lidarData"], ... {[labelType.Rectangle labelType.Line], ... labelType.Cuboid};
labelData выход является 3 2 массивом ячеек таблиц. Каждая строка массива ячеек содержит данные о метке для одного из groundTruthMultisignal объекты. Первый столбец содержит данные о метке для видеосигнала, video_front_camera. Второй столбец содержит данные о метке для сигнала последовательности облака точек, lidarData. Этот рисунок показывает labelData cellArray.

Этот рисунок показывает таблицу данных метки для видеосигнала в третьем groundTruthMultisignal объект. gatherLabelData функционируйте собранные данные для Rectangle пометьте названный car и Line пометьте названный lane. Таблица содержит данные о метке в четырех метках времени в сигнале.

Этот рисунок показывает таблицу данных метки для сигнала лидара в третьем groundTruthMultisignal объект. gatherLabelData функционируйте собранные данные для Cuboid пометьте, также названный car. car метка появляется в обоих типах сигнала, потому что она отмечена как Rectangle пометьте для видеосигналов и Cuboid пометьте для сигналов лидара. Таблица содержит данные о метке в четырех метках времени в сигнале.

timestamps — Метки времени сигналаduration векторыМетки времени сигнала, возвращенные как M- N массив ячеек duration векторы, где:
M количество groundTruthMultisignal объекты в gTruth.
N количество сигналов в signalNames.
labelData{m,n} содержит метки времени для nсигнал th signalNames это находится в mth groundTruthMultisignal объект gTruth.
Если вы собираете данные о метке из нескольких сигналов, метки времени сигнала синхронизируются с метками времени первого сигнала, заданного signalNames.
gatherLabelData функция не собирает данные о метке для подметок или атрибутов. Если метка содержит подметки или атрибуты в labelData выведите, функция возвращает положение родительской метки только.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.