Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

imageCategoryClassifier

イメージ カテゴリの予測

説明

imageCategoryClassifier オブジェクトには、イメージ カテゴリを認識するように学習させた線形サポート ベクター マシン (SVM) 分類器が含まれています。

この分類器を使用するには、Statistics and Machine Learning Toolbox™ のライセンスを所有していなければなりません。この分類器は、複数の MATLAB® ワーカーを使用した並列計算をサポートしています。Computer Vision Toolbox の基本設定 ダイアログを使用して並列計算を有効にします。Computer Vision Toolbox™ の基本設定を開くには、[ホーム] タブの [環境] セクションで [基本設定] をクリックします。[Computer Vision System Toolbox] を選択します。

作成

関数 trainImageCategoryClassifier を使用して、imageCategoryClassifier オブジェクトを作成します。

bag = bagOfFeatures(trainingSet);
categoryClassifier = trainImageCategoryClassifier(trainingSet,bag);

プロパティ

すべて展開する

カテゴリ ラベル。cell 配列として指定します。

学習済みのカテゴリの数。整数値として格納されます。

オブジェクト関数

evaluateEvaluate image classifier on collection of image sets
predictPredict image category

すべて折りたたむ

2 つのイメージ カテゴリを読み込みます。

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

データ セットを学習データとテスト データに分割します。各セットのイメージの 30% を学習データとして、残りの 70% をテスト データとして選択します。

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

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 47/100 iterations (~0.57 seconds/iteration)...converged in 47 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);
Encoding images using Bag-Of-Features.
--------------------------------------
* Encoding an image...done.

分類ラベルを表示します。

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

参照

[1] 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.

拡張機能

バージョン履歴

R2014b で導入