OpenCVでBINGを使う

BING(http://mmcheng.net/bing/)は画像中からオブジェクトらしい矩形領域を抽出することができる手法で, 物体認識の前処理などで使えます.
論文によるとObjectness上位1000件で96%の検出率と他のstate-of-the-artより良く, しかも1000倍高速に動作するとのことなので,
色々と使えそうですね. 試してみる価値がありそうです.

BINGがいつのまにかopencv_contrib(https://github.com/itseez/opencv_contrib)で実装されていたので実際に使ってみました.

まず, opencv_contribのREADME.mdに従ってopencv_contribが利用可能なOpenCVをビルドしてください.
OpenCV 3.0 betaとopencv_contribの組み合わせではビルドが通らないので, OpenCVのmasterブランチ(https://github.com/Itseez/opencv)を使用することをおすすめします.

次にBINGの学習を行うため, オリジナルのソースをMacでビルド可能に修正したリポジトリをforkします.
自分の環境はOpenCV 3.0 alphaなのでそれに合わせて修正し, OenCVのBINGでロード可能なyml.gz形式でモデルを保存するように修正しました.
修正済みソースはhttps://github.com/horiken4/BING-Objectnessにおいてあります. clone後, README.mdに従ってVOCデータセットを適切に配置してください.
makeするとBINGが作成されるので, それを実行すると学習が開始されまず. 学習済みモデルはVOC2007/Resultsに保存されます.

$ cd Objectness
$ ./BING
$ ls ../VOC2007/Results/
BBoxesB2W8I ObjNessB2W8HSV.wS2 ObjNessB2W8I.idx.yml.gz ObjNessB2W8I.xP ...

最後に, 学習済みモデルを読み込んでオブジェクトらしい領域を抽出してみます.
画像中のオブジェクトらしい矩形をObjectnessが高い方から1000個描画するテストプログラム(https://github.com/horiken4/opencv-bing-test)を作ったのでclone後, ビルドしてください.
例えば, 以下のコマンドで実行できます.

$ cmake .
$ make
$ ./bin/opencv_bing_test $HOME/repos/BING-Objectness/VOC2007/Results $HOME/repos/BING-Objectness/VOC2007/JPEGImages/000800.jpg

bing

上位1000件を描画してもわかりづらいですねw実際にはこれらの矩形に対して分類を行うことになると思います.

以上です.

広告
カテゴリー: Code, Computer Vision, OpenCV パーマリンク

OpenCVでBINGを使う への3件のフィードバック

  1. Naoto Inoue より:

    はじめまして.当記事を読み,実行してみようとしたのですが,https://github.com/horiken4/BING-ObjectnessのREADMEにかかれていた,VOCのデータセットがリンク切れしておりました.なんとか他の場所から入手しようと調べたのですが,見つかりませんでした.. 他の入手法がありましたら,教えて頂けると幸いです.

  2. 井上直人 より:

    はじめまして。当サイトのサンプルを試そうとしてみたのですが,VOC2007のデータセットの指定がされているサイトが存在せず(消えてしまったものと思われます)が入手できませんでした..このデータセットの入手方法をご教授いただけないでしょうか?

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中