Сбор синхронизированных данных о метках из основная истина
возвращает синхронизированные данные о метках, собранные из мультисигнальных данных о наземной истине, 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. The 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. The 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-by- N массив ячеек таблиц, где:
M количество groundTruthMultisignal объекты в gTruth.
Когда labelTypes содержит информация только для чтения labelType перечисления, N количество сигналов в signalNames и количество элементов в labelTypes. В этом случае labelData{m,n} содержит таблицу данных о метках для nпервый сигнал signalNames то есть в mth groundTruthMultisignal объект gTruth. Таблица содержит данные о метках только для типов меток в n1-я позиция labelTypes.
Когда labelTypes содержит только labelType.Scene перечисление, N равно 1. В этом случае labelData{m} содержит таблицу данных меток сцен по всем сигналам в mth groundTruthMultisignal объект gTruth.
Для заданной таблицы данных о метках tbl, таблица имеет размер T-by- L, где:
T - количество временных меток в сигнале, для которого существуют данные о метке.
L количество определений меток типов, собранных для этого сигнала.
tbl(t,l) содержит данные о метках, собранные для lth метка в 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 и a Line метка с именем lane. Таблица содержит данные о метке в четырех временных метках в сигнале.

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

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