3

Bag Of Words を実装しました。すべてがスムーズに機能しています。しかし、いくつかの手順とその実装方法について混乱しています。

ここに示すように、サンプルを作成するための Bag of words の最後のステップとして、弓の記述子を作成することができましたbowDE.compute(img, keypoints, bow_descriptor);.. 問題は、次のステップについて混乱していることです。

BOW では、非クラス (コーラ) を使用してクラス (車) をトレーニングおよびテストする必要があることを知っています。 . システムをトレーニングしてテストするために私が持っている質問は次のとおりです。

1- bow_descriptor のベクトルを class(cola) 用に半分にし、残りを non-class(cola) 用にするか、または non-class(cola) 用に新しい bow_descriptor を作成する必要がありますか?

2-クラス(車)の最初のシステムを終了した後、マルチクラス分類を行う必要があり、新しいクラス(バス+電車など)をトレーニングする必要があります。それぞれの新しいトレーニングモデルを作成しますか、または以前のトレーニングと一緒にトレーニング手順を実行できますか(つまり、トレーニングクラスBUS、同じシステム内のクラスカーでトレーニングします)?

4

1 に答える 1

1

すべてのクラスに同じディクショナリを使用する限り、すべてのクラスに対して 1 つのオブジェクトを作成するか、クラスごとに 1 つのオブジェクトを作成するかは問題ではありません。オブジェクトを 1 つだけ作成する方が経済的です。ただし、抽出されたイメージ記述子は同じである必要があります。

マルチクラス SVM について:

SVM タグを使用しました。したがって、SVMを使用したいと思います。複数のバイナリ SVM をトレーニングし、それらを組み合わせてマルチクラスの結果を取得する方が一般的です。

クラス ペアごとに 1 つの SVM をトレーニングする 1 対 1 設定を使用することもできます。テストでは、各 SVM でテスト例を評価します。それらの決闘に最も多く勝ったクラスが最終結果になります。

もう 1 つの一般的なアプローチは、1 対すべての SVM です。ここでは、クラスごとに 1 つの SVM をトレーニングします。現在のクラスのサンプルには陽性のラベルが付けられ、他のすべてのサンプルには陰性のラベルが付けられます。テスト中、スコアが最も高いクラスが勝利します。

したがって、1 対 1 の設定を使用したい場合は、新しいクラスを追加するときに、いくつかのバイナリ SVM を再利用できる可能性があります。各 SVM のネガティブ サンプルに新しいクラスを追加する必要があるため、1 対すべての設定はできません。

于 2013-04-25T14:15:54.967 に答える