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 объект, сгенерированная таблица определений метки включает этот столбец.

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

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

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

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

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

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

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

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

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

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

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

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

Например, рассмотрите таблицу с определениями метки под названием cars, sky, vegetation, road, signs, и lanes это экспортировалось из приложения Video Labeler.

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

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

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

Следующий код ниже представляет таблицу с двумя категориями меток:

defs = table({'Cars';'Lanes'}, ...
	[labelType.Rectangle;labelType.Line], ...
	'VariableNames',{'Name','Type'})

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

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

Маркируйте Definition TypeМаркируйте Values
labelType.RectangleМетки в каждой строке хранятся как M-by-4 матрицы [x, y, width, height] местоположения ограничительной рамки. Если метки содержат подметки, атрибуты или обоих, то метки хранятся как структуры. Эти структуры содержат местоположения ограничительной рамки и подметку и информационные признаки.
labelType.LineМетки в каждой строке хранятся как M-by-1 массивы ячеек. Каждый элемент массива ячеек содержит [x, y], местоположения для точек раньше отмечали ломаную линию. Если метки содержат подметки, атрибуты или обоих, то метки хранятся как структуры. Эти структуры содержат местоположения линии и подметку и информационные признаки.
labelType.PixelLabelДанные о метке для всех категорий меток представлены одной матрицей метки. Матрица должна храниться на диске как uint8 изображение. Имя файла образа должно быть задано как вектор символов в LabelData таблица. Матрица метки должна содержать 1 или 3 канала. Для матрицы с 3 каналами пиксельные значения RGB представляют метку IDs.
labelType.SceneМетки в каждой строке хранятся как логические значения, представляющие присутствие или отсутствие метки сцены для изображения.
labelType.CustomМетки в каждой строке хранятся в способе, которым им предоставляют в таблице. Эти метки не импортируются в приложение для маркировки.

Поддерживаемые объекты 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Измените пути к файлам в достоверных данных

Примеры

свернуть все

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

data = load('stopSignsAndCars.mat');
imageFilenames = data.stopSignsAndCars.imageFilename(1:2)
imageFilenames = 2×1 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    {0×0 char}    {'None'}       {' '}   
    {'carRear' }    Rectangle    {0×0 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   
    ____________    ____________

    {1×4 double}    {1×4 double}
    {1×4 double}    {1×4 double}

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

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

          DataSource: [1×1 groundTruthDataSource]
    LabelDefinitions: [2×5 table]
           LabelData: [2×2 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    {0×0 char}       {[1]}        {'None'}       {' '}   
    {'Background'}    PixelLabel    {0×0 char}       {[2]}        {'None'}       {' '}   

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

dataFile = {'visionteamPixelLabels.png'}    
dataFile = 1×1 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: [1×1 groundTruthDataSource]
    LabelDefinitions: [2×6 table]
           LabelData: [1×1 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    {0×0 char}    {'None'}       {' '}   
    {'LaneMarkers'}    Line         {0×0 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: [1×1 groundTruthDataSource]
    LabelDefinitions: [2×5 table]
           LabelData: [250×2 timetable]

Советы

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

Введенный в R2017a