Исходные данные истинности для меток окупаемости инвестиций
ROILabelData объект хранит основные данные истинности для определений меток интересующей области (ROI) для каждого сигнала в groundTruthMultisignal объект.
При экспорте groundTruthMultisignal объект из сеанса приложения Ground Truth Labeler, ROILabelData свойство экспортируемого объекта хранит метки ROI как ROILabelData объект. Создание ROILabelData программно использовать vision.labeler.labeldata.ROILabelData функция (описана здесь).
создает объект, содержащий данные метки ROI для нескольких сигналов. Созданный объект, roiLabelData = vision.labeler.labeldata.ROILabelData(signalNames,labelData)roiLabelData, содержит свойства с именами сигналов, перечисленными в signalNames. Эти свойства хранят соответствующие данные метки ROI, указанные в labelData.
signalNames - Названия сигналовИмена сигналов, указанные как строковый массив. Укажите имена всех сигналов, присутствующих в groundTruthMultisignal создаваемый объект. Имена сигналов можно получить из существующего groundTruthMultisignal путем доступа к DataSource свойство этого объекта. Используйте эту команду и замените gTruth с именем вашего groundTruthMultisignal переменная объекта.
gTruth.DataSource.SignalName
В экспортированном groundTruthMultisignal объект, ROILabelData объект содержит свойство label data для каждого сигнала, даже если некоторые сигналы не имеют данных ROI label.
Свойства созданного ROILabelData объекты имеют имена, указанные signalNames.
Пример: ["video_01_city_c2s_fcw_10s" "lidarSequence"]
labelData - данные метки ROI для каждого сигналаДанные метки ROI для каждого сигнала, определенные как массив ячеек расписаний. Каждое расписание в матрице ячеек содержит данные для сигнала в соответствующей позиции signalNames вход. ROILabelData объект сохраняет каждое расписание в свойстве, которое имеет то же имя, что и этот сигнал.
Формат расписания для каждого сигнала зависит от данных из groundTruthMultisignal экспортируемый или создаваемый объект.
Каждое расписание содержит один столбец на определение метки, хранящееся в LabelDefinitions имущества groundTruthMultisignal объект. Определения меток, которые не поддерживаются типом сигнала, исключаются. Например, предположим, что вы определяете Line Метка окупаемости инвестиций с именем 'lane'. Расписание для сигнала облака точек лидара не включает lane столбец, поскольку эти сигналы не поддерживают Line Наклейки окупаемости инвестиций. В DataSource имущества groundTruthMultisignal объект, SignalType свойство каждого источника данных содержит список допустимых типов сигналов.
Высота расписания определяется количеством временных меток в сигнале. В DataSource имущества groundTruthMultisignal объект, Timestamp свойство каждого источника данных содержит список временных меток сигнала.
Для каждого определения метки все метки ROI, отмеченные на этой отметке времени, объединяются в одну ячейку в таблице. Рассмотрим данные метки ROI для видеосигнала, сохраненного в groundTruthMultisignal объект, gTruth. На каждой отметке времени, car содержит три метки, truck содержит одну метку и lane содержит две метки.
gTruth.ROILabelData.video_01_city_c2s_fcw_10s
ans =
5×4 timetable
Time car truck lane
_________ ____________ ____________ ____________
0 sec {3×4 double} {1×4 double} {2×1 cell }
0.05 sec {3×4 double} {1×4 double} {2×1 cell }
0.1 sec {3×4 double} {1×4 double} {2×1 cell }
0.15 sec {3×4 double} {1×4 double} {2×1 cell }
0.2 sec {3×4 double} {1×4 double} {2×1 cell }Формат хранения данных метки ROI зависит от типа метки.
| Тип метки | Формат хранения для меток на каждой отметке времени |
|---|---|
labelType.Rectangle |
|
|
На рисунке показано, как эти значения определяют положение кубоида.
|
|
На рисунке показано, как эти значения определяют положение кубоида.
|
labelType.Line |
|
labelType.PixelLabel | Данные меток для всех определений меток пикселей хранятся в одном M-by-1 |
labelType.Polygon |
|
labelType.Custom | Этикетки хранятся точно так, как указано в расписании. При импорте |
Если данные метки ROI включают подметки или атрибуты, то метки на каждой временной метке должны быть указаны как структуры. Структура включает эти поля.
| Поле структуры метки | Описание | ||||||
|---|---|---|---|---|---|---|---|
Position | Позиции родительских меток на данной отметке времени Формат | ||||||
AttributeName1,...,AttributeNameN | Атрибуты родительских меток Каждая определенная субкнига имеет собственное поле, где имя поля соответствует имени атрибута. Значение атрибута является символьным вектором для | ||||||
SublabelName1,...,SublabelNameN | Поднаклейки родительских меток Каждая определенная субкнига имеет собственное поле, где имя поля соответствует имени субкниги. Значение каждого поля подмаркировки представляет собой структуру, содержащую данные для всех помеченных подмаркировок с таким именем на данной отметке времени. В этой таблице описывается формат этой структуры подмаркировки.
|
SignalName1,...,SignalNameN - данные метки ROI для каждого сигнала (как отдельные свойства)Данные метки ROI, указанные как расписания. ROILabelData объект содержит одно свойство на сигнал, где каждое свойство содержит расписание данных метки ROI, соответствующих этому сигналу.
При экспорте ROILabelData объект из сеанса приложения Ground Truth Labeler, имена свойств соответствуют именам сигналов, хранящимся в DataSource свойство экспортируемого groundTruthMultisignal объект.
При создании ROILabelData программно объект, signalNames и labelData входные аргументы определяют имена свойств и значения созданного объекта.
Предположим, что вы хотите создать groundTruthMultisignal объект, содержащий видеосигнал и сигнал последовательности лидарного облака точек. Укажите сигналы в строковом массиве, signalNames.
signalNames = ["video_01_city_c2s_fcw_10s" "lidarSequence"];
Сохраните метки окупаемости инвестиций в видео, videoDataи метки ROI последовательности облаков лидарных точек, lidarData, в массиве ячеек расписаний, labelData. Каждое расписание содержит данные для соответствующего сигнала в signalNames.
labelData = {videoData,lidarData} 1×2 cell array
{204×2 timetable} {34×1 timetable} ROILabelData объект, roiData, сохраняет эти данные в свойстве с соответствующим именем сигнала. Можно указать roiData в ROILabelData свойство groundTruthMultisignal объект.
roiData = vision.labeler.labeldata.ROILabelData(signalNames,labelData)
roiData =
ROILabelData with properties:
video_01_city_c2s_fcw_10s: [204×2 timetable]
lidarSequence: [34×1 timetable]Создайте данные истинности земли для видеосигнала и сигнала последовательности облаков лидара, который фиксирует одну и ту же сцену вождения. Укажите источники сигнала, определения меток и данные ROI и метки сцены.
Создайте источник видеоданных из файла MP4.
sourceName = '01_city_c2s_fcw_10s.mp4';
sourceParams = [];
vidSource = vision.labeler.loading.VideoSource;
vidSource.loadSource(sourceName,sourceParams);
Создайте источник последовательности облаков точек из папки файлов данных облаков точек (PCD).
pcSeqFolder = fullfile(toolboxdir('driving'),'drivingdata','lidarSequence'); addpath(pcSeqFolder) load timestamps.mat rmpath(pcSeqFolder) lidarSourceData = load(fullfile(pcSeqFolder,'timestamps.mat')); sourceName = pcSeqFolder; sourceParams = struct; sourceParams.Timestamps = timestamps; pcseqSource = vision.labeler.loading.PointCloudSequenceSource; pcseqSource.loadSource(sourceName,sourceParams);
Объедините источники сигнала в массив.
dataSource = [vidSource pcseqSource]
dataSource =
1x2 heterogeneous MultiSignalSource (VideoSource, PointCloudSequenceSource) array with properties:
SourceName
SourceParams
SignalName
SignalType
Timestamp
NumSignals
Создание таблицы определений меток для данных истинности основания с помощью labelDefinitionCreatorMultisignal объект.
Car определение метки отображается дважды. Несмотря на то, что Car определяется как прямоугольник, рисовать прямоугольники можно только для сигналов изображения, например видео. labelDefinitionCreatorMultisignal объект создает дополнительную строку для сигналов облака точек lidar. В этих типах сигналов можно рисовать Car метки только в виде кубоидов.
Определения меток не имеют описаний и присвоенных цветов, поэтому Description и LabelColor столбцы пусты.
Определения меток не имеют назначенных групп, поэтому для всех определений меток соответствующая ячейка в Group столбец имеет значение 'None'.
Road - определение пиксельной метки, поэтому таблица включает PixelLabelID столбец.
Ни одно определение метки не имеет суббнаков или атрибутов, поэтому таблица не включает Hierarchy столбец для хранения такой информации.
ldc = labelDefinitionCreatorMultisignal; addLabel(ldc,'Car','Rectangle'); addLabel(ldc,'Truck','ProjectedCuboid'); addLabel(ldc,'Lane','Line'); addLabel(ldc,'Road','PixelLabel'); addLabel(ldc,'Sunny','Scene'); labelDefs = create(ldc)
labelDefs =
6x7 table
Name SignalType LabelType Group Description LabelColor PixelLabelID
_________ __________ _______________ ________ ___________ __________ ____________
{'Car' } Image Rectangle {'None'} {' '} {0x0 char} {0x0 double}
{'Car' } PointCloud Cuboid {'None'} {' '} {0x0 char} {0x0 double}
{'Truck'} Image ProjectedCuboid {'None'} {' '} {0x0 char} {0x0 double}
{'Lane' } Image Line {'None'} {' '} {0x0 char} {0x0 double}
{'Road' } Image PixelLabel {'None'} {' '} {0x0 char} {[ 1]}
{'Sunny'} Time Scene {'None'} {' '} {0x0 char} {0x0 double}
Создайте данные метки окупаемости инвестиций для первого кадра видео.
numVideoFrames = numel(vidSource.Timestamp{1});
carData = cell(numVideoFrames,1);
laneData = cell(numVideoFrames,1);
truckData = cell(numVideoFrames,1);
carData{1} = [304 212 37 33];
laneData{1} = [70 458; 311 261];
truckData{1} = [309,215,33,24,330,211,33,24];
videoData = timetable(vidSource.Timestamp{1},carData,laneData, ...
'VariableNames',{'Car','Lane'});
Создайте данные метки окупаемости инвестиций для первого облака точек в последовательности.
numPCFrames = numel(pcseqSource.Timestamp{1});
carData = cell(numPCFrames, 1);
carData{1} = [27.35 18.32 -0.11 4.25 4.75 3.45 0 0 0];
lidarData = timetable(pcseqSource.Timestamp{1},carData,'VariableNames',{'Car'});
Объедините данные метки ROI для обоих источников.
signalNames = [dataSource.SignalName];
roiData = vision.labeler.labeldata.ROILabelData(signalNames,{videoData,lidarData})
roiData =
ROILabelData with properties:
video_01_city_c2s_fcw_10s: [204x2 timetable]
lidarSequence: [34x1 timetable]
Создайте данные метки сцены за первые 10 секунд рабочей сцены.
sunnyData = seconds([0 10]);
labelNames = ["Sunny"];
sceneData = vision.labeler.labeldata.SceneLabelData(labelNames,{sunnyData})
sceneData =
SceneLabelData with properties:
Sunny: [0 sec 10 sec]
Создайте наземный объект истинности из источников сигнала, определений меток и данных ROI и меток сцены. Этот объект можно импортировать в приложение Ground Truth Labeler для ручной маркировки или для запуска алгоритма автоматизации маркировки. Можно также извлечь данные обучения из этого объекта для моделей глубокого обучения с помощью gatherLabelData функция.
gTruth = groundTruthMultisignal(dataSource,labelDefs,roiData,sceneData)
gTruth =
groundTruthMultisignal with properties:
DataSource: [1x2 vision.labeler.loading.MultiSignalSource]
LabelDefinitions: [6x7 table]
ROILabelData: [1x1 vision.labeler.labeldata.ROILabelData]
SceneLabelData: [1x1 vision.labeler.labeldata.SceneLabelData]
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.