1

ここで説明されている機械学習機能のいずれかを実行する場合。それらはすべてcvStatModelの形式に従います。

たとえば、NormalBayesのトレイン機能は次の方法で実現されます。

CvNormalBayesClassifier::train(const Mat& trainData, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), bool update=false )

ドキュメントには、パラメータの詳細についてcvStatModelを確認するように指示されています。

私が理解していないのは、何responsesを取るべきかということです。これが、バッグオブワードを使用してシステムをトレーニングするために使用したデータであることは知っていtrainDataますが、応答に何を配置するのでしょうか。

単語の袋の例では、応答要素は次のように処理されました。

float label=atof(entryPath.filename().c_str());
labels.push_back(label);

NormalBayesClassifier classifier;
classifier.train(trainingData, labels);

したがって、ここでは、画像のファイル名がdoubleに変換され、responses要素として使用されました。

私はこれを理解しておらず、混乱しています。responses誰かが要素が取ることになっているものを説明できますか?そして、なぜatof上記の例で使用されているのですか?

4

1 に答える 1

2

これらのモデルは教師あり機械学習手法です。つまり、モデルのトレーニングには、トレーニングデータ(つまり、測定値のベクトル)だけでなく、各サンプルに関連付けられたラベル(または連続値)も必要です。たとえば、猫を含む画像を検出しようとしている場合、たとえば、猫を含まない500枚の画像と猫を含む500枚の画像のトレーニングセットがあります。1000枚すべての画像の記述子を計算し、各カテゴリに番号を割り当てます(慣例により、「猫以外」の場合は-1、「猫」の場合は1)。その後、応答は1000x1の整数の行列(最初の500)になります。値は-1で、残りのビーイングは1です。

この例では、atofを使用して、ディレクトリ名をカテゴリを表す一意の番号に変換します。これは、トレーニングの例がフォルダ(フォルダの猫、犬、自転車など)でソートされている可能性があるためです。

于 2012-12-03T15:16:18.910 に答える