bagOfFeatures

Мешок визуального объекта слов

Описание

Управляйте своими наборами изображений и разделите их в наборы обучения и валидации. Можно создать мешок визуальных слов для использования в классификации категорий изображений. Обучение и классификация включают поддержку Parallel Computing Toolbox™.

Создание

Синтаксис

bag = bagOfFeatures(imds)
bag = bagOfFeatures(imds,'CustomExtractor',extractorFcn)
bag = bagOfFeatures(imds,Name,Value)

Описание

пример

bag = bagOfFeatures(imds) возвращает мешок объекта функций. bag объект вывода сгенерирован с помощью выборок от входа imds.

bag = bagOfFeatures(imds,'CustomExtractor',extractorFcn) возвращает мешок функций, который использует пользовательскую функцию экстрактора функции, чтобы извлечь функции от выходного мешка, чтобы изучить ее визуальный словарь. extractorFcn является указателем на функцию к пользовательской функции выделения признаков.

bag = bagOfFeatures(imds,Name,Value) свойства наборов с помощью одной или нескольких пар "имя-значение". Заключите каждое имя свойства в кавычки. Например, bag = bagOfFeatures('Verbose',true)

Эти параллельные вычисления поддержки объектов с помощью нескольких рабочих MATLAB®. Включите параллельные вычисления из диалогового окна Computer Vision Toolbox Preferences. Чтобы открыть настройки Computer Vision Toolbox™, на вкладке Home, в разделе Environment, нажимают Preferences. Затем выберите Computer Vision System Toolbox.

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

развернуть все

Изображения, заданные как объект ImageDatastore. bagOfFeatures извлекает равное количество самых сильных функций от изображений, содержавшихся в объекте imds.

number of strongest features = min (количество функций, найденных в каждом наборе) x StrongestFraction(1)
Объект получает значение StrongestFraction из свойства 'StrongestFeatures'.

Пользовательская функция экстрактора функции, заданная пара, разделенная запятой, состоящая из 'CustomExtractor' и указателя на функцию. Эта пользовательская функция извлекает функции от объекта вывода bagOfFeatures изучить визуальный словарь объекта.

Функция, extractorFcn, должна быть задана как указатель на функцию для файла:

extractorFcn = @exampleBagOfFeaturesExtractor;
bag = bagOfFeatures(imds,'CustomExtractor',extractorFcn)
где exampleBagOfFeaturesExtractor является функция MATLAB. Например:
function [features,featureMetrics] = exampleBagOfFeaturesExtractor(img)
...
Функция должна быть на пути или в текущей рабочей директории.

Для получения дополнительной информации на пользовательской функции экстрактора и ее требованиях ввода и вывода, смотрите, Создают Пользовательский Экстрактор Функции.

Можно открыть файл функции, взятой в качестве примера, и использовать его в качестве шаблона путем ввода следующей команды в командной строке MATLAB:

edit('exampleBagOfFeaturesExtractor.m')

Свойства

развернуть все

Пользовательская функция экстрактора функции, заданная как указатель на функцию. Пользовательские функции извлечений функции экстрактора функции раньше изучали визуальный словарь для bagOfFeatures. Необходимо задать 'CustomExtractor' и указатель на функцию, extractorFcn, к пользовательской функции выделения признаков.

Функция, extractorFcn, должна быть задана как указатель на функцию для файла:

extractorFcn = @exampleBagOfFeaturesExtractor;
bag = bagOfFeatures(imds,'CustomExtractor',extractorFcn)
где exampleBagOfFeaturesExtractor является функция MATLAB, такая как:
function [features,featureMetrics] = exampleBagOfFeaturesExtractor(img)
...
Функция должна быть на пути или в текущей рабочей директории.

Для получения дополнительной информации на пользовательской функции экстрактора и это - требования ввода и вывода, смотрите, Создают Пользовательский Экстрактор Функции. Можно открыть файл функции, взятой в качестве примера, и использовать его в качестве шаблона путем ввода следующей команды в командной строке MATLAB:

edit('exampleBagOfFeaturesExtractor.m')

Количество визуальных слов, чтобы включать в объект bagOfFeatures, заданный как пара, разделенная запятой, состоящая из 'VocabularySize' и целочисленного скаляра в области значений [2, inf]. Значение VocabularySize соответствует K в K-средних-значениях, кластеризирующих (Statistics and Machine Learning Toolbox), алгоритм раньше квантовал функции в визуальный словарь.

Часть самых сильных функций, заданных как пара, разделенная запятой, состоящая из 'StrongestFeatures' и значения в области значений [0,1]. Значение представляет часть самых сильных функций, чтобы использовать от каждой метки во входе imds.

Позвольте отображению прогресса экранировать, заданный как пара, разделенная запятой, состоящая из 'Verbose' и логического true или false.

Метод выбора для выбора местоположений точки для выделения признаков SURF, заданного как пара, разделенная запятой, состоящая из 'PointSelection' и вектора символов 'Grid' или 'Detector'. Существует два этапа для выделения признаков. Во-первых, вы выбираете метод для выбора местоположений точки, (SURF 'Detector' или 'Grid'), со свойством PointSelection. Второй этап извлекает функции. Выделение признаков использует экстрактор SURF для обоих методов выбора точки.

Когда вы устанавливаете PointSelection на 'Detector', характерные точки выбраны с помощью детектора ускоренной устойчивой функции (SURF). В противном случае точки выбраны на предопределенной сетке с разрядкой заданного 'GridStep'. Это свойство применяется только, когда вы не задаете пользовательский экстрактор со свойством CustomExtractor.

Размер шага сетки в пикселях, заданных как пара, разделенная запятой, состоящая из 'GridStep' и 1 2 [x y] вектор. Это свойство применяется только, когда вы устанавливаете PointSelection на 'Grid', и вы не задаете пользовательский экстрактор со свойством CustomExtractor. Шаги в x и направлениях y задают интервал регулярной координатной сетки. Пересечения линий сетки задают местоположения для выделения признаков.

Исправьте размер, чтобы извлечь вертикальный дескриптор SURF, заданный как пара, разделенная запятой, состоящая из 'BlockWidth' и 1 N вектором ширин блока N. Это свойство применяется только, когда вы не задаете пользовательский экстрактор со свойством CustomExtractor. Каждый элемент вектора соответствует размеру квадратного блока, от которого функция извлекает вертикальные дескрипторы SURF. Используйте несколько размеров квадратов, чтобы извлечь многошкальные функции. Весь заданный квадрат используется для каждой экстракции точки на сетке. Это свойство только применяется, когда вы устанавливаете PointSelection на 'Grid'. Блок width соответствует шкале функции. Минимальный BlockWidth составляет 32 пикселя.

Ориентация характеристического вектора 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);

Загрузите набор изображений.

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.

* Using K-Means clustering to create a 500 word visual vocabulary.
* Number of features          : 184320
* Number of clusters (K)      : 500

* Initializing cluster centers...100.00%.
* Clustering...completed 18/100 iterations (~0.37 seconds/iteration)...converged in 18 iterations.

* Finished creating Bag-Of-Features
bag = 
  bagOfFeatures with properties:

      CustomExtractor: @exampleBagOfFeaturesExtractor
       VocabularySize: 500
    StrongestFeatures: 0.8000

Расширенные возможности

Введенный в R2014b