trainImageCategoryClassifier

Обучите классификатор категории изображений

Описание

пример

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

У вас должна быть лицензия Statistics and Machine Learning Toolbox™, чтобы использовать эту функцию.

Эта функция поддерживает параллельные вычисления с помощью нескольких рабочих MATLAB®. Включите параллельные вычисления с помощью диалогового окна Настроек Computer Vision Toolbox. Чтобы открыть настройки Computer Vision Toolbox™, на вкладке Home, в разделе Environment, нажимают Preferences. Выберите 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 21/100 iterations (~0.15 seconds/iteration)...converged in 21 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 и установить пользовательскую функцию ядра, используйте следующий синтаксис:

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

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

свернуть все

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

Ссылки

[1] Csurka, G. C. R. Танцуйте, Л. Фэн, Й. Вилламовский и C. Дробите визуальную классификацию с мешком Keypoints, семинара по статистическому изучению в компьютерном зрении, ECCV 1 (1-22), 1-2.

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

Введенный в R2014b