Мешок визуального объекта слов
Можно создать мешок визуальных слов для использования в классификации категорий изображений, извлечения изображений или обнаружения закрытия цикла в визуальной одновременной локализации и картографии (vSLAM).
bag = bagOfFeatures(
возвращает объект набора признаков. imds
)bag
выходной объект сгенерирован с помощью выборок от imds
входной параметр. По умолчанию визуальный словарь создается из функций SURF, извлеченных из изображений в imds
.
bag = bagOfFeatures(
возвращает набор признаков, который использует функцию извлечения пользовательских признаков, чтобы извлечь функции из изображений в imds
,'CustomExtractor
',extractorFcn
)imds
. extractorFcn
указатель на функцию к пользовательской функции извлечения признаков.
bag = bagOfFeatures(
свойства наборов с помощью одной или нескольких пар "имя-значение". Заключите каждое имя свойства в кавычки. Например, imds
,Name,Value
)bag = bagOfFeatures('Verbose',true)
Эти параллельные вычисления поддержки объектов с помощью нескольких MATLAB® рабочие. Включите параллельные вычисления из диалогового окна Computer Vision Toolbox Preferences. Чтобы открыть настройки Computer Vision Toolbox™, на вкладке Home, в разделе Environment, нажимают Preferences. Затем выберите Computer Vision Toolbox.
imds
ИзображенияImageDatastore
объектИзображения в виде ImageDatastore
объект. bagOfFeatures
извлекает равное количество сильнейших признаков из изображений, содержавшихся в imds
объект. Количество сильнейших признаков задано как:
number of strongest features = min
(количество функций, найденных в каждом наборе) x StrongestFraction
Объект получает StrongestFraction
значение от StrongestFeatures
свойство.
extractorFcn
— Функция извлечения пользовательских признаковФункция извлечения пользовательских признаков в виде указателя на функцию. Эта пользовательская функция извлекает функции, чтобы изучить визуальный словарь объекта.
Функция, extractorFcn
, должен быть определен функцией указатель для файла:
extractorFcn = @exampleBagOfFeaturesExtractor; bag = bagOfFeatures(imds,'CustomExtractor',extractorFcn)
exampleBagOfFeaturesExtractor
функция MATLAB. Например:function [features,featureMetrics,location] = exampleBagOfFeaturesExtractor(img) ...
Аргумент | Ввод/вывод | Описание |
---|---|---|
img | Входной параметр |
|
features | Вывод |
|
featureMetrics | Вывод |
|
location | Вывод |
|
Можно открыть файл функции, взятой в качестве примера, и использовать его в качестве шаблона путем ввода следующей команды в командной строке MATLAB:
edit('exampleBagOfFeaturesExtractor.m')
CustomExtractor
— Пользовательская функция экстракцииФункция извлечения пользовательских признаков в виде указателя на функцию. Функция извлечения пользовательских признаков извлекает признаки, используемые для изучения визуального словаря для bagOfFeatures
. Необходимо задать 'CustomExtractor
'и указатель на функцию, extractorFcn
, к пользовательской функции извлечения признаков.
Функция, extractorFcn
, должен быть определен функцией указатель для файла:
extractorFcn = @exampleBagOfFeaturesExtractor; bag = bagOfFeatures(imds,'CustomExtractor',extractorFcn)
exampleBagOfFeaturesExtractor
функция MATLAB, такая как:function [features,featureMetrics] = exampleBagOfFeaturesExtractor(img) ...
Для получения дополнительной информации о пользовательской функции извлечения и ее вводах и выводах, смотрите, Создают Пользовательский Экстрактор Функции. Можно открыть файл функции, взятой в качестве примера, и использовать его в качестве шаблона путем ввода следующей команды в командной строке MATLAB:
edit('exampleBagOfFeaturesExtractor.m')
TreeProperties
— Свойства дерева словаря
(значение по умолчанию) | двухэлементный векторСвойства дерева словаря в виде двухэлементного вектора в форме [numLevels
branchingFactor]. numLevels является целым числом, которое задает количество уровней в дереве словаря. branchingFactor является целым числом, которое задает фактор, чтобы управлять суммой, которую словарь может вырастить на последовательных уровнях в дереве. Максимальным количеством визуальных слов, представленных деревом словаря, является branchingFactor ^
numLevels. Типичные значения для numLevels между 1
и 6
. Типичные значения для branchingFactor между 10
и 500
. Используйте эмпирический анализ, чтобы выбрать оптимальные значения.
Увеличьте коэффициент ветвления, чтобы сгенерировать больший словарь. Увеличение словаря улучшает классификацию и точность извлечения изображений, но также увеличит время, чтобы закодировать изображения. Можно использовать дерево словаря с несколькими уровнями, чтобы создать словари порядка 10 000 визуальных слов или больше. Многоуровневое дерево уменьшает время, требуемое закодировать изображения с большими словарями, но займет больше времени, чтобы создать. Можно использовать дерево с одним уровнем для словарей, которые содержат только 100 - 1000 визуальных слов.
StrongestFeatures
— Часть сильнейших признаков
(значение по умолчанию) | [0,1
]Часть сильнейших признаков в виде разделенной запятой пары, состоящей из 'StrongestFeatures
'и значение в области значений [0,1]. Значение представляет часть сильнейших признаков, чтобы использовать от каждой метки в imds
входной параметр.
Verbose
— Отобразите ход выполнения на экранtrue
(значение по умолчанию) | ложьОтобразите ход выполнения на экран в виде разделенной запятой пары, состоящей из 'Verbose
'и логический true
или false
.
PointSelection
— Метод выбора для выбора местоположений точки'Grid'
(значение по умолчанию) | 'Detector'
Метод выбора для выбора местоположений точки для извлечения признаков SURF в виде разделенной запятой пары, состоящей из 'PointSelection
'и любой 'Grid'
или 'Detector'
. Существует два этапа для извлечения признаков. Во-первых, вы выбираете метод для выбора местоположений точки, (SURF 'Detector'
или 'Grid'
), с PointSelection
свойство. Второй этап извлекает функции. Извлечение признаков использует экстрактор SURF для обоих методов выбора точки.
Когда вы устанавливаете PointSelection
к 'Detector'
, характерные точки выбраны с помощью детектора ускоренной устойчивой функции (SURF). В противном случае точки выбраны на предопределенной сетке с разрядкой заданного 'GridStep
'. Это свойство применяется только, когда вы не задаете пользовательский экстрактор с CustomExtractor
свойство.
GridStep
— Размер шага сетки
(значение по умолчанию) | 1 2 [x
y] вектор Размер шага сетки в пикселях в виде разделенной запятой пары, состоящей из 'GridStep
'и 1 2 [x
y] вектор. Это свойство применяется только, когда вы устанавливаете PointSelection
к 'Grid'
и вы не задаете пользовательский экстрактор с CustomExtractor
свойство. Шаги в x и направлениях y задают интервал регулярной координатной сетки. Пересечения линий сетки задают местоположения для извлечения признаков.
BlockWidth
— Исправьте размер, чтобы извлечь вертикальный дескриптор SURF
(значение по умолчанию) | 1 N векторомИсправьте размер, чтобы извлечь вертикальный дескриптор SURF в виде разделенной запятой пары, состоящей из 'BlockWidth
'и 1 N вектором из ширин блока N. Это свойство применяется только, когда вы не задаете пользовательский экстрактор с CustomExtractor
свойство. Каждый элемент вектора соответствует размеру квадратного блока, из которого функция извлекает вертикальные дескрипторы SURF. Используйте несколько размеров квадратов, чтобы извлечь многошкальные функции. Весь заданный квадрат используется для каждой экстракции точки на сетке. Это свойство только применяется, когда вы устанавливаете PointSelection
к 'Grid'
. Блок width соответствует шкале функции. Минимальный BlockWidth
32 пикселя.
Upright
— Ориентация характеристического вектора SURFtrue
(значение по умолчанию) | логический скалярОриентация характеристического вектора SURF в виде разделенной запятой пары, состоящей из 'Upright
'и логический скаляр. Это свойство применяется только, когда вы не задаете пользовательский экстрактор с CustomExtractor
свойство. Установите это свойство на true
когда вы не должны оценивать ориентацию характеристических векторов SURF. Установите его на false
когда вам нужны дескрипторы изображений, чтобы получить информацию о вращении.
encode | Создайте гистограмму визуальных случаев слова |
Загрузите два набора изображений.
setDir = fullfile(toolboxdir('vision'),'visiondata','imageSets'); imgSets = imageSet(setDir,'recursive');
Выберите первые два изображения от каждого набора изображений, чтобы создать наборы обучающих данных.
trainingSets = partition(imgSets,2);
Создайте набор признаков. Этот процесс может занять несколько минут.
bag = bagOfFeatures(trainingSets,'Verbose',false);
Вычислите гистограмму визуальных случаев слова для одного из изображений. Сохраните гистограмму как характеристический вектор.
img = read(imgSets(1),1); featureVector = encode(bag,img);
Encoding images using Bag-Of-Features. -------------------------------------- * Encoding an image...done.
Загрузите набор изображений.
setDir = fullfile(toolboxdir('vision'),'visiondata','imageSets'); imds = imageDatastore(setDir,'IncludeSubfolders',true,'LabelSource',... 'foldernames');
Задайте пользовательский экстрактор функции.
extractor = @exampleBagOfFeaturesExtractor;
bag = bagOfFeatures(imds,'CustomExtractor',extractor)
Creating Bag-Of-Features. ------------------------- * Image category 1: books * Image category 2: cups * Extracting features using a custom feature extraction function: exampleBagOfFeaturesExtractor. * Extracting features from 12 images...done. Extracted 230400 features. * Keeping 80 percent of the strongest features from each category. * Creating a 500 word visual vocabulary. * Number of levels: 1 * Branching factor: 500 * Number of clustering steps: 1 * [Step 1/1] Clustering vocabulary level 1. * Number of features : 184320 * Number of clusters : 500 * Initializing cluster centers...100.00%. * Clustering...completed 37/100 iterations (~0.34 seconds/iteration)...converged in 37 iterations. * Finished creating Bag-Of-Features
bag = bagOfFeatures with properties: CustomExtractor: @exampleBagOfFeaturesExtractor NumVisualWords: 500 TreeProperties: [1 500] StrongestFeatures: 0.8000
Чтобы запуститься параллельно, установите 'UseParallel'
к true
или включите это значением по умолчанию с помощью настроек Computer Vision Toolbox.
Для получения дополнительной информации смотрите Поддержку Parallel Computing Toolbox.
imageDatastore
| imageCategoryClassifier
| trainImageCategoryClassifier
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.