Задайте источники сигнала, пометьте определения, и 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
включает каждый K
th сигнализируют о системе координат. Увеличьте демонстрационный фактор, чтобы исключить избыточные системы координат из сигналов с высокими частотами дискретизации, такими как видео.
Пример: 'SampleFactor',5
labelData
Данные МеткиПометьте данные, возвращенные как M
- N
массив ячеек таблиц, где:
M
количество groundTruthMultisignal
объекты в gTruth
.
Когда labelTypes
содержит ROI labelType
перечисления, N
количество сигналов в signalNames
и число элементов в labelTypes
. В этом случае, labelData{m,n}
содержит таблицу данных о метке для n
сигнал th signalNames
это находится в m
th groundTruthMultisignal
объект gTruth
. Таблица содержит данные о метке только для типов метки в n
положение th labelTypes
.
Когда labelTypes
содержит только labelType.Scene
перечисление, N
равно 1
. В этом случае, labelData{m}
содержит таблицу данных о метке сцены через все сигналы в m
th groundTruthMultisignal
объект gTruth
.
Для данной таблицы данных метки, tbl
, таблица имеет размер T
- L
, где:
T
количество меток времени в сигнале, для которого существуют данные о метке.
L
количество определений метки, которые имеют типы метки, собранные для того сигнала.
tbl(t,l)
содержит данные о метке, собранные для l
th помечают в 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
это находится в m
th groundTruthMultisignal
объект gTruth
.
Если вы собираете данные о метке из нескольких сигналов, метки времени сигнала синхронизируются с метками времени первого сигнала, заданного signalNames
.
gatherLabelData
функция не собирает данные о метке для подметок или атрибутов. Если метка содержит подметки или атрибуты в labelData
выведите, функция возвращает положение родительской метки только.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.