exponenta event banner

groundTruth

Данные метки истинности земли

Описание

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

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

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

Создание

Экспорт groundTruth на панели инструментов приложения выберите Экспорт меток > В рабочую область. Приложение экспортирует объект в рабочую область 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.

Необходимый

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

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

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

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

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

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

При определении пиксельных меток в приложении для маркировки или labelDefinitionCreator , сформированная таблица определений меток содержит этот столбец.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Тип меткиФормат хранения для меток на каждой отметке времени
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 для любого приложения labeler необходимо использовать одноканальную матрицу меток, где значения имеют тип 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, Line, PixelLabel, или Scene типы метокRectangle, Line, PixelLabel, или Scene типы меток
Данные меткиРасписание работы Rectangle, Line, PixelLabel, или Scene типы метокТаблица (без расписания) для Rectangle, Line, PixelLabel, или Scene типы меток

Добавление данных истинности основания, не являющихся ROI (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'}       {' '}   

Инициализация данных метки для rectangle 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 объект. Чтобы импортировать этот объект в приложение для создания меток, выберите параметр в меню Открыть > Импортировать метки.

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

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

Совет

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

Представлен в R2017a