groundTruth

Описание

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

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

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

Создание

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

Описание

пример

gTruth = groundTruth(dataSource,labelDefs,labelData) возвращает объект, содержащий метки основной истины, которые можно импортировать в приложения Image Labeler и Video 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-на-3 матрицы целочисленных идентификаторов меток. PixelLabelID задает значения меток пикселей, используемые для представления определения меток. Значения идентификатора метки пикселя должны быть от 0 до 255.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Тип меткиФормат памяти для меток в каждой временной метке
labelType.Rectangle

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

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

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

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

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

labelType.Cuboid

M-by-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-by-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-by-1 вектор массивов ячеек, где M - количество меток в системе координат. Каждый массив ячеек содержит N-by-2 числовая матрица вида [x1 y1; x2 y2; ... ; xN yN] для N точки в полилинии.

labelType.PixelLabel

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

labelType.Polygon

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

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

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

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

Чтобы добавить достоверные данные, которые не являются информация только для чтения (Rectangle, Line, 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 объекты для источников данных на основе видео полагаются на возможности чтения видео операционной системы. A groundTruth объект, созданный с использованием источника данных видео, остается последовательным только для той же платформы, которая использовалась для его создания. Создание независимой от платформы groundTruth преобразует видео в последовательность изображений и включает в себя связанные временные метки с последовательностью изображений.

Введенный в R2017a