Main Content

trainImageCategoryClassifier

交易in an image category classifier

Description

example

classifier= trainImageCategoryClassifier(imds,bag)返回一个n image category classifier. The classifier contains the number of categories and the category labels for the inputimdsimages. The function trains a support vector machine (SVM) multiclass classifier using the inputbag, abagOfFeaturesobject.

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

This function supports parallel computing using multiple MATLAB®workers. Enable parallel computing using theComputer Vision Toolbox Preferencesdialog. To open Computer Vision Toolbox™ preferences, on theHometab, in theEnvironmentsection, clickPreferences. Select Computer Vision Toolbox.

classifier= trainImageCategoryClassifier(imds,bag,Name,Value)返回一个classifierobject with optional input properties specified by one or moreName,Valuepair arguments.

Examples

全部折叠

Load two image categories.

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

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. * Creating a 500 word visual vocabulary. * Number of levels: 1 * Branching factor: 500 * Number of clustering steps: 1 * [Step 1/1] Clustering vocabulary level 1. * Number of features : 61440 * Number of clusters : 500 * Initializing cluster centers...100.00%. * Clustering...completed 25/100 iterations (~0.41 seconds/iteration)...converged in 25 iterations. * Finished creating Bag-Of-Features

交易in a classifier with the training sets.

categoryClassifier = trainImageCategoryClassifier(trainingSet,bag);
交易ining 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: PREDICTED KNOWN | books cups -------------------------- books | 0.75 0.25 cups | 0.25 0.75 * Average Accuracy is 0.75.
confMatrix =2×20.7500 0.2500 0.2500 0.7500

Find the average accuracy of the classification.

mean(diag(confMatrix))
ans = 0.7500

Apply the newly trained classifier to categorize new images.

img = imread(fullfile(setDir,'cups','bigMug.jpg')); [labelIdx, score] = predict(categoryClassifier,img);
Encoding images using Bag-Of-Features. -------------------------------------- * Encoding an image...done.

Display the classification label.

categoryClassifier.Labels(labelIdx)
ans =1x1 cell array{'cups'}

Input Arguments

全部折叠

Images specified as animageDatastoreobject.

包的功能, specified as abagOfFeaturesobject. The object contains a visual vocabulary of extracted feature descriptors from representative images of each image category.

Name-Value Arguments

Specify optional pairs of arguments asName1=Value1,...,NameN=ValueN, whereNameis the argument name andValueis the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and encloseNamein quotes.

Example:'Verbose',truesets'Verbose'to the logicaltrue.

Enable progress display to screen, specified as the comma-separated pair consisting of 'Verbose' and the logicaltrueorfalse.

Classifier options, specified as the comma-separated pair consisting of 'LearnerOptions' and the learner options output returned by thetemplateSVM(Statistics and Machine Learning Toolbox)function.

Example 2. Example

To adjust the regularization parameter oftemplateSVM(Statistics and Machine Learning Toolbox)and to set a custom kernel function, use the following syntax:

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

Output Arguments

全部折叠

Image category classifier, returned as animageCategoryClassifierobject. The function trains a support vector machine (SVM) multiclass classifier using the error correcting output codes (ECOC) framework.

References

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

Extended Capabilities

Version History

Introduced in R2014b

See Also

|||(Statistics and Machine Learning Toolbox)|(Statistics and Machine Learning Toolbox)