Image Labeler, Video Labeler и приложения Ground Truth Labeler (Automated Driving Toolbox) позволяют вам пометить изображения с помощью множества интерактивных инструментов для рисования. Используйте эти метки, чтобы создать достоверные данные для алгоритмов настройки.
Можно чертить формы многоугольника вокруг объектов во фрейме изображения или видеокадре, и использовать многоугольники, чтобы пометить objects.You, может также сопоставить метки многоугольника друг с другом, позволив вам пометить отдельные объекты как экземпляры того же класса. Экспортируемые метки многоугольника сохраняют порядок стека многоугольников через определения метки и совместимы с форматом основной истины, требуемым:
Сети семантической сегментации с помощью H-by-W помечают матрицу. Используя многоугольники поддерживает порядок, в котором метки создаются или переупорядочиваются (использование Send to Back
и Bring to Front
опции. Семантическая сегментация требует пиксельной карты изображения с метками. Для этого необходимо сгладить метки, (потеря многоуровневого порядка меток). Предположите поворачивать непрозрачность всех меток многоугольника к максимуму и сохранять все области заливки как матрица метки.
Сети сегментации экземпляра с помощью H-by-W-by-NumObjects стек маски.
Необработанные многоугольники в NumObjects-by-1 массив ячеек, где каждая ячейка содержит M-by-2 точки.
В этом примере вы загружаете изображение, создаете метки ROI многоугольника, изменяете настройки, связанные с рисованием многоугольников, и постобрабатываете экспортированные данные объектов основной истины, чтобы использовать, например, сегментацию и обучающую нейронные сети семантическую сегментацию.
Можно загрузить изображения, сохраненные в datastore, от папки, или загрузить предыдущий сеанс этикетировочной машины. Изображения должны быть читаемыми imread
. В этом примере вы загружаете данные, которые содержат много транспортных средств, включая лодки, танкер и плоскость.
Используйте этот процесс, чтобы программно загрузить изображения от datastore:
Создайте datastore из папки изображений. Например, если бы у вас была папка, названная "лодками", которые содержали изображения, вы могли создать datastore изображений с этим кодом.
imageFolder = fullfile(toolboxdir('vision'),'visiondata','boats'); imds = imageDatastore(imageFolder);
Загрузите datastore в Image Labeler:
imageLabeler(imds);
В качестве альтернативы можно загрузить папку изображений непосредственно в Image Labeler:
imageFolder = fullfile(toolboxdir('vision'),'visiondata','boats'); imageLabeler(imageFolder);
Нажмите Import, чтобы загрузить изображения или нажать Open Session, чтобы открыть сохраненный сеанс.
Создайте метки многоугольника для парусных лодок, танкера и самолета.
В панели ROI Labels слева, нажмите Label.
Выберите Polygon
пометьте тип и назовите его Sailboat
.
Опционально, можно изменить цвет метки путем нажатия на цвет предварительного просмотра.
Нажмите OK.
Метка Sailboat появляется в панели ROI Labels.
Повторите шаги 1 - 4, чтобы создать метку Tanker и метку Airplane. Можно переместить метку в список путем щелчка левой кнопкой и вытаскивания метки или вниз.
Выберите метку Sailboat и затем использование мыши, чертите ROI многоугольника вокруг каждой из парусных лодок.
Выберите метку Tanker и чертите ROI многоугольника вокруг поставки танкера.
Выберите метку Airplane и чертите ROI многоугольника вокруг самолета.
Существует много способов изменить внешний вид меток ROI. Можно также установить stacking order для экспортируемого файла основной истины. Порядок размещения указывает, является ли объект перед или позади другого объекта и требуется для того, чтобы разрешить перекрывающиеся области, чтобы создать семантическую карту метки.
На следующих шагах вы изменяете цвет метки, устанавливаете внешний вид имен метки при маркировке, изменяете непрозрачность меток, просматриваете экземпляры класса меток и устанавливаете порядок размещения.
Чтобы изменить цвет метки ROI самолета, щелкните правой кнопкой по Airplane
пометьте в ROI Labels, разделяют на области и выбирают Edit Label. Кликните по просмотру цветов и выберите цвет.
Чтобы показать имена метки ROI при маркировке, выберите Always из меню Show ROI Labels в разделе View.
Чтобы увеличить непрозрачность метки, используйте ползунок Polygon в разделе Label Opacity. Увеличение непрозрачности помогает распознать, какие метки перед или позади других меток в сцене.
Метка танкера перед меткой парусной лодки, но это должно быть позади него. Положение влияет на порядок размещения в экспортируемой основной истине. Чтобы изменить порядок размещения, щелкните правой кнопкой по метке ROI танкера в сцене и выберите Send To Back.
Чтобы просмотреть экземпляры меток ROI, выберите By Instance
от ROI Color выпадающее меню в разделе View.
Экспортируйте помеченные достоверные данные путем нажатия на Export и выбора To Workspace. Назовите файл MAT достоверных данных gTruth
.
Можно использовать экспортируемую, помеченную основную истину для обучения сети сегментации экземпляра или сети семантической сегментации.
Выполните эти шаги, чтобы обработать данные о многоугольнике или для семантической сегментации или для сегментации экземпляра.
Шаг | Описание | Процедура |
---|---|---|
1 — достоверные данные Отображения | Экспортируемый объект основной истины содержит данные для пяти объектов и трех определений. | Введите >> gTruth gTruth = groundTruth with properties: DataSource: [1×1 groundTruthDataSource] LabelDefinitions: [3×5 table] LabelData: [1×3 table] |
2 — Получают данные о многоугольнике | Свойство LabelData группирует данные именем метки. | Введите >> gTruth.LabelData ans = 1×3 table Sailboat Tanker Airplane __________ __________ __________ {3×1 cell} {1×1 cell} {1×1 cell} |
3 — данные о многоугольнике основной истины Стека | Парусная лодка и танкер перекрываются. Эта информация (относительное упорядоченное расположение пикселей) потеряна в этом формате. Используйте | Используйте >> out = gatherLabelData(gTruth,[labelType.Polygon],'GroupLabelData','LabelType') out = 1×1 cell array {1×1 table} Покажите содержимое таблицы. >> out{1}.PolygonData ans = 1×1 cell array {5×2 cell} |
4 — достоверные данные Представления согласно порядку глубины | Содержимое | Покажите данные о многоугольнике. >> out{1}.PolygonData{1} ans = 5×2 cell array {12×2 double} {'Airplane'} { 6×2 double} {'Sailboat'} { 7×2 double} {'Sailboat'} {13×2 double} {'Sailboat'} { 9×2 double} {'Tanker' } |
Шаг | Описание | Процедура |
---|---|---|
1 — Создают карту метки ID | Создайте карту, сопоставляющую имена классов, чтобы классифицировать идентификаторы. |
classNames = {'Airplane','Sailboat','Tanker'}; classIds = 1:numel(classNames); labelIDMap = containers.Map(classNames,classIds); |
2 — многоугольники Извлечения | Извлеките координаты многоугольника и метки многоугольника от структуры output. |
polygons = out{1}.PolygonData{1}(:,1); polygonLabels = out{1}.PolygonData{1}(:,2); |
3 — Сглаживают многоугольники к карте семантической сегментации | Преобразуйте имена метки к идентификаторам. Преобразуйте координаты многоугольника в карту семантической сегментации. |
polygonLabelIDs = cellfun(@(x)labelIDMap(x),polygonLabels); imageSize = [645 916]; % size(boats_im) outputIm = poly2label(polygons,polygonLabelIDs,imageSize); |
Шаг | Описание | Процедура |
---|---|---|
Предварительно выделите стек маски, например, сегментация | Предварительно выделите стек маски с высотой и шириной, равной размерам изображения и глубине канала то же самое как количество многоугольников. |
polygons = out{1}.PolygonData{1}(:,1); numPolygons = size(polygons,1); imageSize = [645 916]; % size(boats_im) maskStack = false([imageSize(1:2) numPolygons]); |
Преобразуйте многоугольники, чтобы инстанцировать маски | Преобразуйте каждый многоугольник в отдельную маску и вставьте его в стек маски. |
for i = 1:numPolygons maskStack(:,:,i) = poly2mask(polygons{i}(:,1), ... polygons{i}(:,2),imageSize(1),imageSize(2)); end |
groundTruth
| groundTruthMultisignal
(Automated Driving Toolbox)