Main Content

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

trainImageCategoryClassifier

イメージ カテゴリ分類器の学習

説明

classifier = trainImageCategoryClassifier(imds,bag) は、イメージ カテゴリ分類器を返します。分類器には、カテゴリの数と入力イメージ imds のカテゴリ ラベルが含まれています。関数は、bagOfFeatures オブジェクトの入力 bag を使用して、サポート ベクター マシン (SVM) マルチクラス分類器に学習させます。

この関数を使用するには、Statistics and Machine Learning Toolbox™ のライセンスを所有していなければなりません。

この関数は、複数の MATLAB® ワーカーを使用する並列計算をサポートします。Computer Vision Toolbox の基本設定 ダイアログを使用して並列計算を有効にします。Computer Vision Toolbox™ の基本設定を開くには、[ホーム] タブの [環境] セクションで [基本設定] をクリックします。Computer Vision Toolbox を選択します。

classifier = trainImageCategoryClassifier(imds,bag,Name,Value) は、Name,Value ペアの引数を 1 つ以上指定したオプションの入力プロパティを使用して classifier オブジェクトを返します。

すべて折りたたむ

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

入力引数

すべて折りたたむ

imageDatastore オブジェクトとして指定されたイメージ。

bag of features。bagOfFeatures オブジェクトとして指定します。このオブジェクトには、各イメージ カテゴリの典型的なイメージから抽出された特徴記述子のビジュアル ボキャブラリが含まれます。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: 'Verbose',true は、'Verbose' を logical true に設定します。

画面への進行状況表示の有効化。'Verbose' と logical 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 オブジェクトとして返されます。この関数は、誤り訂正出力符号 (ECOC) フレームワークを使用して、サポート ベクター マシン (SVM) マルチクラス分類器の学習を行います。

参照

[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 で導入