exponenta event banner

trainImageCategoryClassifier

Подготовка классификатора категорий изображений

Описание

пример

classifier = trainImageCategoryClassifier(imds,bag) возвращает классификатор категорий изображений. Классификатор содержит количество категорий и метки категорий для входных данных. imds изображения. Функция направляет мультиклассный классификатор вспомогательной векторной машины (SVM) с помощью входного сигнала bag, a bagOfFeatures объект.

Для использования этой функции необходимо иметь лицензию на Toolbox™ статистики и машинного обучения.

Эта функция поддерживает параллельные вычисления с использованием нескольких работников MATLAB ®. Включите параллельные вычисления с помощью диалогового окна «Настройки панели инструментов компьютерного зрения». Чтобы открыть настройки Toolbox™ компьютерного зрения, на вкладке Главная в разделе Среда щелкните Настройки. Выберите Инструмент компьютерного зрения (Computer Vision Toolbox).

classifier = trainImageCategoryClassifier(imds,bag,Name,Value) возвращает classifier объект с необязательными входными свойствами, заданными одним или несколькими Name,Value аргументы пары.

Примеры

свернуть все

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

setDir  = fullfile(toolboxdir('vision'),'visiondata','imageSets');
imds = imageDatastore(setDir,'IncludeSubfolders',true,'LabelSource',...
    'foldernames');

Разбейте набор данных на обучающие и тестовые данные. Выберите 30% изображений из каждого набора для обучающих данных, а остальные 70% для тестовых данных.

[trainingSet,testSet] = splitEachLabel(imds,0.3,'randomize');

Создать пакет визуальных слов.

bag = bagOfFeatures(trainingSet);
Creating Bag-Of-Features.
-------------------------
* Image category 1: books
* Image category 2: cups
* Selecting feature point locations using the Grid method.
* Extracting SURF features from the selected feature point locations.
** The GridStep is [8 8] and the BlockWidth is [32 64 96 128].

* Extracting features from 4 images...done. Extracted 76800 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          : 61440
* Number of clusters (K)      : 500

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

* Finished creating Bag-Of-Features

Обучение классификатора с помощью обучающих наборов.

categoryClassifier = trainImageCategoryClassifier(trainingSet,bag);
Training an image category classifier for 2 categories.
--------------------------------------------------------
* Category 1: books
* Category 2: cups

* Encoding features for 4 images...done.

* Finished training the category classifier. Use evaluate to test the classifier on a test set.

Оцените классификатор с помощью тестовых изображений. Отображение матрицы путаницы.

confMatrix = evaluate(categoryClassifier,testSet)
Evaluating image category classifier for 2 categories.
-------------------------------------------------------

* Category 1: books
* Category 2: cups

* Evaluating 8 images...done.

* Finished evaluating all the test sets.

* The confusion matrix for this test set is:


             PREDICTED
KNOWN    | books   cups   
--------------------------
books    | 0.75    0.25   
cups     | 0.25    0.75   

* Average Accuracy is 0.75.
confMatrix = 2×2

    0.7500    0.2500
    0.2500    0.7500

Найдите среднюю точность классификации.

mean(diag(confMatrix))
ans = 0.7500

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

img = imread(fullfile(setDir,'cups','bigMug.jpg'));
[labelIdx, score] = predict(categoryClassifier,img);

Отображение метки классификации.

categoryClassifier.Labels(labelIdx)
ans = 1x1 cell array
    {'cups'}

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

свернуть все

Изображения, указанные как imageDatastore объект.

Пакет элементов, указанный как bagOfFeatures объект. Объект содержит визуальный словарь извлеченных дескрипторов признаков из репрезентативных изображений каждой категории изображений.

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

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

Пример: 'Verbose',true наборы 'Verbose' логическому true.

Включить отображение хода выполнения на экране, указанное как разделенная запятыми пара, состоящая из 'Verbose«и логическое» true или false.

Параметры классификатора, указанные как разделенная запятыми пара, состоящая из 'LearnerOptions"и выходные данные параметров ученика, возвращенные templateSVM (Статистика и инструментарий машинного обучения).

Пример 2. Пример

Настройка параметра регуляризации templateSVM (Statistics and Machine Learning Toolbox) и для установки пользовательской функции ядра используйте следующий синтаксис:

opts = templateSVM('BoxConstraint',1.1,'KernelFunction','gaussian');
classifier = trainImageCategoryClassifier(imds,bag,'LearnerOptions',opts);

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

свернуть все

Классификатор категорий изображений, возвращенный как imageCategoryClassifier объект. Функция обучает мультиклассный классификатор вспомогательных векторных машин (SVM), используя структуру выходных кодов коррекции ошибок (ECOC).

Ссылки

[1] Csurka, G., C. R. Dance, L. Fan, J. Willamowski и C. Bray Визуальная категоризация с сумкой ключевых точек, Семинар по статистическому обучению компьютерному зрению, ECCV 1 (1-22), 1-2.

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

См. также

| | | (инструментарий статистики и машинного обучения) | (Набор инструментов для статистики и машинного обучения)

Представлен в R2014b