trainImageCategoryClassifier

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

Синтаксис

classifier = trainImageCategoryClassifier(imds,bag)
classifier = trainImageCategoryClassifier(imds,bag,Name,Value)

Описание

пример

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 System 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.17 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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