оценить

Класс: imageCategoryClassifier

Оцените классификатор изображений на наборе наборов изображений

Синтаксис

confMat = evaluate(classifier,imds)
[confMat,knownLabelIdx,predictedLabelIdx,score] = evaluate(classifier,imds)
[___] = evaluate(___,'Verbose',true)

Описание

confMat = evaluate(classifier,imds) возвращает нормированную матрицу беспорядка, confMat.

[confMat,knownLabelIdx,predictedLabelIdx,score] = evaluate(classifier,imds) дополнительно возвращает соответствующие индексы метки и счет.

[___] = evaluate(___,'Verbose',true) также включает отображение прогресса на экран. Установите на false, чтобы выключить его.

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

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

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

Отобразите классификатор категории, заданный как объект imageCategoryClassifier.

Набор изображений, заданный как объект imageSet.

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

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

Матрица беспорядка, возвращенная как матрица. Индексы строки соответствуют известным меткам, и столбцы соответствуют предсказанным меткам.

Маркируйте индекс для набора изображений, возвращенного как M-by-1 вектор для изображений M. Выходное значение knownLabelIdx соответствует индексу набора изображений, используемого, чтобы обучить мешок функций.

Предсказанный индекс метки, возвращенный как M-by-1 вектор для изображений M. Выходное значение predictedLabelIdx соответствует индексу набора изображений, используемого, чтобы обучить мешок функций. Предсказанный индекс соответствует классу с самым большим значением в score вывод.

Счет прогноза, заданный как M-by-N матрица. N представляет количество классов. M представляет количество изображений во входном объекте imageSet, imgSet. Счет предоставляет отрицаемую среднюю бинарную потерю в классе. Каждый класс является классификатором мультикласса машины вектора поддержки (SVM), который использует подход выходных кодов с коррекцией ошибок (ECOC).

Примеры

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

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

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'}