私が使用している svm トレーニングと予測についてはvl_svmtrain
、そのドキュメントは次の場所にあります: http://www.vlfeat.org/matlab/vl_svmtrain.html
[WB] = VL_SVMTRAIN(X, Y, LAMBDA) は、データ ベクトル X とラベル Y から線形サポート ベクター マシン (SVM) をトレーニングします。またはダブル)。Y は、トレーニング ポイントごとにバイナリ (-1 または +1) ラベルが付いた N 個の要素を持つ DOUBLE ベクトルです。
ドキュメントによると、データX
は列ごとに 1 つのサンプルを持つ D 行 N 列の行列でなければなりません。
問題は、私のデータがこのようにまったく配置されていないことです。たとえ望んでも、このように配置できるとは思いません。私の画像はそれぞれ size の特徴行列で表され512 * 257
、これらはセルに保存されます。同様に、各テスト画像も同じサイズです。
したがって、単純化するために、3 つのクラスしかないと仮定します。各クラスはサイズのモデルで表され、512 * 257
1 対すべてのアプローチのように、各モデルと比較する必要がある何千ものテストがあります。しかし、私が苦労しているのはデータの配置です。
データをマトリックス形式ではなくセル形式で SVM に表示することは可能ですか?
アップデート:
前述の cell 配列は 28 個のモデルで構成されています。したがって、合計 28 個のクラスがあり、各クラスは size の配列で表されます512 * 257
。書くことは現在をmodels(1)
表しans = [512x257 double]
、書くことは二重行列をmodels{1}
生み出す。512*257
これは、私が SVM のトレーニングに使用しているものです。同様に、各テストも同じサイズで、同じ配置になっています。
各モデルのこのマトリックスを取得するにはどうすればよいですか? クラス/モデルごとに 100 個の画像から RootSIFT 特徴を抽出しました。次に、これらの特徴をガウス混合モデル スクリプトに提示し、クラスター数を 512 に設定しました。これにより、512 クラスターの平均、共分散、および重みが得られました。次に、それらを連結しましたmodels{i} = [gmm_models{i}.w(:) gmm_models{i}.mu' gmm_models{i}.sigma'];
テストに関しては、5枚の画像からRootSIFT特徴を抽出し、モデルと同様の処理を経て、同じサイズの連結行列を取得します。したがって、当然のことながら、各モデルには何百ものテスト マトリックスがあります。
これにより、以前よりも明確になったことを願っています。