20

特定のデータセットの分類を行うために、SIFT 機能を使用して opencv に Bag Of Words を実装しています。これまでのところ、記述子をクラスター化して語彙を生成することに成功しました。私が知っているように、私はSVMを訓練する必要があります...しかし、私はそれらについて本当に混乱しているいくつかの質問があります. 主な問題は、実装の背後にある概念です。これらは私の質問です:

1- 特徴を抽出してから語彙を作成するとき、すべてのオブジェクト (たとえば 5 つのオブジェクトとしましょう) の特徴を抽出して 1 つのファイルに入れます。言葉?また、後で分類を行うときにそれらをどのように分離しますか?

2- SVM の実装方法は? openCV で使用されている関数は知っていますが、どのように?

3- SVM トレーニングの実装を意味する MATLAB で作業を行うことができますが、作業をガイドできるコードはありますか? ここでAndrea Vedaldi が使用するコードを見てきましたが、彼は毎回 1 つのクラスしか使用していません。私が見つけた他のすべての実装は、SVM を使用していません。では、この点についてもご案内いただけますでしょうか。

ありがとうございました

4

2 に答える 2

24

ローカル機能

SIFT を使用する場合、通常は局所的な特徴を抽出する必要があります。それはどう言う意味ですか?画像があり、この画像からローカル特徴ベクトルを抽出するポイントを見つけます。ローカル特徴ベクトルは、それが抽出された画像領域の視覚情報を記述する数値で構成される単なるベクトルです。画像 A から抽出できる局所特徴ベクトルの数は、画像 B から抽出できる特徴ベクトルの数と同じである必要はありませんが、局所特徴ベクトルの数成分 (つまり、その次元数) は常に同じ。

ここで、ローカル特徴ベクトルを使用して画像を分類する場合、問題が発生します。従来の画像分類では、各画像はグローバルな特徴ベクトルによって記述され、機械学習のコンテキストでは数値属性のセットと見なすことができます。ただし、一連のローカル特徴ベクトルを抽出すると、画像分類に必要な各画像のグローバル表現が得られません。この問題を解決するために採用できる手法は、バッグ オブ ビジュアル ワード (BoW) としても知られるバッグ オブ ワードです。

ビジュアルワードのバッグ

(非常に) 単純化された BoW アルゴリズムは次のとおりです。

  1. 一連の画像から SIFT ローカル特徴ベクトルを抽出します。

  2. このすべてのローカル特徴ベクトルを 1 つのセットに入れます。この時点では、各ローカル特徴ベクトルがどの画像から抽出されたかを保存する必要さえありません。

  3. 重心座標を見つけ、各重心に ID を割り当てるために、一連のローカル特徴ベクトルにクラスタリング アルゴリズム (k-means など) を適用します。この一連の重心は語彙になります。

  4. グローバル特徴ベクトルは、各画像で各セントロイドが発生した回数をカウントするヒストグラムになります。ヒストグラムを計算するには、各ローカル特徴ベクトルの最も近い重心を見つけます。

画像分類

ここで、あなたの問題は次のとおりであると想定しています。

入力として、視覚的な外観に基づいてラベルを割り当てたい、ラベル付けされた画像のセットとラベル付けされていない画像のセットがあります。問題が風景写真を分類することだとします。画像ラベルは、たとえば「山」、「ビーチ」、「森」などです。

各画像から抽出されたグローバルな特徴ベクトル (つまり、ビジュアル ワードの袋) は、一連の数値属性として見ることができます。各画像の視覚的特徴を表すこの数値属性のセットと、対応する画像ラベルを使用して、分類器をトレーニングできます。たとえば、 SMO として知られる SVM を実装したWekaなどのデータ マイニング ソフトウェアを使用して、問題を解決できます。

基本的に、グローバル特徴ベクトルと対応する画像ラベルをARFF ファイル形式に従ってフォーマットするだけで済みます。これは基本的に、グローバル特徴ベクトルの CSV に画像ラベルが続きます。

于 2012-07-24T02:16:14.283 に答える
11

これは、OpenCV v2.2 を使用した分類のための Bag of Words モデルを紹介する非常に優れた記事です。 http://app-solut.com/blog/2011/07/the-bag-of-words-model-in-opencv-2-2/

画像の分類に通常のベイズ分類子を使用することに関するフォローアップ記事。 http://app-solut.com/blog/2011/07/using-the-normal-bayes-classifier-for-image-categorization-in-opencv/

また、Caltech-256 データセットの約 200 行のコード デモが利用可能です。http://code.google.com/p/open-cv-bow-demo/downloads/detail?name=bowdemo.tar.gz&can=2&q=

画像分類のプロセスを直感的に理解できるものを次に示します: http://www.robots.ox.ac.uk/~vgg/share/practical-image-classification.htm

いろいろな疑問が解けて本当に助かりました。誰かの役に立てば幸いです。:)

于 2012-09-27T04:42:04.093 に答える