groundTruth

Данные о метке основной истины

Описание

groundTruth объект содержит информацию об источнике данных, определениях метки и отмеченных аннотациях метки для набора меток основной истины. Можно экспортировать или импортировать groundTruth объект от Image Labeler и приложений Video Labeler.

  • Создать обучающие данные для детектора объектов от массивов groundTruth объекты, используйте objectDetectorTrainingData функция.

  • Создать обучающие данные для сети семантической сегментации от массивов groundTruth объекты, используйте pixelLabelTrainingData функция.

Создание

Экспортировать groundTruth объект от приложения для маркировки, на панели инструментов приложения, выбирает Export Labels> To Workspace. Приложение экспортирует объект в рабочую область MATLAB®. Создать groundTruth возразите программно, используйте groundTruth функция (описанный здесь).

Описание

пример

gTruth = groundTruth(dataSource,labelDefs,labelData) возвращает объект, содержащий метки основной истины, которые могут быть импортированы в приложения Video Labeler и Image Labeler.

  • dataSource задает источник достоверных данных и устанавливает DataSource свойство.

  • labelDefs задает метку, подметку и определения атрибута достоверных данных и устанавливает LabelDefinitions свойство.

  • labelData указывает информацию идентификации, положение, и устанавливает метку времени для отмеченных меток и устанавливает LabelData свойство.

Свойства

развернуть все

Источник достоверных данных в виде groundTruthDataSource объект. Объект содержит информацию, которая описывает видео, последовательность изображений или пользовательский источник данных, от которых достоверных данных был помечен.

К изображениям доступа от первоначального источника данных используйте VideoReader или imageDatastore. Можно также использовать пользовательскую функцию чтения. Для получения дополнительной информации смотрите Исходного Читателя Пользовательского изображения Использования для Маркировки.

Это свойство доступно только для чтения.

Пометьте определения в виде таблицы. Чтобы составить эту таблицу, используйте одну из этих опций.

  • В одном из приложений для маркировки создайте определения метки, и затем экспортируйте их как часть groundTruth объект.

  • Используйте labelDefinitionCreator объект сгенерировать таблицу определений метки. Если вы сохранили эту таблицу к MAT-файлу, можно затем загрузить определения метки в сеанс приложения для маркировки путем выбора Load> Label Definitions от панели инструментов приложения.

  • Составьте таблицу определений метки в командной строке MATLAB.

Эта таблица описывает необходимые и дополнительные столбцы таблицы, заданной в LabelDefinitions свойство.

СтолбецОписаниеТребуемый или дополнительный
NameСтроки или векторы символов, задающие имя каждого определения метки.

Необходимый

TypelabelType перечисления, которые задают тип каждого определения метки, такого как Rectangle или Scene.

Необходимый

LabelColor1 3 векторы-строки из триплетов RGB, которые задают цвета определений метки. Значения находятся в области значений [0, 1]. Желтый цвет (триплет RGB [1 1 0]) резервируется для цвета выбранных меток в приложениях для маркировки.

Дополнительный

Когда вы задаете метки в приложении для маркировки, необходимо задать цвет. Поэтому экспортированная таблица определений метки всегда включает этот столбец.

Когда вы создаете определения метки с помощью labelDefinitionCreator объект, не задавая цвета, возвращенная таблица определений метки включает этот столбец, но все значения столбцов пусты.

PixelLabelIDСкаляры, вектор-столбцы или M-by-3 матрицы метки IDs с целочисленным знаком. PixelLabelID указывает, что пиксельные значения метки раньше представляли определение метки. Значения идентификаторов метки Pixel должны быть между 0 и 255.

Дополнительный

Когда вы задаете пиксельные метки в приложении для маркировки или labelDefinitionCreator объект, сгенерированная таблица определений метки включает этот столбец.

При составлении таблицы определений метки в командной строке MATLAB, если вы устанавливаете Type к labelType.PixelLabel для любой метки затем требуется этот столбец.

GroupСтроки или векторы символов, задающие группу, которой принадлежит каждое определение метки.

Дополнительный

Если вы составляете таблицу определений метки в командной строке MATLAB, вы не должны включать Group столбец.

Если вы экспортируете определения метки от приложения для маркировки или создаете их использующий labelDefinitionCreator объект, таблица определений метки включает этот столбец, даже если вы не задавали группы. Приложение присваивает каждое определение метки Group значение 'None'.

DescriptionСтроки или векторы символов, которые описывают каждое определение метки.

Дополнительный

Если вы составляете таблицу определений метки в командной строке MATLAB, вы не должны включать Description столбец.

Если вы экспортируете определения метки от приложения для маркировки или создаете их использующий labelDefinitionCreator объект, таблица определений метки включает этот столбец, даже если вы не задавали описания. Description для этих определения метки пустой символьный вектор.

HierarchyСтруктуры, содержащие подметку и данные об атрибуте для каждого определения метки. Для примера Hierarchy формат, смотрите Начало работы с Image Labeler или Начало работы с Video Labeler.

Дополнительный

В приложениях для маркировки, когда вы задаете подметки или атрибуты, экспортируемый groundTruth объект включает этот столбец.

Например, рассмотрите таблицу с определениями метки под названием Sky, Vegetation, Lanes, StopSign, и Vehicle, и это экспортировалось из приложения Video Labeler.

  • Определения метки включают пиксельные метки, таким образом, таблица включает PixelLabelID столбец.

  • Две из меток содержат атрибуты, таким образом, приложение создало Hierarchy столбец, который применяется через все определения метки.

  • Определения метки не имеют присвоенных групп, таким образом, Group столбцом является 'None' для всех определений метки.

Это свойство доступно только для чтения.

Пометьте данные для каждого ROI и метки сцены в виде a table для коллекций изображений или a timetable для видео или последовательностей изображений. Каждый столбец LabelData содержит метки для одного определения метки и соответствует Name значение для каждой строки в LabelDefinitions. Они LabelData описывает элементы таблицы. Категории меток заданы как labelType перечисления.

В качестве альтернативы для данных о метке ROI, которые сгруппированы типом метки, отдельный столбец пометил ROILabelData, может использоваться и задаваться как структура, содержащая по крайней мере один тип метки, RectangleData, PolygonData, LineData, или ProjCuboidData.

Формат устройства хранения данных для каждого типа метки описан в таблице.

Маркируйте TypeФормат устройства хранения данных для меток в каждой метке времени
labelType.Rectangle

M- 4 числовых матрицы формы [x, y, w, h], где:

  • M количество меток в системе координат.

  • x и y задайте верхний левый угол прямоугольника.

  • w задает ширину прямоугольника, который является его длиной вдоль x - ось.

  • h задает высоту прямоугольника, который является его длиной вдоль y - ось.

labelType.Cuboid

M- 9 числовых матриц со строками формы [xctr, yctr, zctr, xlen, ylen, zlen, xrot, yrot, zrot], где:

  • M количество меток в системе координат.

  • xctr, yctr, и zctr задайте центр кубоида.

  • xlen, ylen, и zlen задайте длину кубоида вдоль x - оси, y - оси, и z - ось, соответственно, прежде чем вращение было применено.

  • xrot, yrot, и zrot задайте углы поворота для кубоида вдоль x - ось, y - ось, и z - ось, соответственно. Эти углы по часовой стрелке положительны при взгляде в прямом направлении их соответствующих осей.

Рисунок показывает, как эти значения определяют положение кубоида.

labelType.ProjectedCuboid

M- 8 векторов из формы [x1, y1, w1, h1, x2, y2, w2, h2], где:

  • M количество меток в системе координат.

  • x1, y1 задает x, координаты y для верхнего левого местоположения передней стороны спроектированного кубоида

  • w1 задает ширину для передней стороны спроектированного кубоида.

  • h1 задает высоту для передней стороны спроектированного кубоида.

  • x2, y2 задает x, координаты y для верхнего левого местоположения задней стороны спроектированного кубоида.

  • w2 задает ширину для задней стороны спроектированного кубоида.

  • h2 задает высоту для задней стороны спроектированного кубоида.

Рисунок показывает, как эти значения определяют положение кубоида.

Labeled projected cuboid

labelType.Line

M- 1 вектор из массивов ячеек, где M количество меток в системе координат. Каждый массив ячеек содержит N- 2 числовых матрицы формы [x1 y1; x2 y2; ... ; xN yN] для N точки в ломаной линии.

labelType.PixelLabel

Данные о метке для всех пиксельных определений метки хранятся в одном M-by-1 PixelLabelData столбец для изображений M или систем координат. Каждый элемент содержит имя файла для пиксельного изображения метки. Пиксельное изображение метки описывает метку или помечает содержавшимся в соответствующем изображении. Метки могут быть описаны как 1-или 3-матриц метки канала. Использовать PixelLabelData с любым из приложений этикетировочной машины необходимо использовать одноканальную матрицу метки, где значения имеют тип uint8. Можно преобразовать матрицу данных о пиксельных метках с 3 каналами в одноканальную матрицу метки программно, чтобы использовать с приложениями этикетировочной машины.

labelType.Polygon

M- 1 вектор из массивов ячеек, где M количество меток. Каждый массив ячеек содержит N- 2 числовых матрицы формы [x1 y1; x2 y2; ... ; xN yN] для N точки в многоугольнике.

labelType.CustomМетки хранятся точно так же, как они заданы в расписании. Если вы импортируете groundTruthMultisignal объект, содержащий пользовательские данные о метке в приложение Ground Truth Labeler, эти данные не импортированы в приложение. Используйте пользовательские данные при сборе данных о метке для обучения и объединении его с данными, помеченными в приложении.

Поддерживаемые объекты GroundTruth

 Приложение Video LabelerПриложение Image Labeler
Источник данныхВидеофайл, папка последовательности изображений, пользовательский читательФайлы изображений
Определения метокRectangleстрока, PixelLabel, или Scene пометьте типыRectangleстрока, PixelLabel, или Scene пометьте типы
Данные МеткиРасписание Rectangleстрока, PixelLabel, или Scene пометьте типыТаблица (никакое расписание) для Rectangleстрока, PixelLabel, или Scene пометьте типы

Добавить достоверные данные, который не является ROI (Rectangleстрока, PixelLabel) или Scene категория меток к groundTruth возразите, предоставьте определению метки labelType это - Custom. Пользовательские данные не отображаются, когда вы загружаете их в приложение для маркировки.

Функции объекта

selectLabelsByGroupВыберите метки основной истины группой метки
selectLabelsByTypeВыберите метки основной истины типом метки
selectLabelsByNameВыберите метки основной истины именем метки
changeFilePathsИзмените пути к файлам в достоверных данных
gatherLabelDataСоберите данные о метке из основной истины

Примеры

свернуть все

Создайте источник данных из набора изображений.

data = load('stopSignsAndCars.mat');
imageFilenames = data.stopSignsAndCars.imageFilename(1:2)
imageFilenames = 2x1 cell
    {'stopSignImages/image001.jpg'}
    {'stopSignImages/image002.jpg'}

imageFilenames = fullfile(toolboxdir('vision'),'visiondata',imageFilenames);
dataSource = groundTruthDataSource(imageFilenames);

Задайте метки, используемые, чтобы задать основную истину. Используйте labelDefinitionCreator составлять таблицу определений метки.

ldc = labelDefinitionCreator();
addLabel(ldc,'stopSign',labelType.Rectangle);
addLabel(ldc,'carRear',labelType.Rectangle);
labelDefs = create(ldc)
labelDefs=2×5 table
        Name          Type       LabelColor     Group      Description
    ____________    _________    __________    ________    ___________

    {'stopSign'}    Rectangle    {0x0 char}    {'None'}       {' '}   
    {'carRear' }    Rectangle    {0x0 char}    {'None'}       {' '}   

Инициализируйте данные о метке для прямоугольных ROI.

stopSignTruth = {[856   318    39    41];[445   523    52    54]};
carRearTruth = {[398   378   315   210];[332   633   691   287]};

Создайте таблицу данных о метке.

labelNames = {'stopSign';'carRear'};
labelData = table(stopSignTruth,carRearTruth,'VariableNames',labelNames)
labelData=2×2 table
        stopSign               carRear      
    _________________    ___________________

    {[856 318 39 41]}    {[398 378 315 210]}
    {[445 523 52 54]}    {[332 633 691 287]}

Создайте объект основной истины.

gTruth = groundTruth(dataSource,labelDefs,labelData)
gTruth = 
  groundTruth with properties:

          DataSource: [1x1 groundTruthDataSource]
    LabelDefinitions: [2x5 table]
           LabelData: [2x2 table]

Создайте groundTruth возразите, чтобы хранить данные, представляющие отмеченные дорожные маршруты.

Создайте источник данных из изображения.

dataSource = groundTruthDataSource({'stopSignTest.jpg'});

Задайте метки, используемые, чтобы задать основную истину. Используйте labelDefinitionCreator составлять таблицу определений метки.

ldc = labelDefinitionCreator();
addLabel(ldc,'Lane',labelType.Line);
labelDefs = create(ldc);

Присвойте два маркера маршрута в изображении.

laneMarkerTruth = {[257 254;311 180] [327 183;338 205;374 250]};

Создайте таблицу данных о метке.

labelNames = {'Lane'};
labelData = table(laneMarkerTruth,'VariableNames',labelNames)
labelData=table
                Lane            
    ____________________________

    {2x2 double}    {3x2 double}

Создайте объект groundTruth.

gTruth = groundTruth(dataSource,labelDefs,labelData)
gTruth = 
  groundTruth with properties:

          DataSource: [1x1 groundTruthDataSource]
    LabelDefinitions: [1x5 table]
           LabelData: [1x1 table]

Создайте groundTruth возразите, чтобы сохранить части представления данных сцены.

Создайте источник данных.

dataSource = groundTruthDataSource({'visionteam.jpg'});

Используйте labelDefinitionCreator составлять таблицу определений метки. Задайте метки, 'Person' и 'Background'. Присвойте их соответствующий тип метки как PixelLabel.

ldc =labelDefinitionCreator();
addLabel(ldc,'Person',labelType.PixelLabel);
addLabel(ldc,'Background',labelType.PixelLabel);
labelDefs = create(ldc)             
labelDefs=2×6 table
         Name            Type       LabelColor    PixelLabelID     Group      Description
    ______________    __________    __________    ____________    ________    ___________

    {'Person'    }    PixelLabel    {0x0 char}       {[1]}        {'None'}       {' '}   
    {'Background'}    PixelLabel    {0x0 char}       {[2]}        {'None'}       {' '}   

Задайте местоположение данных о пиксельных метках для изображения.

dataFile = {'visionteamPixelLabels.png'}    
dataFile = 1x1 cell array
    {'visionteamPixelLabels.png'}

Создайте таблицу данных о метке для данных о пиксельных метках.

labelData = table(dataFile,'VariableNames',{'PixelLabelData'})
labelData=table
           PixelLabelData        
    _____________________________

    {'visionteamPixelLabels.png'}

Создайте groundTruth объект.

gTruth = groundTruth(dataSource,labelDefs,labelData)
gTruth = 
  groundTruth with properties:

          DataSource: [1x1 groundTruthDataSource]
    LabelDefinitions: [2x6 table]
           LabelData: [1x1 table]

Создайте источник данных из видео.

videoName = 'caltech_cordova1.avi';
dataSource = groundTruthDataSource(videoName);

Задайте метки, используемые, чтобы задать основную истину. Используйте labelDefinitionCreator объект составить таблицу определений метки.

ldc = labelDefinitionCreator();
addLabel(ldc,'Cars',labelType.Rectangle);
addLabel(ldc,'LaneMarkers',labelType.Line);
labelDefs = create(ldc)
labelDefs=2×5 table
         Name            Type       LabelColor     Group      Description
    _______________    _________    __________    ________    ___________

    {'Cars'       }    Rectangle    {0x0 char}    {'None'}       {' '}   
    {'LaneMarkers'}    Line         {0x0 char}    {'None'}       {' '}   

Создайте данные о метке для маркеров маршрута и автомобилей.

numRows = numel(dataSource.TimeStamps);
carsTruth = cell(numRows,1);
laneMarkerTruth = cell(numRows,1);

Добавьте две автомобильных метки и два маркера маршрута к первой системе координат.

carsTruth{1} = [182 186 31 22;404 191 53 34];
laneMarkerTruth{1} = {[257 254;311 180] [327 183;338 205;374 250]};

Составьте таблицу данных о метке.

labelNames = {'Cars','LaneMarkers'};
labelData = table(carsTruth,laneMarkerTruth,'VariableNames',labelNames);

Создайте groundTruth объект. Чтобы импортировать этот объект в приложение для маркировки, выберите опцию в меню Open> Import Labels.

gTruth = groundTruth(dataSource,labelDefs,labelData)
gTruth = 
  groundTruth with properties:

          DataSource: [1x1 groundTruthDataSource]
    LabelDefinitions: [2x5 table]
           LabelData: [250x2 timetable]

Советы

  • groundTruth объекты для основанных на видео источников данных используют возможности чтения видео вашей операционной системы. groundTruth созданное использование объекта источника видеоданных остается сопоставимым только для той же платформы, которая использовалась, чтобы создать его. Создать платформенно независимый groundTruth объект, преобразуйте видео в последовательность изображений и включайте связанные метки времени с последовательностью изображений.

Введенный в R2017a