Сбалансируйте блоки изображений с помощью ограничительных рамок и больших изображений
метки ограничительной рамки балансов, которые содержатся в большом объекте 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
boxLabels
— Помеченные данные об ограничительной рамкеПомеченные данные об ограничительной рамке в виде таблицы с двумя столбцами.
Первый столбец содержит ограничительные рамки и должен быть вектором ячейки. Каждый элемент в векторе ячейки содержит M-by-4 матрицы в формате [x, y, width, height] для полей M.
Второй столбец должен быть вектором ячейки, который содержит имена метки, соответствующие каждой ограничительной рамке. Каждым элементом в векторе ячейки должен быть M-by-1 категориальный или вектор строки.
Чтобы составить поле помечают таблицу от достоверных данных,
Используйте Image Labeler или приложение Video Labeler, чтобы пометить вашу основную истину. Экспортируйте помеченные достоверные данные в свою рабочую область.
Создайте datastore метки ограничительной рамки с помощью objectDetectorTrainingData
функция.
Можно получить boxLabels
от LabelData
свойство поля помечает datastore возвращенным objectDetectorTrainingData
, ( blds.LabelData
).
bigLabeledImages
— Помеченные большие изображенияbigimage
возразите | вектор из bigimage
объектыПомеченные большие изображения в виде a bigimage
объект или вектор из bigimage
объекты, содержащие пиксель, помечают изображения.
levels
— Уровни разрешенияУровни разрешения блоков из каждого большого изображения в bigLabeledImages
В виде положительного целочисленного скаляра или вектора из положительных целых чисел, который равен длине bigLabeledImages
вектор. Если вы задаете скалярное значение, то все большие помеченные блоки предоставления изображений на том же уровне разрешения.
Типы данных: double
blockSize
— Размер блокаРазмер блока считанных данных в виде двухэлементного вектора-строки из положительных целых чисел, [numrows, numcols]. Первый элемент задает количество строк в блоке. Второй элемент задает количество столбцов.
numObservations
— Количество местоположений блокаКоличество местоположений блока, чтобы возвратиться в виде положительного целого числа.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
OverlapThreshold
','1'
'OverlapThreshold'
— Перекройте порог
(значение по умолчанию) | скаляр в области значений [0,1]Перекройте порог в виде разделенной запятой пары, состоящей из 'OverlapThreshold
'и положительная скалярная величина в области значений [0,1]. То, когда перекрытие между ограничительной рамкой и окном обрезки больше порога, окружает boxLabels
вход отсекается к границе окна блока изображений. Когда перекрытие меньше порога, поля отбрасываются. Когда вы понижаете порог, часть объекта может быть отброшена. Чтобы уменьшать сумму, объект может быть отсечен на границе, увеличить порог. Увеличение порога может также вызвать менее сбалансированные метки поля.
Сумма перекрытия между ограничительной рамкой и окном обрезки задана как.
'Verbose'
— Отобразите информацию о прогрессеtrue
или 1
(значение по умолчанию) | false
или 0
Отобразите информацию о прогрессе в виде разделенной запятой пары 'Verbose'
и числовой или логический 1
TRUE
) или 0
ложь
). Установите это свойство на true
отобразить информацию.
locationSet
— Сбалансированные метки поляblockLocationSet
объектСбалансированные метки поля, возвращенные как a blockLocationSet
объект. Объект содержит numObservations
количество местоположений сбалансированных блоков, каждого размера blockSize
.
Сбалансировать метки поля, функцию по демонстрационным классам, которые менее представлены в большом изображении. Метки поля считаются через набор данных и сортируются на основе каждого количества класса. Каждый размер изображения разделен в несколько квадрантов, на основе blockSize
входное значение. Алгоритм случайным образом выбирает несколько блоков в каждом квадранте с менее представленными классами. Блоки без любых объектов отбрасываются. Балансирующиеся остановки однажды конкретное количество блоков выбраны.
Можно проверять успех балансировки путем сравнения гистограмм количества метки до и после балансировки. Можно также проверять значение коэффициента изменчивости. Для лучших результатов значение должно быть меньше исходного значения. Для получения дополнительной информации смотрите Национальный институт стандартов и технологий (NIST) веб-сайт, смотрите Коэффициент изменчивости для получения дополнительной информации.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.