4

CvSVM を使用して、2 種類の表情のみを分類しています。LBP(Local Binary Pattern) ベースのヒストグラムを使用して画像から特徴を抽出し、 を使用してトレーニングしcvSVM::train(data_mat,labels_mat,Mat(),Mat(),params)ました。

data_mat のサイズは 200x3452 で、行メジャー形式の 200 サンプルの正規化された (0-1) 特徴ヒストグラムを含み、それぞれに 3452 特徴があります (近傍点の数によって異なります)。

labels_mat は、0 と 1 の 2 つの値のみを含む対応するラベル行列です。パラメーターは次のとおりです。

CvSVMParams パラメータ;

params.svm_type     =CvSVM::C_SVC;
params.kernel_type  =CvSVM::LINEAR;
params.C            =0.01;
params.term_crit=cvTermCriteria(CV_TERMCRIT_ITER,(int)1e7,1e-7);

問題はそれです:-

  1. テスト中に、別のカーネルと train_auto() 関数を適用した後でも、非常に悪い結果 (約 10% ~ 30% の精度) が得られます。

  2. CvSVM::predict(test_data_mat,true)「NaN」出力を与える

これについての助けに大いに感謝します。それは私を困惑させました。

4

2 に答える 2

1

あなたのクラスは、あなたが使用する特徴空間で線形的に難しい/分離できないと思います。分類子のトレーニング ステップの前にデータセットに PCA を適用し、この問題の有効な次元数を推定する方がよい場合があります。また、他の分類子を使用してデータセットをテストすると便利だと思います。この目的のために、標準の opencv の例 points_classifier.cpp を適応させることができます。それはあなたが遊ぶことができる同様のインターフェースを持つ多くの異なる分類子を含みます.

于 2013-08-01T12:50:35.330 に答える