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