trainImageCategoryClassifier

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

Описание

пример

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

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

Эта функция поддерживает параллельные вычисления с использованием нескольких MATLAB® рабочие. Включите параллельные вычисления с помощью диалогового окна Computer Vision Toolbox Preferences. Чтобы открыть настройки 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 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 (Statistics and Machine Learning Toolbox) функция.

Пример 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. Танец, Л. Фэн, Й. Вилламовский и C. Дробите визуальную классификацию с мешком Keypoints, семинара по статистическому изучению в компьютерном зрении, ECCV 1 (1-22), 1-2.

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

Введенный в R2014b