Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20140131 R-CNN

16,513 views

Published on

第27回 CV勉強会@関東
「コンピュータビジョンでこんなもの作ってみたLT大会」
発表資料
Deep Learningで物体検出

Published in: Technology
  • Be the first to comment

20140131 R-CNN

  1. 1. Deep Learningで物体検出 ~CaffeとBINGでR-CNN~ 皆川卓也
  2. 2. 自己紹介 2 テクニカル・ソリューション・アーキテクト 皆川 卓也(みながわ たくや) フリーエンジニア(ビジョン&ITラボ) 「コンピュータビジョン勉強会@関東」主催 博士(工学) テクニカル・ソリューション・アーキテクト 皆川 卓也(みながわ たくや) フリーエンジニア(ビジョン&ITラボ) 「コンピュータビジョン勉強会@関東」主催 博士(工学) 略歴: 1999-2003年 日本HP(後にアジレント・テクノロジーへ分社)にて、ITエンジニアとしてシステム構築、プリ セールス、プロジェクトマネジメント、サポート等の業務に従事 2004-2009年 コンピュータビジョンを用いたシステム/アプリ/サービス開発等に従事 2007-2010年 慶應義塾大学大学院 後期博士課程にて、コンピュータビジョンを専攻 単位取得退学後、博士号取得(2014年) 2009年-現在 フリーランスとして、コンピュータビジョンのコンサル/研究/開発等に従事
  3. 3. R-CNNって何? 3  Regions with CNN feature  畳み込みニューラルネットワークで学習した特徴量を用 いて物体検出を行う手法  論文:  Girshick, R., Donahue, J., Darrell, T., & Malik, J. “Rich feature hierarchies for accurate object detection and semantic segmentation”. CVPR2014.
  4. 4. R-CNNの流れ 4 Bingを使用 Caffeを使用 SVM 物体っぽい候補領域を抽出し、そのそれぞれの領域を畳み 込みニューラルネットワーク(CNN)で取得した特徴量を用い て物体認識
  5. 5. R-CNNのコード 5  実際に論文で使用されたR-CNNのコード  https://github.com/rbgirshick/rcnn  領域検出にはMatlabが必要  Pythonのラッパー有  https://github.com/sergeyk/selective_search_ijcv_with_python  J. R. R. Uijlings, K. E. A. van de Sande, T. Gevers, A. W. M. “Smeulders, Selective Search for Object Recognition”, In International Journal of Computer Vision 2013.
  6. 6. Objectness検出の実装 6 Matlab持ってないし、高いよなあ。。。。 そういえば、以前CV勉強会でBingっていうObjectness 検出の論文紹介したけど、あれってC++のコードが公 開されてたな。。。 Bingって最新の手法だし、勉強もかねて自分でR-CNN 全体を実装してみるかな。。。
  7. 7. Bing 8  Ming-Ming Cheng,et.al.,”BING: Binarized Normed Gradients for Objectness Estimation at 300fps”, CVPR2014  CV勉強会での発表資料  http://d.hatena.ne.jp/takmin/20140727/1406441098
  8. 8. Bingのソースコード 9  本家  http://mmcheng.net/bingreadme/  ただしこれだとWindowsでしか動かない。。。  CaffeがWindowsを公式サポートしてない  以下でLinux版をダウンロードできる!  https://github.com/bittnt/Objectness
  9. 9. Caffe 10  http://caffe.berkeleyvision.org/  おそらくもっともメジャーなDeep CNNのためのツール/ラ イブラリ  ググると、日本語でも色々解説が出てくる。  ネットワークの構成をテキストファイルで定義できる  既にトレーニング済みの学習パラメータが用意されてい る。  自分が認識したいカテゴリを、このパラメータを初期値として 学習させることで、学習の労力を削減できる。(Fine-tuning)
  10. 10. 開発環境 11  マシン: Magnate SX  CPU: Core i7-3770 (クアッドコア 3.4GHz)  RAM: 16GB  GPU: NVIDIA GeForce GTX650 1GB  HDD: 2TB  OS: Ubuntu 14.04
  11. 11. 検出の流れ 12 Bingのコードを改変し て、結果をテキストファ イルへ(C++) Bingのコードを改変し て、結果をテキストファ イルへ(C++) Pythonで実装 CaffeをPython から呼び出し CaffeをPython から呼び出し
  12. 12. こういうアーキテクチャになった理由 13  本当は、認識部分は全てC++で完結したかった。。。  BingのコードがPascalVOCに特化しすぎていて、ライブラ リ化するのは時間を食いそう。  CaffeはC++で書かれているが、サンプルやドキュメント が少ない。  Pythonの方がまだ多い  C++の仕様自体が数か月前のバージョンと変わるなど  画像を1枚1枚読み込んで、メモリから直接Caffeへデー タを渡す方式がC++ではややこしそう
  13. 13. 学習の流れ 14 学習画像 1画像2000個くらい Bing 物体位置 候補 正解データ正解データ 学習用正例画像と 負例画像を生成 画像変換(Warp) 学習データ (CNN用) 学習データ (SVM用) Fine tuning (Caffe) パラメータ (CNN) 特徴量抽出 (Caffe) SVMの学習 パラメータ (SVM)
  14. 14. 正解画像と背景画像 15  CNN用  正解データ(物体の正しい位置のラベル)とのオーバーラップ が0.5以上の物体候補領域を正例、それ以外は負例  SVM用  正例は正解データをそのまま仕様  負例は正例とのオーバーラップが0.3以下
  15. 15. Warp Region 16 認識と学習は以下のサイズに変換して行った 227 pixel 227 pixel16pixel
  16. 16. 学習の流れ 17 学習画像 1画像2000個くらい Bing 物体位置 候補 正解データ正解データ 学習用正例画像と 負例画像を生成 画像変換(Warp) 学習データ (CNN用) 学習データ (SVM用) Fine tuning (Caffe) パラメータ (CNN) 特徴量抽出 (Caffe) SVMの学習 パラメータ (SVM) インターフェース部分 を改良(C++) インターフェース部分 を改良(C++) OpenCVで開発 (C++) OpenCVで開発 (C++) Caffeのコマンドを 使用(caffe train) Caffeのコマンドを 使用(caffe train) Caffeのツールを使用 (extract_features.bin) Caffeのツールを使用 (extract_features.bin)
  17. 17. 結果 18
  18. 18. まとめ 19

×