balanceBoxLabels

Сбалансируйте блоки изображений с помощью ограничительных рамок и больших изображений

Описание

пример

locationSet = balanceBoxLabels(boxLabels,bigLabeledImages,levels,blockSize,numObservations) метки ограничительной рамки балансов, которые содержатся в большом объекте bigImages изображений. Функция возвращает locationSet, blockLocationSet объект, который содержит numObservations количество местоположений блока, каждый размер blockSize.

locationSet = balanceBoxLabels(___,Name,Value) задает опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к входным параметрам от предыдущего синтаксиса.

Примеры

свернуть все

Загрузите данные о метках поля, которые содержат поля и метки для одного изображения. Высота и ширина каждого поля [20,20].

d  = load('balanceBoxLabelsData.mat');

bboxes    = d.BoxLabels.Boxes;
labels    = d.BoxLabels.Labels;
boxLabels = table(bboxes,labels);

Найдите неустойчивость класса в метках поля.

blds = boxLabelDatastore(boxLabels);
tbl1 = countEachLabel(blds);
figure;
h1 = histogram('Categories',tbl1.Label,'BinCounts',tbl1.Count);

Найдите неустойчивость класса путем оценки, если коэффициент изменчивости больше 1.

CVBefore = std(tbl1.Count)/mean(tbl1.Count)
CVBefore = 1.5746

Определите номер наблюдений путем нахождения медианы количества каждого класса и умножения его на количество классов.

numClasses = height(tbl1);
numObservations = mean(tbl1.Count)*numClasses;

Создайте большое изображение размера 500 500 пиксели.

bigImages = bigimage(zeros([500,500]));

Установите размер изображения каждого наблюдения.

blockSize = [50,50];

Установите уровни разрешения для больших объектов изображения.

levels = 1;

Сбалансируйте метки поля.

locationSet = balanceBoxLabels(boxLabels,bigImages,levels,blockSize,numObservations);
Balancing box labels for 1 images with [==================================================] 100%
[==================================================] 100%
Balancing box labels complete.

Считайте метки, которые содержатся в блоках изображений.

bldsBalanced = boxLabelDatastore(boxLabels,locationSet);
tbl2 = countEachLabel(bldsBalanced);

Проверяйте, сбалансированы ли метки поля. Сравните новые и исходные гистограммы количества метки. Если не сбалансированный, используйте различное значение для количества блоков, numBlocks. Гистограммы показывают, что метки поля сбалансированы.

hold on;
h2 = histogram('Categories',tbl2.Label,'BinCounts',tbl2.Count);
title(h2.Parent,'Balanced Class Labels');

Проверяйте, меньше ли значение коэффициента изменчивости исходного значения.

CVAfter = std(tbl2.Count)/mean(tbl2.Count)
CVAfter = 0.3731

Входные параметры

свернуть все

Помеченные данные об ограничительной рамке в виде таблицы с двумя столбцами.

  • Первый столбец содержит ограничительные рамки и должен быть вектором ячейки. Каждый элемент в векторе ячейки содержит M-by-4 матрицы в формате [x, y, width, height] для полей M.

  • Второй столбец должен быть вектором ячейки, который содержит имена метки, соответствующие каждой ограничительной рамке. Каждым элементом в векторе ячейки должен быть M-by-1 категориальный или вектор строки.

Чтобы составить поле помечают таблицу от достоверных данных,

  1. Используйте Image Labeler или приложение Video Labeler, чтобы пометить вашу основную истину. Экспортируйте помеченные достоверные данные в свою рабочую область.

  2. Создайте datastore метки ограничительной рамки с помощью objectDetectorTrainingData функция.

  3. Можно получить boxLabels от LabelData свойство поля помечает datastore возвращенным objectDetectorTrainingData, ( blds.LabelData).

Помеченные большие изображения в виде a bigimage объект или вектор из bigimage объекты, содержащие пиксель, помечают изображения.

Уровни разрешения блоков из каждого большого изображения в bigLabeledImagesВ виде положительного целочисленного скаляра или вектора из положительных целых чисел, который равен длине bigLabeledImages вектор. Если вы задаете скалярное значение, то все большие помеченные блоки предоставления изображений на том же уровне разрешения.

Типы данных: double

Размер блока считанных данных в виде двухэлементного вектора-строки из положительных целых чисел, [numrows, numcols]. Первый элемент задает количество строк в блоке. Второй элемент задает количество столбцов.

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

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'OverlapThreshold','1'

Перекройте порог в виде разделенной запятой пары, состоящей из 'OverlapThreshold'и положительная скалярная величина в области значений [0,1]. То, когда перекрытие между ограничительной рамкой и окном обрезки больше порога, окружает boxLabels вход отсекается к границе окна блока изображений. Когда перекрытие меньше порога, поля отбрасываются. Когда вы понижаете порог, часть объекта может быть отброшена. Чтобы уменьшать сумму, объект может быть отсечен на границе, увеличить порог. Увеличение порога может также вызвать менее сбалансированные метки поля.

Сумма перекрытия между ограничительной рамкой и окном обрезки задана как.

area(bboxAwindow)/area(bboxA)

Отобразите информацию о прогрессе в виде разделенной запятой пары 'Verbose' и числовой или логический 1 TRUE) или 0 ложь). Установите это свойство на true отобразить информацию.

Выходные аргументы

свернуть все

Сбалансированные метки поля, возвращенные как a blockLocationSet объект. Объект содержит numObservations количество местоположений сбалансированных блоков, каждого размера blockSize.

Алгоритмы

свернуть все

Балансировка меток поля

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

Проверка баланс

Можно проверять успех балансировки путем сравнения гистограмм количества метки до и после балансировки. Можно также проверять значение коэффициента изменчивости. Для лучших результатов значение должно быть меньше исходного значения. Для получения дополнительной информации смотрите Национальный институт стандартов и технологий (NIST) веб-сайт, смотрите Коэффициент изменчивости для получения дополнительной информации.

Смотрите также

Объекты

Введенный в R2020a