LoginSignup
22
28

More than 5 years have passed since last update.

Faster R-CNNを使ってリアルタイムオブジェクト検出をしてみよう

Last updated at Posted at 2016-11-30

はじめに

これまで、R-CNNとしてBINGやSelective Searchといった手法を紹介してきました。
・過去の記事はこちら
CNNの前処理としてOpenCVでBINGを使ってみた
R-CNNとしてSelective search を使ってみた
しかし、BINGについてはあまり精度がよくない事、
Selective Searchについては処理速度が遅いといった不満が残ります。
そこで今回はFaster R-CNNを試したみたいと思います。

Faster R-CNNとは

物体の候補検出もCNNで行うことにより高速化された手法です。
もともとはFast R-CNNという手法が先に発表されましたが、
すぐ後に更に高速となったFaster R-CNNが発表されました。
(この世界の進歩の速度は恐ろしいものがあります。。)
詳しくはCornnel Univercityのページを参照してください
https://arxiv.org/abs/1506.01497

やり方

オリジナルはCaffe の方ですが
https://github.com/rbgirshick/py-faster-rcnn/tree/96dc9f1dea3087474d6da5a98879072901ee9bf9
個人的な趣味でCaffe はあまり使いたくないので、今回はChainerのバージョンを使います。
https://github.com/mitmul/chainer-faster-rcnn

環境:Ubuntu16.04LTS、Python2.7.12、 Chainer1.12.0
ReadMeに書かれた手順に従って実行していくだけです。

□ chainer-fast-neuralstyleをcloneします。

$ git clone https://github.com/mitmul/chainer-faster-rcnn

□ ライブラリフォルダに移動しビルドします

$ cd chainer-faster-rcnn/lib
$ python setup.py build_ext -i
$ cd ..

□ トレーニング済みモデルをダウンロードします

$ if [ ! -d data ]; then mkdir data; fi; cd data
$ wget https://dl.dropboxusercontent.com/u/2498135/faster-rcnn/VGG16_faster_rcnn_final.model`
$ cd ..

□ テスト画像をダンロードし実行します

$ wget http://vision.cs.utexas.edu/voc/VOC2007_test/JPEGImages/004545.jpg
$ python forward.py --img_fn 004545.jpg --gpu 0

結果

テスト画像の結果です
result_master.jpg
こちらは自分で用意した画像
result_dog.jpg
どちらも正確に検出されていますね。
さらにGTX970を使った場合では約0.3~0.4秒で検出されています。
ちなみにCPUのみの場合30秒ほどかかりました。

まとめ

Faster R-CNNは現時点ではかなり優れた手法と言えそうです。
グラフィックックスボードが必須ですが。
今後、モバイルデバイスでも動作するような軽量モデルも出てくることでしょう。

[2016/11/30追記]
と思っていたら、より高速なSingle Shot Multi-box Detectionという手法があるみたいですね。
https://arxiv.org/abs/1512.02325
こちらも暇な時間に試してみたいと思います。

22
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
28