Bag-of-Featuresの実装
Bag-of-Featuresが必要になったものの、OpenCVではPython用に実装されていないという悲しい現実が待ち受けていたので実装しました。(ちなみにコーディングスタイルはJavaです。)
ベクトルの量子化にK-meansを使う一般的なものとGMMクラスタリングを使うものを作りました。GMMクラスタリングにはscikit-learnが必要です。
This is a class of Bag-of-Features for OpenCV
これのサンプルコードは以下のとおりです。
サンプルコードの実行結果は以下のとおりです。
多くのコードブックサイズでK-meansのほうが認識率が良かったので、GMMクラスタリングの収束条件などを変えると良くなるかもしれません。
Fisher VectorとかVLADとかにすれば、たぶんあると思うんですけどね。
何かありましたら、お気軽にコメントください。