Достоверные данные для меток информация только для чтения
The ROILabelData
объект сохраняет достоверные данные для видимой области (ROI) описаний меток для каждого сигнала в groundTruthMultisignal
объект.
При экспорте groundTruthMultisignal
объект из Ground Truth Labeler сеанса приложения, ROILabelData
свойство экспортированного объекта сохраняет метки информации только для чтения как ROILabelData
объект. Как создать ROILabelData
программно используйте объект vision.labeler.labeldata.ROILabelData
функция (описанная здесь).
создает объект, содержащий данные информации только для чтения для нескольких сигналов. Созданный объект, roiLabelData
= vision.labeler.labeldata.ROILabelData(signalNames
,labelData
)roiLabelData
, содержит свойства с именами сигналов, перечисленными в signalNames
. Эти свойства хранят соответствующие данные информации только для чтения, заданные labelData
.
signalNames
- Имена сигналовИмена сигналов, заданные как строковые массивы. Задайте имена всех сигналов, присутствующих в groundTruthMultisignal
объект, который вы создаете. Вы можете получить имена сигналов от существующего groundTruthMultisignal
объект путем доступа к DataSource
свойство этого объекта. Используйте эту команду и замените gTruth
с именем вашего groundTruthMultisignal
переменная объекта.
gTruth.DataSource.SignalName
В экспортированном groundTruthMultisignal
объект, ROILabelData
объект содержит свойство данных метки для каждого сигнала, даже если некоторые сигналы не имеют данных метки информация только для чтения.
Свойства созданного ROILabelData
объект имеет имена, заданные как signalNames
.
Пример: ["video_01_city_c2s_fcw_10s" "lidarSequence"]
labelData
- данные информации только для чтения для каждого сигналаИнформации только для чтения для каждого сигнала, заданные как массив ячеек из расписаний. Каждое расписание в массиве ячеек содержит данные для сигнала в соответствующей позиции signalNames
вход. The ROILabelData
объект сохраняет каждое расписание в свойстве, которое имеет то же имя что и этот сигнал.
Формат расписания для каждого сигнала зависит от данных от groundTruthMultisignal
объект, который вы экспортировали или создаете.
Каждое расписание содержит по одному столбцу на определение метки, хранящееся в LabelDefinitions
свойство groundTruthMultisignal
объект. Определения меток, которые не поддерживает тип сигнала, исключены. Например, предположим, что вы задаете Line
Информация только для чтения с именем 'lane'
. Расписание для сигнала облака точек лидара не включает в себя lane
столбец, поскольку эти сигналы не поддерживают Line
Информации только для чтения. В DataSource
свойство groundTruthMultisignal
объект, SignalType
свойство каждого источника данных приводит список допустимых типов сигналов.
Высота расписания определяется количеством временных меток в сигнале. В DataSource
свойство groundTruthMultisignal
объект, Timestamp
свойство каждого источника данных приводит временные метки сигнала.
Для каждого определения метки все метки информация только для чтения, отмеченные в этих временных метках, объединяются в одну камеру в таблице. Рассмотрите данные информации только для чтения для видеосигнала, сохраненного в 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 }
Формат хранения данных метки информация только для чтения зависит от типа метки.
Тип метки | Формат памяти для меток в каждой временной метке |
---|---|
labelType.Rectangle |
|
|
Рисунок показывает, как эти значения определяют положение кубоида. |
|
Рисунок показывает, как эти значения определяют положение кубоида. |
labelType.Line |
|
labelType.PixelLabel | Данные о метке для всех определений пиксельных меток хранятся в одной M -by-1 |
labelType.Polygon |
|
labelType.Custom | Метки хранятся точно так же, как они заданы в расписании. Если вы импортируете |
Если данные метки информация только для чтения включают подметки или атрибуты, метки в каждой временной метке должны быть заданы как структуры. Структура включает эти поля.
Поле структуры метки | Описание | ||||||
---|---|---|---|---|---|---|---|
Position | Положения родительских меток в заданной временной метке Формат | ||||||
AttributeName1,...,AttributeNameN | Атрибуты родительских меток Каждая заданная подметка имеет свое поле, где имя поля соответствует наименованию атрибута. Значение атрибута является вектором символов для | ||||||
SublabelName1,...,SublabelNameN | Подметки родительских меток Каждая заданная подметка имеет свое поле, где имя поля соответствует наименованию подметки. Значение каждого поля подметки является структурой, содержащей данные для всех отмеченных подметок с таким именем в заданной временной метке. Эта таблица описывает формат этой структуры подметки.
|
SignalName1,...,SignalNameN
- данные информации только для чтения для каждого сигнала (как отдельные свойства)Информации только для чтения, заданные как расписания. The ROILabelData
объект содержит одно свойство на сигнал, где каждое свойство содержит расписание данных информации только для чтения, соответствующих этому сигналу.
При экспорте ROILabelData
объект из Ground Truth Labeler сеанса приложения, имена свойства соответствуют именам сигналов, хранящимся в DataSource
свойство экспортированного groundTruthMultisignal
объект.
При создании ROILabelData
объект программно, signalNames
и labelData
Входные параметры задайте имена свойства и значения созданного объекта.
Предположим, вы хотите создать groundTruthMultisignal
объект, содержащий видеосигнал и сигнал последовательности облака лидарных точек. Задайте сигналы в строковые массивы, signalNames
.
signalNames = ["video_01_city_c2s_fcw_10s" "lidarSequence"];
Храните метки информация только для чтения видео, videoData
, и лидарную последовательность облака точек информации только для чтения, lidarData
, в массиве ячеек из расписаний, labelData
. Каждое расписание содержит данные для соответствующего сигнала в signalNames
.
labelData = {videoData,lidarData}
1×2 cell array {204×2 timetable} {34×1 timetable}
The 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]
Создайте достоверные данные для видеосигнала и лидара сигнала последовательности облака точек, который захватывает ту же ведущую сцену. Укажите источники сигналов, определения меток, а также информация только для чтения и данные меток сцены.
Создайте источник данных видео из файла 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
объект.
The Car
определение метки появляется дважды. Хотя Car
определяется как прямоугольник, можно рисовать прямоугольники только для сигналов изображения, таких как видео. The labelDefinitionCreatorMultisignal
создает дополнительную строку для лидарных сигналов облака точек. В этих типах сигналов можно рисовать 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'});
Объедините данные метки информация только для чтения для обоих источников.
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]
Создайте объект основная истина из источников сигналов, определений меток и информаций только для чтения и меток сцены. Можно импортировать этот объект в приложение 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.