Приложение Video Labeler предоставляет простой способ помечать метки прямоугольной области интереса (ROI), полилинии ROI, пиксельные ROI метки и метки сцены в последовательности видео или изображения.
Помеченные данные можно использовать для проверки или обучения алгоритмов, таких как классификаторы изображений, детекторы объектов и семантические сети и сети сегментации экземпляров. Рассмотрите приложение при выборе инструмента рисования меток для создания меток окупаемости инвестиций. Дополнительные сведения о выборе правильного типа метки и инструмента рисования для приложения см. в разделах Метки окупаемости инвестиций, Поднаклейки и Атрибуты.
В этом примере показано, как начать использовать приложение:
Метка кадра изображения из видео вручную.
Автоматическая маркировка кадров изображения с помощью алгоритма автоматизации.
Экспортируйте помеченные данные истинности грунта.
Определения окупаемости инвестиций и меток сцен
Метка ROI соответствует либо прямоугольной, полилинии, пикселю, либо многоугольнику, представляющему интерес. Эти метки содержат два компонента: имя метки, например «автомобили», и создаваемый регион.
Метка Сцена описывает характер сцены, например «солнечный». Эту метку можно связать с рамкой.
Откройте приложение и загрузите видео. Видео должно быть в формате файла, который читается VideoReader.
videoLabeler('visiontraffic.avi')Изучите видео. Нажмите кнопку «Воспроизведение
», чтобы воспроизвести видео целиком, или используйте ползунок
для перемещения между кадрами.
Чтобы загрузить последовательность изображений с соответствующими метками времени, выберите Импорт > Последовательность изображений. Приложение поддерживает все форматы файлов изображений, поддерживаемые imread. Для чтения дополнительных форматов файлов можно создать imageDatastore и используйте ReadFcn собственность.
Загрузка пользовательского источника данных, который не может быть прочитан VideoReader или imreadсм. раздел Использование программы чтения пользовательских источников изображений для создания меток.
Определите метки, которые требуется нарисовать. В этом примере метки определяются непосредственно в приложении. Чтобы определить метки из командной строки MATLAB ®, используйте labelDefinitionCreator.
Можно пометить все видео или начать с части видео. В этом примере вы помечаете пятисекундный интервал времени в загруженном видео. В текстовых полях под видео введите следующие значения времени в секундах:
В поле «Текущее время» введите 5 и нажмите Enter.
В поле «Время начала» введите 5 так, что ползунок находится в начале временного интервала.
В поле «Время окончания» введите 10.
![]()
При необходимости для корректировки интервала времени щелкните и перетащите красные флажки интервала.
![]()
Теперь все приложение настроено на этот конкретный интервал времени. Видео воспроизводится только в пределах этого интервала, а алгоритмы маркировки и автоматизации применяются только к этому интервалу. Интервал можно изменить в любое время, переместив флаги.
Чтобы развернуть интервал времени для заполнения всего раздела воспроизведения, нажмите кнопку «Увеличить интервал времени».
Метка ROI - это метка, которая соответствует области, представляющей интерес (ROI) в изображении. Можно определить эти типы меток ROI.
Rectangle - Рисование 2-D прямоугольных меток ограничивающих рамок вокруг объектов на изображении, таких как транспортные средства, лодки, здания.
Projected cuboid - Рисование меток 3-D ограничивающих рамки вокруг объектов на изображении, таких как транспортные средства, лодки, здания.
Line - вычерчивание линейных ROI для меток линий, таких как границы полос движения.
Pixel label - Рисование пикселов для маркировки различных классов, например дорог или неба, для семантической сегментации. Дополнительные сведения о маркировке пикселей см. в разделе Пиксели меток для семантической сегментации.
Polygon - Рисование меток полигонов вокруг объектов. Можно маркировать отдельные экземпляры одного класса. Дополнительные сведения о рисовании меток окупаемости инвестиций для полигонов и семантических сетей сегментации см. в разделе Объекты-метки с использованием полигонов.
Дополнительные сведения об этих определениях меток окупаемости инвестиций см. в разделах Метки окупаемости инвестиций, Субкниги и Атрибуты.
В этом примере определяется vehicle группа для маркировки типов транспортных средств, а затем создать два Rectangle наклейки окупаемости инвестиций, Car и Truck. После создания меток можно использовать раскрывающееся меню Показать метки ROI (Show ROI Labels), чтобы выбрать пункты При наведении (On Hover), Всегда (Always) или Никогда (Never), чтобы управлять отображением имен меток ROI во время создания меток. По умолчанию имена отображаются при наведении курсора на ROI.
На панели «Метки окупаемости инвестиций» слева нажмите «Метка».
Создать Rectangle метка с именем Car.
При необходимости измените цвет метки, щелкнув цвет предварительного просмотра.

От Group раскрывающееся меню, выберите New Group и назовите группу Vehicle
Нажмите кнопку ОК.
Имя группы транспортных средств отображается на панели «ROI Labels» с меткой «Car created». Можно переместить метку из списка в другую позицию или группу в списке, щелкнув левой кнопкой мыши и перетащив метку вверх или вниз.
Чтобы добавить вторую метку, щелкните Метка (Label). Присвойте метку Грузовик (Truck) и убедитесь, что выбрана группа Автомобиль (Vehicle). Нажмите кнопку ОК.
Используйте мышь, чтобы нарисовать прямоугольные ROI автомобиля вокруг двух транспортных средств.

Подмаркировка - это тип метки ROI, соответствующий родительской метке ROI. Каждая подмаркировка должна принадлежать определенной метке, определенной на панели «Метки окупаемости инвестиций», или быть дочерней. Например, в сцене вождения этикетка транспортного средства может иметь подмаркировку для фар, номерных знаков или колес. Дополнительные сведения о суббаллах см. в разделах Метки окупаемости инвестиций, Суббалли и Атрибуты.
Определите подмаркировку для фар.
На панели «ROI Labels» слева щелкните на метке автомобиля.
Щелкните Подмаркировка (Sublabel).
Создать Rectangle подмаркировка с именем headlight и опционально написать описание. Нажмите кнопку ОК.
На панели «ROI Labels» появится подмаркировка фары. Подмаркировка вложена в выбранную метку ROI «Автомобиль» и имеет тот же цвет, что и родительская метка.
Под меткой можно добавить несколько суббнаков. Можно также перетащить подмаркеры, чтобы переупорядочить их в списке. Щелкните правой кнопкой мыши любую метку для дополнительных изменений.

На панели «ROI Labels» выберите подмаркировку фары.
В рамке изображения выберите метку Автомобиль. При выборе метка становится желтой. Необходимо выбрать метку автомобиля (родительский ROI), прежде чем добавлять к ней субкнигу.
Нарисуйте поднаклейки фар для каждого из автомобилей.
Повторите предыдущие действия для маркировки фар другого автомобиля. Для более точного рисования меток используйте параметры панорамирования и зумирования, расположенные в правом верхнем углу окна маркировки.

Поднакладки могут использоваться только с прямоугольными или полилиничными метками окупаемости инвестиций и не могут иметь собственных поднакладок. Дополнительные сведения о работе с суббаллами см. в разделе Использование суббалл и атрибутов для маркировки данных истинности основания.
Атрибут ROI указывает дополнительную информацию о метке ROI или субкниге. Например, в сцене вождения атрибуты могут включать тип или цвет транспортного средства. В океанской сцене атрибуты могут включать тип парусника или количество парусов. Для этих типов можно определить атрибуты окупаемости инвестиций.
Numeric Value - укажите числовой скалярный атрибут, например, количество дверей на помеченном транспортном средстве или количество парусов на паруснике.
String - укажите строковый скалярный атрибут, например цвет транспортного средства или лодки.
Logical - укажите логический атрибут true или false, например, находится ли транспортное средство в движении или лодка продвигается.
List - укажите атрибут раскрывающегося списка предопределенных строк, таких как марка или модель транспортного средства или лодки.
Дополнительные сведения об этих типах атрибутов см. в разделах Метки окупаемости инвестиций, Поднаклейки и Атрибуты.
Добавьте атрибут для типа транспортного средства.
На панели ROI Labels слева выберите метку Car и нажмите Attribute.
В поле Наименование атрибута (Attribute Name) введите carType. Задайте тип атрибута как List.
В разделе «Элементы списка» введите различные типы автомобилей, например: Sedan, Hatchback, SUV, и Wagon, каждый на своей линии. При необходимости введите описание атрибута и нажмите кнопку ОК.
Выберите метку окупаемости инвестиций в автомобиль. На панели Атрибуты и суббнаки выберите соответствующее значение атрибута carType для данного транспортного средства.
Повторите предыдущий шаг для назначения атрибута carType другому транспортному средству.

Можно также добавить атрибуты к субблицам. Добавьте атрибут для надписи фары, указывающий, включена ли фара.
На панели «ROI Labels» (Метки окупаемости инвестиций) слева выберите подмаркировку фары и нажмите Attribute (Атрибут).
В поле Наименование атрибута (Attribute Name) введите isOn. Задайте тип атрибута как Logical. Оставьте значение по умолчанию равным Emptyпри необходимости напишите описание и нажмите кнопку «ОК».
Выберите фару в видеокадре. Задайте соответствующее значение атрибута isOn или оставьте значение атрибута равным Empty.
Повторите предыдущий шаг, чтобы установить атрибут isOn для других фар.

Чтобы удалить атрибут, щелкните правой кнопкой мыши метку ROI или подаблицу и выберите атрибут для удаления. Удаление атрибута удаляет информацию об атрибуте из всех ранее созданных аннотаций меток окупаемости инвестиций.
Метка сцены определяет дополнительную информацию для всей сцены. Метки сцен используются для описания таких условий, как освещение и погода, или событий, таких как изменение полосы движения.
Создайте метку сцены для применения к изображению.
На левой панели приложения выберите Метки сцен рядом с вкладкой Метки окупаемости инвестиций.
Щелкните Определить новую метку сцены (Define new scene label) и в поле Имя метки (Label Name) введите метку сцены с именем daytime.
Измените цвет определения метки на светло-синий, чтобы отразить характер метки сцены. Под параметром Цвет (Color) щелкните предварительный просмотр цвета и выберите стандартные светло-синие цвета. Затем нажмите кнопку ОК, чтобы закрыть окно выбора цвета.

Оставьте для параметра Group значение по умолчанию None и нажмите кнопку OK. На панели «Метки сцены» отображается определение метки сцены.

Нажмите кнопку «Применить к изображению», чтобы применить daytime метка к сцене. Для метки сцены появится флажок.
Чтобы отредактировать или удалить метку сцены, щелкните ее правой кнопкой мыши и выберите «Редактировать метку» или «Удалить метку».
Пока вы пометили только один кадр в видео. Чтобы пометить оставшиеся фреймы, выберите один из этих вариантов.
При нажатии клавиши со стрелкой вправо для перехода к следующему кадру метки окупаемости инвестиций из предыдущего кадра не переносятся. К каждому кадру применяется только метка солнечной сцены, поскольку эта метка применялась на протяжении всего временного интервала.
Определись покадрово и нарисовали метку и подмаркированные ROI вручную. Также обновите информацию об атрибутах для этих ROI.
Чтобы ускорить процесс маркировки, можно использовать алгоритм автоматизации в приложении. Можно либо определить собственный алгоритм автоматизации, см. раздел Создание алгоритма автоматизации для маркировки и временных алгоритмов автоматизации, либо использовать встроенный алгоритм автоматизации. В этом примере с помощью встроенного алгоритма отслеживания точек наносится метка истинности земли.
В этом примере автоматизируется маркировка только меток окупаемости инвестиций в автомобиль. Встроенные алгоритмы автоматизации не поддерживают автоматизацию надписи и атрибутов.
Выберите метки, которые требуется автоматизировать. В первом кадре видео нажмите Ctrl и щелкните для выбора двух аннотаций меток автомобиля. Метки выделены желтым цветом.

На панели инструментов приложения выберите Выбрать алгоритм > Отслеживание точек. Этот алгоритм отслеживает один или несколько ROI прямоугольника за короткие интервалы с использованием алгоритма Канаде-Лукаса-Томази (KLT).
(необязательно) Настройте параметры автоматизации. Например, убедитесь, что выбрано Импортировать выбранные ROI, чтобы выбранные метки автомобиля были импортированы в сеанс автоматизации.
![]()
Щелкните Автоматизировать (Automate), чтобы открыть сеанс автоматизации. Инструкции по алгоритму отображаются на правой панели, а выбранные метки доступны для автоматизации.

Щелкните Выполнить (Run), чтобы отслеживать выбранные ROI по интервалу.
Проверьте результаты выполнения алгоритма.
Транспортные средства, которые позже входят в сцену, не помечены. Немаркированные транспортные средства не имели начальной метки ROI, поэтому алгоритм не отслеживал их. Щелкните Отменить выполнение (Undo Run). Используйте ползунок для поиска рамок, на которых впервые появляется каждое транспортное средство. Нарисуйте ROI транспортного средства вокруг каждого транспортного средства, а затем снова нажмите «Выполнить».
Чтобы улучшить результаты алгоритма автоматизации, выполните переход по кадрам и вручную переместите, измените размер, удалите или добавьте значения ROI.
Если вы удовлетворены результатами алгоритма, нажмите кнопку Принять (Accept). Чтобы отменить метки, созданные во время сеанса, а затем вручную, нажмите кнопку Отмена (Cancel). Кнопка Отмена отменяет только сеанс алгоритма, а не сеанс приложения.
Кроме того, теперь можно вручную маркировать оставшиеся кадры подметкой и атрибутами.
Для дальнейшей оценки меток можно просмотреть визуальную сводку помеченной истинности грунта. На панели инструментов приложения выберите Просмотр сводки меток. Эта сводка используется для сравнения кадров, частоты меток и условий сцены. Дополнительные сведения см. в разделе Просмотр сводки меток истинности грунта. Эта сводка не поддерживает суббнаки или атрибуты.
Помеченную истину основания можно экспортировать в MAT-файл или в переменную в рабочей области MATLAB. В обоих случаях маркированная истина основания сохраняется как groundTruth объект. Этот объект можно использовать для обучения алгоритму компьютерного зрения на основе глубокого обучения. Дополнительные сведения см. в разделе Обучающие данные для обнаружения объектов и семантической сегментации.
Примечание
При экспорте пиксельных данных данные метки пикселя и данные истинности земли сохраняются в отдельных файлах, но в одной и той же папке. Дополнительные сведения о работе с экспортированными метками пикселей см. в разделе Как приложения Labeler хранят экспортированные метки пикселей.
В этом примере в рабочую область MATLAB экспортируется помеченная истина основания. На панели инструментов приложения выберите Экспорт меток > В рабочую область. Экспортируемая переменная MATLAB: gTruth.
Отображение свойств экспортируемого groundTruth объект. Информация в экспортируемом объекте может отличаться от представленной здесь.
gTruth
gTruth =
groundTruth with properties:
DataSource: [1×1 groundTruthDataSource]
LabelDefinitions: [2x6 table]
LabelData: [531×3 timetable]DataSource является groundTruthDataSource объект, содержащий путь к изображениям или видео и меткам времени. Отображение свойств этого объекта.
gTruth.DataSource
ans =
groundTruthDataSource for a video file with properties
Source: ...matlab\toolbox\vision\visiondata\visiontraffic.avi
TimeStamps: [531×1 duration]LabelDefinitions - таблица, содержащая информацию об определениях меток. Эта таблица не содержит информации о метках, нанесенных на видеокадры. Чтобы сохранить определения меток в собственном MAT-файле, на панели инструментов приложения выберите «Сохранить» > «Определения меток». Затем можно импортировать эти определения меток в другой сеанс приложения, выбрав Импортировать файлы.
Отображение таблицы определений меток. Каждая строка содержит информацию об определении метки окупаемости инвестиций или определении метки сцены. При экспорте данных пиксельной метки LabelDefinitions таблица также включает PixelLabelID содержит идентификационные номера для каждого определения метки пикселя.
gTruth.LabelDefinitions
ans =
3×6 table
Name Type LabelColor Group Description Hierarchy
_________ _________ ____________ ___________ ___________ ____________
{'Car' } Rectangle {1×3 double} {'Vehicle'} {0×0 char} {1×1 struct}
{'Truck'} Rectangle {1×3 double} {'Vehicle'} {0×0 char} {0×0 double}
{'Sunny'} Scene {1×3 double} {'Weather'} {0×0 char} {0×0 double} В LabelDefinitions, Hierarchy в столбце хранится информация об определениях суббнаков и атрибутов родительской метки ROI.
Отображение информации о подмаркировке и атрибутах для Car этикетка.
gTruth.LabelDefinitions.Hierarchy{1}ans =
struct with fields:
numDoors: [1×1 struct]
color: [1×1 struct]
inMotion: [1×1 struct]
carType: [1×1 struct]
headlight: [1×1 struct]
Type: Rectangle
Description: ''Отображение информации о headlight субмаркировка.
gTruth.LabelDefinitions.Hierarchy{1}.headlightans =
struct with fields:
Type: Rectangle
Description: ''
Color: [0.5862 0.8276 0.3103]
isOn: [1×1 struct]Отображение информации о carType атрибут.
gTruth.LabelDefinitions.Hierarchy{1}.carTypeans =
struct with fields:
ListItems: {3×1 cell}
Description: ''LabelData - это расписание, содержащее информацию о метках окупаемости инвестиций, нарисованных на каждой временной метке, по всему видео. Расписание содержит по одному столбцу на метку.
Отобразите первые несколько строк расписания. Первые несколько временных меток указывают на то, что транспортные средства не были обнаружены и что sunny метка сцены - false. Эти результаты связаны с тем, что эта часть видео не была помечена. Был отмечен только временной интервал 5-10 секунд.
labelData = gTruth.labelData; head(labelData)
ans =
8×3 timetable
Time Car Truck sunny
__________ ____________ ____________ _____
5.005 sec [1×2 struct] [1×0 struct] true
5.0384 sec [1×2 struct] [1×0 struct] true
5.0717 sec [1×2 struct] [1×0 struct] true
5.1051 sec [1×2 struct] [1×0 struct] true
5.1385 sec [1×2 struct] [1×0 struct] true
5.1718 sec [1×2 struct] [1×0 struct] true
5.2052 sec [1×2 struct] [1×0 struct] true
5.2386 sec [1×2 struct] [1×0 struct] true Просмотрите первые несколько строк расписания из интервала 5-10 секунд, содержащего метки.
gTruthInterval = labelData(timerange('00:00:05','00:00:10'),:); head(gTruthInterval)
ans =
8×3 timetable
Time Car Truck sunny
__________ ____________ ____________ _____
5.005 sec [1×2 struct] [1×0 struct] true
5.0384 sec [1×2 struct] [1×0 struct] true
5.0717 sec [1×2 struct] [1×0 struct] true
5.1051 sec [1×2 struct] [1×0 struct] true
5.1385 sec [1×2 struct] [1×0 struct] true
5.1718 sec [1×2 struct] [1×0 struct] true
5.2052 sec [1×2 struct] [1×0 struct] true
5.2386 sec [1×2 struct] [1×0 struct] true Для каждого Car , структура включает в себя положение ограничивающей рамки и информацию о ее субблоках и атрибутах.
Отображение положения ограничительной рамки для транспортных средств в начале временного интервала. Позиции ограничительной рамки могут отличаться от показанных здесь.
gTruthInterval(1,:).Car{1}.Position % [x y width height], in pixelsans = 1×4 single row vector 415.8962 82.4737 130.8474 129.3805 ans = 1×4 single row vector 235.2182 1.0000 117.0611 55.3500
На панели инструментов приложения выберите Сохранить и сохранить MAT-файл сеанса приложения. Сохраненный сеанс включает в себя источник данных, определения меток и маркированную истинность грунта. Он также включает настройки сеанса, такие как макет приложения. Чтобы изменить параметры макета, выберите Макет.
В любое время во время сеанса можно выбрать Новый сеанс (New Session), чтобы начать новый сеанс. Имеется возможность сохранения текущего сеанса или отмены.
MAT-файл сеанса приложения отделен от основного MAT-файла, который экспортируется при выборе «Экспорт» > «Из файла». Для совместного использования помеченных данных истинности земли, в качестве наилучшей практики, используйте файл MAT истинности земли, содержащий groundTruth объект, а не MAT-файл сеанса приложения. Дополнительные сведения см. в разделе Обмен и хранение помеченных данных о истинности земли.
groundTruth | groundTruthDataSource | labelDefinitionCreator | vision.labeler.AutomationAlgorithm | vision.labeler.mixin.Temporal