Приложение Video Labeler обеспечивает простой способ отметить прямоугольные метки видимой области (ROI), метки ROI ломаной линии, пиксельные метки ROI и метки сцены в видео или последовательности изображений.
Можно использовать маркированные данные, чтобы подтвердить или обучить алгоритмы, такие как классификаторы изображений, детекторы объектов, и семантический и сети сегментации экземпляра. Рассмотрите свое заявление при выборе инструмента для рисования маркировки, чтобы создать метки ROI. Для получения дополнительной информации о том, как выбрать правильный тип метки и инструмент для рисования для вашего приложения, смотрите Метки ROI, Подметки и Атрибуты.
Этот пример поможет вам начать использовать приложение, показав, как:
Метка Manually фрейм изображения от видео.
Автоматическая метка между кадрами изображения с помощью алгоритма автоматизации.
Экспортируйте помеченные достоверные данные.
ROI и Определение меток сцен
ROI label соответствует или прямоугольному, полилинейному, пикселю или необходимой области многоугольника. Эти метки содержат два компонента: имя метки, такое как "автомобили" и область вы создаете.
Scene label описывает характер сцены, например "sunny" Вы можете связать эту метку с рамкой.
Programmtically открывают приложение и загружают видео. Видео должны быть в формате файла, читаемом VideoReader
.
videoLabeler('visiontraffic.avi')
Исследуйте видео. Кликните по кнопке воспроизведения, чтобы проигрывать целое видео или использовать ползунок, чтобы перейти между системами координат.
Чтобы загрузить последовательность изображений с соответствующими метками времени, выберите Import> Image Sequence. Поддержки приложений все форматы файла изображения, поддержанные imread
. Чтобы считать дополнительные форматы файлов, можно создать imageDatastore
и используйте ReadFcn
свойство.
Загружать пользовательский источник данных, который не может быть считан VideoReader
или imread
, смотрите Исходного Читателя Пользовательского изображения Использования для Маркировки.
Задайте метки, которые вы намереваетесь чертить. В этом примере вы задаете метки непосредственно в рамках приложения. Чтобы задать метки из командной строки MATLAB® вместо этого, используйте labelDefinitionCreator
.
Можно пометить целое видео или запуститься с фрагмента видео. В этом примере вы помечаете интервал с пятью вторым разом в загруженном видео. В текстовых полях ниже видео введите эти времена в секундах:
В поле Current Time введите 5
и нажмите Enter.
В поле Start Time введите 5
так, чтобы ползунок был в начале временного интервала.
В поле End Time введите 10
.
Опционально, чтобы внести изменения во временной интервал, перетащите красные флаги интервала.
Целое приложение теперь настраивается, чтобы фокусироваться на этом определенном временном интервале. Видео вопроизводит только в этом интервале, и алгоритмы маркировки и автоматизации применяются только к этому интервалу. Можно изменить интервал в любое время путем перемещения флагов.
Чтобы расширить временной интервал, чтобы заполнить целый раздел воспроизведения, нажмите Zoom in Time Interval.
ROI label является меткой, которая соответствует видимой области (ROI) в изображении. Можно задать эти типы метки ROI.
Rectangle
— Чертите 2D прямоугольные метки ограничительной рамки вокруг объектов в изображении, таких как транспортные средства, лодки, создания.
Projected cuboid
— Чертите 3-D метки ограничительной рамки вокруг объектов в изображении, таких как транспортные средства, лодки, создания.
Line
— Чертите линейные ROI, чтобы пометить линии, такие как контуры маршрута.
Pixel label
— Чертите пиксели, чтобы пометить различные классы, такие как дорога или небо, для семантической сегментации. Для получения дополнительной информации о пиксельной маркировке, смотрите, Маркируют Pixels for Semantic Segmentation.
Polygon
— Чертите метки многоугольника вокруг объектов. Можно пометить отличные экземпляры того же класса. Для получения дополнительной информации о рисовании меток ROI многоугольника, например, и сетей семантической сегментации, смотрите, Маркируют Objects Using Polygons
Для получения дополнительной информации об этих определениях метки ROI, смотрите Метки ROI, Подметки и Атрибуты.
В этом примере вы задаете vehicle
группа для маркировки типов транспортных средств, и затем создает два Rectangle
Метки ROI, Car
и Truck
. После создания меток можно использовать Show ROI Labels выпадающее меню, чтобы выбрать On Hover, Always или Never, чтобы управлять, как имена метки ROI появляются во время маркировки. По умолчанию имена появятся, когда вы наведете на ROI.
В панели ROI Labels слева, нажмите Label.
Создайте Rectangle
пометьте названный Car
.
Опционально, измените цвет метки путем нажатия на цвет предварительного просмотра.
От Group
выпадающее меню, выберите New Group
и назовите группу Vehicle
Нажмите OK.
Название группы Vehicle появляется в панели ROI Labels с созданной меткой Car. Можно переместить метку в список к различной позиции или группе в списке путем щелчка левой кнопкой и вытаскивания метки или вниз.
Чтобы добавить вторую метку, нажмите Label. Назовите метку Truck и убедитесь, что группа Vehicle выбрана. Нажмите OK.
Используйте мышь, чтобы чертить прямоугольные ROI Car вокруг этих двух транспортных средств.
sublabel является типом метки ROI, которая соответствует родительской метке ROI. Каждая подметка должна принадлежать или быть дочерним элементом, определенная метка, заданная в панели ROI Labels. Например, в ведущей сцене, метка транспортного средства может иметь подметки для фар, номерных знаков или колес. Для получения дополнительной информации о подметках, смотрите Метки ROI, Подметки и Атрибуты.
Задайте подметку для фар.
В панели ROI Labels слева, кликните по метке Car.
Нажмите Sublabel.
Создайте Rectangle
подпометьте названный headlight
и опционально запишите описание. Нажмите OK.
Подметка headlight появляется в панели ROI Labels. Подметка вкладывается под выбранной маркой ROI, Car, и имеет тот же цвет как своя родительская метка.
Можно добавить несколько подметок под маркой. Можно также перетащить подметки, чтобы переупорядочить их в списке. Щелкните правой кнопкой по любой метке для дополнительных редактирований.
В панели ROI Labels выберите подметку headlight.
Во фрейме изображения выберите метку Car. Метка становится желтой, когда выбрано. Необходимо выбрать метку Car (родительский ROI), прежде чем можно будет добавить подметку в него.
Чертите подметки headlight для каждого из автомобилей.
Повторите предыдущие шаги, чтобы пометить фары другого автомобиля. Чтобы чертить метки более точно, используйте панорамирование и масштабируйте опции, расположенные в верхнем правом углу окна маркировки.
Подметки могут использоваться только с прямоугольными или полилинейными метками ROI и не могут иметь собственных подметок. Для получения дополнительной информации о работе с подметками смотрите Подметки Использования и Атрибуты, чтобы Маркировать Ground Truth Data.
ROI attribute указывает дополнительную информацию о метке ROI или подметке. Например, в ведущей сцене, атрибуты могут включать тип или цвет транспортного средства. В океанской сцене атрибуты могут включать тип парусной лодки или количество парусов. Можно задать атрибуты ROI этих типов.
Numeric Value
— Задайте атрибут числового скаляра, такой как количество дверей на помеченном транспортном средстве или количество парусов на парусной лодке.
String
— Задайте атрибут строкового скаляра, такой как цвет транспортного средства или лодки.
Logical
— Задайте логический истинный или ложный атрибут, такой как, находится ли транспортное средство в движении, или лодка пробивается.
List
— Задайте выпадающий атрибут списка предопределенных строк, тех, которые делают или модель транспортного средства или лодки.
Для получения дополнительной информации об этих типах атрибута, смотрите Метки ROI, Подметки и Атрибуты.
Добавьте атрибут для типа транспортного средства.
В панели ROI Labels слева, выберите метку Car и нажмите Attribute.
В поле Attribute Name введите carType
. Установите тип атрибута на List
.
В разделе List Items введите различные типы автомобилей, такие как Sedan
, Hatchback
, SUV
, и Wagon
, каждый на его собственной линии. Опционально дайте атрибуту описание и нажмите OK.
Выберите метку Car ROI. В панели Attributes and Sublabels выберите соответствующее значение атрибута carType для того транспортного средства.
Повторите предыдущий шаг, чтобы присвоить атрибут carType другому транспортному средству.
Можно также добавить атрибуты в подметки. Добавьте атрибут для подметки headlight, которая говорит, ли включена фара.
В панели ROI Labels слева, выберите подметку headlight и нажмите Attribute.
В поле Attribute Name введите isOn
. Установите тип атрибута на Logical
. Оставьте набор Default Value Empty
, опционально запишите описание и нажмите OK.
Выберите фару в видеокадре. Установите соответствующее значение атрибута isOn или оставьте набор значения атрибута Empty
.
Повторите предыдущий шаг, чтобы установить атрибут isOn для других фар.
Чтобы удалить атрибут, щелкните правой кнопкой по метке ROI или подметке, и выберите атрибут, чтобы удалить. Удаление атрибута удаляет информационные признаки из всех ранее созданных аннотаций метки ROI.
scene label задает дополнительную информацию для целой сцены. Используйте метки сцены, чтобы описать условия, такие как подсветка и погода, или события, такие как маршрут изменяется.
Создайте метку сцены, чтобы примениться к изображению.
На левой панели приложения выберите Scene Labels рядом с вкладкой ROI Labels.
Нажмите Define new scene label, и в поле Label Name, введите метку сцены, названную daytime
.
Измените цвет определения метки голубому, чтобы отразить природу метки сцены. Под параметром Color кликните по просмотру цветов и выберите стандартные голубые цвета. Затем нажмите OK, чтобы закрыть окно выбора цвета.
Оставьте набор параметров Group значению по умолчанию None
и нажмите OK. Панель Scene Labels показывает определение метки сцены.
Нажмите Apply to Image, чтобы применить daytime
пометьте к сцене. Галочка появляется для метки сцены.
Чтобы отредактировать или удалить метку сцены, щелкните правой кнопкой по метке и выберите Edit Label или Delete Label.
До сих пор вы пометили только одну систему координат в видео. Чтобы пометить остающиеся системы координат, выберите одну из этих опций.
При нажатии клавиши со стрелкой вправо для перехода к следующему кадру метки ROI из предыдущего кадра не переносятся. К каждому кадру применяется только метка sunny, поскольку эта метка применялась на протяжении всего временного интервала.
Продвигайтесь кадр за кадром и рисуйте метки и подметки ROIs вручную. Также обновляйте информационные признаки для этих ROIs.
Чтобы ускорить процесс маркировки, вы можете использовать алгоритм автоматизации в приложении. Вы можете либо определить свой собственный алгоритм автоматизации, см., Создают Алгоритм Автоматизации для Маркировки и Временные Алгоритмы Автоматизации, либо использовать встроенный алгоритм автоматизации. В этом примере вы помечаете основную истину с помощью встроенного алгоритма отслеживания точки.
В этом примере вы автоматизируете маркировку только меток ROI Car. Встроенные алгоритмы автоматизации не поддерживают подметку и приписывают автоматизацию.
Выберите метки, которые вы хотите автоматизировать. В первой системе координат видео нажмите Ctrl и нажатие кнопки, чтобы выбрать две аннотации метки Car. Метки подсвечены в желтом.
От панели инструментов приложения выберите Select Algorithm> Point Tracker. Этот алгоритм отслеживает один или несколько прямоугольных ROI на коротких интервалах с помощью алгоритма Kanade-Lucas-Tomasi (KLT).
(необязательно) настройте параметры автоматизации. Например, убедитесь, что Import selected ROIs выбран так, чтобы Car пометил вас выбранными, импортируются в сеанс автоматизации.
Нажмите Automate, чтобы открыть сеанс автоматизации. Инструкции по алгоритму появляются на правой панели, и выбранные метки доступны, чтобы автоматизировать.
Нажмите Run, чтобы отследить выбранные ROI на интервале.
Исследуйте результаты выполнения алгоритма.
Транспортные средства, которые вводят сцену позже, не помечены. Непомеченные транспортные средства не имели начальной метки ROI, таким образом, алгоритм не отслеживал их. Нажмите Undo Run. Используйте ползунок, чтобы найти системы координат, где каждое транспортное средство сначала появляется. Чертите ROI vehicle вокруг каждого транспортного средства, и затем нажмите Run снова.
Усовершенствуйте систему координат системой координат и вручную переместите, измените размер, удалите или добавьте ROI, чтобы улучшить результаты алгоритма автоматизации.
Когда вы будете удовлетворены результатами алгоритма, нажмите Accept. В качестве альтернативы, чтобы отбросить метки, сгенерированные во время сеанса и метки вручную вместо этого, нажмите Cancel. Кнопка Cancel отменяет только сеанс алгоритма, не сеанс приложения.
Опционально, можно теперь вручную пометить остающиеся системы координат подметкой и информационными признаками.
Чтобы далее оценить ваши марки, можно просмотреть визуальные сводные данные помеченной основной истины. От панели инструментов приложения выберите View Label Summary. Используйте эти сводные данные, чтобы сравнить системы координат, частоту меток и условия сцены. Для получения дополнительной информации, Сводные данные вида на море Меток Основной истины. Эти сводные данные не поддерживают подметки или атрибуты.
Можно экспортировать помеченную основную истину в MAT-файл или в переменную в рабочем пространстве MATLAB. В обоих случаях помеченная основная истина хранится как groundTruth
объект. Можно использовать этот объект обучить основанный на глубоком обучении алгоритм компьютерного зрения. Для получения дополнительной информации смотрите Обучающие данные для Обнаружения объектов и Семантической Сегментации.
Примечание
Если вы экспортируете пиксельные данные, данные о пиксельных метках и достоверные данные сохранены в отдельных файлах, но в той же папке. Для факторов при работе с экспортируемыми пиксельными метками смотрите Как Магазин приложений Этикетировочной машины Экспортируемые Пиксельные Метки.
В этом примере вы экспортируете помеченную основную истину в рабочее пространство MATLAB. От панели инструментов приложения выберите Export Labels> To Workspace. Экспортируемой переменной 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-файле, от панели инструментов приложения, выбирают Save> Label Definitions. Можно затем импортировать эти определения метки в другой сеанс приложения путем выбора Import Files.
Отобразите таблицу определений метки. Каждая строка содержит информацию об определении метки ROI или определении метки сцены. Если вы экспортировали данные о пиксельных метках, 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}.headlight
ans = struct with fields: Type: Rectangle Description: '' Color: [0.5862 0.8276 0.3103] isOn: [1×1 struct]
Отобразите информацию о carType
атрибут.
gTruth.LabelDefinitions.Hierarchy{1}.carType
ans = struct with fields: ListItems: {3×1 cell} Description: ''
LabelData
расписание, содержащее информацию о метках ROI, чертивших в каждой метке времени, через целое видео. Расписание содержит по одному столбцу на метку.
Отобразите первые несколько строк расписания. Первые несколько меток времени указывают, что никакие транспортные средства не были обнаружены и что 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 pixels
ans = 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
От панели инструментов приложения выберите Save и сохраните MAT-файл сеанса приложения. Сохраненный сеанс включает источник данных, определения метки и помеченную основную истину. Это также включает ваши настройки сеанса, такие как размещение приложения. Чтобы изменить параметры макета, выберите Layout.
В любое время во время сеанса, можно выбрать New Session, чтобы запустить новый сеанс. У вас есть опция сохранения текущего сеанса или отмены.
MAT-файл сеанса приложения является отдельным от MAT-файла основной истины, который экспортируется, когда вы выбираете Export> From File. Чтобы совместно использовать помеченные достоверные данные, как лучшая практика, совместно используют MAT-файл основной истины, содержащий groundTruth
объект, не MAT-файл сеанса приложения. Для получения дополнительной информации смотрите Долю, и Хранилище Пометило Ground Truth Data.
groundTruth
| groundTruthDataSource
| labelDefinitionCreator
| vision.labeler.AutomationAlgorithm
| vision.labeler.mixin.Temporal