This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

imageCategoryClassifier class

Predict image category





imageCategoryClassifier is returned by the trainImageCategoryClassifier function. It contains a linear support vector machine (SVM) classifier trained to recognize an image category.

You must have a Statistics and Machine Learning Toolbox™ license to use this classifier.

This classifier supports parallel computing using multiple MATLAB® workers. Enable parallel computing using the Computer Vision Toolbox Preferences dialog. To open the Computer Vision Toolbox™ preferences, on the Home tab, in the Environment section, click Preferences. Select Computer Vision System Toolbox.


expand all

Category labels, specified as a cell array.

Number of trained categories, stored as an integer value.


evaluateEvaluate image classifier on collection of image sets
predictPredict image category


collapse all

Load two image categories.

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

Split the data set into a training and test data. Pick 30% of images from each set for the training data and the remainder 70% for the test data.

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

Create bag of visual words.

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.63 seconds/iteration)...converged in 21 iterations.

* Finished creating Bag-Of-Features

Train a classifier with the training sets.

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.

Evaluate the classifier using test images. Display the confusion matrix.

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:

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

Find the average accuracy of the classification.

ans = 0.7500

Apply the newly trained classifier to categorize new images.

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

Display the classification label.

ans = 1x1 cell array


Csurka, G., C. R. Dance, L. Fan, J. Willamowski, and C. Bray Visual Categorization with Bag of Keypoints, Workshop on Statistical Learning in Computer Vision, ECCV 1 (1-22), 1-2.

Extended Capabilities

Introduced in R2014b