SIFTとSVMを使用して、画像を2つのクラス(クリーンとの不具合をに分ける)を分類しようとしています。 画像の種類によって5〜100のSIFT記述子を抽出できます。 これまでにたどってきた手順は次のとおりです。SIFTの次元削減画像
- イメージからSIFTフィーチャを抽出します(可変数)。
- すべての画像から一定数のベクトル(K-Means center)を得るために、K-Meansクラスタリングを実行します。
- 前のステップで見つかった中心を連結することによって、行ベクトルを形成します。このベクトルはトレーニングセットの単一要素です。
- 繰り返し前のステップと鉄道SVM
- (寸法NUM_IMAGES件×128を持っている)トレーニングマトリックスを形成し、その性能を評価
クロスバリデーション精度は約85%であり、非常に変化しません非線形(ポリまたはrbf)のカーネルが使用されている場合は、より良い機能を設計することによってのみ改善が達成できると私は考えています。私は苦労してる 問題は、次のとおりです。
- 私が使用できるクラスタ数が(そうでない場合、私はSIFT記述子の数が少ないと画像を分析することはできません)少しですので、私は除外しました単語のアプローチのバッグに続いて。
- 入力ベクトルの次元はまた、私はPCAを使用してこの次元を削減しようとしているK.
の選択を制限する、高い(分散の90%が10の成分によって説明することができます)しかし、私はそれをどこに適用するかについてはあまりよく分かりません。私はそれの背後にある理論を理解すれば、すべての画像に対して別々にPCAを実行するのは意味がありません:前と同じアプローチを使用して、 PCA?また、評価の際に主要なコンポーネントを選択する方法(一度に1つのイメージをテストする必要があります)
私の制約を踏まえて、私が従うことができる他の方法はありますか(たとえばK-Meansの使用を避け、一定数のSIFTフィーチャを取得するなど)ですか?
はい、並べ替えです。しかし、私がBag of Words法を正しく理解していれば、手順の最後に各画像はコードワードのヒストグラム、すなわち各成分がその特定のクラスタに割り当てられたSIFT記述子の数を表すK次元ベクトル。私のケースではKは少し(5〜7)でなければならないので、分類器への入力は低次元であり、精度(非線形カーネルを使用する場合も)は低くなります。 – user1046