Сбор синхронизированных данных меток из данных о земле
возвращает синхронизированные данные метки, собранные из многосигнальных данных истинности земли, 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);
Загрузить a 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 - Метки окупаемости инвестиций в прямоугольник
labelType.Cuboid - Метки кубовидной окупаемости инвестиций (облака точек)
labelType.ProjectedCuboid - Проекционные кубовидные метки окупаемости инвестиций (изображения и видеоданные)
labelType.Line - Метки окупаемости инвестиций в линии
labelType.PixelLabel - пиксельные метки окупаемости инвестиций
labelType.Polygon - пиксельные метки окупаемости инвестиций
labelType.Scene - Метки сцен
Для сбора данных меток для сцен необходимо указать labelTypes в качестве labelType.Scene скаляр перечисления. Нельзя указать другие типы меток с помощью labelType.Scene.
sampleFactor - Коэффициент выборки1 (по умолчанию) | положительное целое числоКоэффициент выборки, используемый для выборки данных метки, указанный как положительное целое число. Коэффициент выборки K включает в себя каждое KТретий сигнальный кадр. Увеличьте коэффициент выборки, чтобы удалить избыточные кадры из сигналов с высокой частотой дискретизации, например видео.
Пример: 'SampleFactor',5
labelData - Данные этикеткиДанные метки, возвращенные как Mоколо-N массив ячеек таблиц, где:
M - количество groundTruthMultisignal объекты в gTruth.
Когда labelTypes содержит окупаемость инвестиций labelType перечисления, N - количество сигналов в signalNames и количество элементов в labelTypes. В этом случае labelData{m,n} содержит таблицу данных метки для n-й сигнал signalNames который находится в mth groundTruthMultisignal объект gTruth. Таблица содержит данные метки только для типов меток в n4-я позиция labelTypes.
Когда labelTypes содержит только labelType.Scene перечисление, N равно 1. В этом случае labelData{m} содержит таблицу данных метки сцены для всех сигналов в mth groundTruthMultisignal объект gTruth.
Для данной таблицы данных метки: tbl, таблица имеет размер Tоколо-L, где:
T - количество временных меток в сигнале, для которого существуют данные метки.
L - количество определений меток, которые относятся к типам меток, собранным для этого сигнала.
tbl(t,l) содержит данные метки, собранные для lВ-й этикетке на tвосьмая временная метка.
Если один из сигналов не имеет данных метки во временной метке, то соответствующая таблица данных метки не включает строку для этой временной метки.
Для каждой ячейки таблицы формат возвращаемых данных метки зависит от типа метки.
| Тип метки | Формат хранения для меток на каждой отметке времени |
|---|---|
labelType.Rectangle |
|
|
На рисунке показано, как эти значения определяют положение кубоида.
|
|
На рисунке показано, как эти значения определяют положение кубоида.
|
labelType.Line |
|
labelType.PixelLabel | Данные меток для всех определений меток пикселей хранятся в одном M-by-1 |
labelType.Polygon |
|
labelType.Scene | Логичный 1 (true), если метка сцены применена, в противном случае это логично 0 (false) |
Рассмотрим массив ячеек данных метки, собранных с помощью 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 массив ячеек.

На этом рисунке показана таблица данных метки для видеосигнала в третьем 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-й сигнал signalNames который находится в mth groundTruthMultisignal объект gTruth.
При сборе данных метки из нескольких сигналов метки времени сигнала синхронизируются с метками времени первого сигнала, указанного в signalNames.
gatherLabelData функция не собирает данные меток для суббнаков или атрибутов. Если метка содержит суббнаки или атрибуты, в labelData вывод, функция возвращает только позицию родительской метки.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.