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.

OpenCV on mobile

OpenCV on Mobile

OpenCV on mobile

  1. 1. OpenCVとモバイル 株式会社BizReach プロダクトマーケティング本部 山下大輔
  2. 2. 自己紹介 ・山下大輔(やました だいすけ) ・2015年1月よりビズリーチのiOSエンジニア ・@daisuke0131 ・http://www.facebook.com/daisuke0131 ・https://github.com/daisuke0131 https://itunes.apple.com/jp/app/haikurasu-ren-cainokyaria/id972002786?mt=8
  3. 3. swift系の勉強会やっています http://d-cube.connpass.com/event/17185/ 機械学習で学ぶSwift入門 http://d-cube.connpass.com/event/17185/ ゲーム開発で学ぶSwift入門
  4. 4. OpenCVとモバイル モバイル(iOS)視点 機械学習視点 ・学習の視点ではなく認識の視点から ・パフォーマンス的にどうなのか ・実装も絡めながら説明 ・OpenCVでどんなことができるかざっくり説明
  5. 5. OpenCVについて OpenCV(オープンシーヴィ、英語: Open Source Computer Vision Library)とはインテルが開発・公開したオープンソースのコンピュータ ビジョン向けライブラリ。 2009年にWillow Garage(ウィロー・ガレー ジ)に開発が移管された後、2015年現在はItseezがメンテナンスを行なっ ている。 wikipediaより https://ja.wikipedia.org/wiki/OpenCV
  6. 6. OpenCVについて ・最近3.0がリリース ・機能が豊富!   -車、動物、人の検出    ->カスケードファイルを切り替えることで対応可能 https://www.youtube.com/watch? v=5uCbEvXL94Q https://www.youtube.com/watch?v=3BJFxnap0AI   -顔認識、顔検出 -文字認識、文字検出 -さまざまな特徴量計算に対応(SHIFT,SURFなど)
  7. 7. OpenCVについて haarcascade_eye.xml haarcascade_eye_tree_eyeglasses.xml haarcascade_frontalcatface.xml haarcascade_frontalcatface_extended.xml haarcascade_frontalface_alt.xml haarcascade_frontalface_alt2.xml haarcascade_frontalface_alt_tree.xml haarcascade_frontalface_default.xml haarcascade_fullbody.xml haarcascade_lefteye_2splits.xml haarcascade_licence_plate_rus_16stages.xml haarcascade_lowerbody.xml haarcascade_profileface.xml haarcascade_righteye_2splits.xml haarcascade_russian_plate_number.xml haarcascade_russian_plate_number.xml haarcascade_smile.xml haarcascade_upperbody.xml 検出については学習済みのカスケードファイルが用意 参考) https://github.com/Itseez/opencv/tree/master/data/haarcascades 正面顔、目、体、笑顔等の 検出用など
  8. 8. OpenCVについて ブースティング 決定木 EMアルゴリズム k近傍法 サポートベクターマシン http://docs.opencv.org/3.0.0/dd/ded/group__ml.html 各種識別器も実装されています。
  9. 9. OpenCVについて ・もちろんiOSで使えます! -公式でビルドライブラリが配布されている        http://opencv.org/downloads.html -CocoaPods上では公式には配布されていないので野良ビル ドを使う必要がある。        https://github.com/Zi0P4tch0/Specs        ただし、現状は最新版の3.0には未対応
  10. 10. OpenCVについて OpenCV contrib https://github.com/Itseez/opencv/ https://github.com/itseez/opencv_contrib OpenCV ->SHIFT,SURFなどの局所特徴量のモジュールは別管理 ->これらの機能を使いたい場合は個別にビルドして組み込む ビルドスクリプトも用意されているので簡単 $python opencv/platforms/ios/build_framework.py ios
  11. 11. OpenCVについて ・c++で呼び出す必要があります。 swiftから使うにはbridge-headerを設置してobjective- c++を呼び出して、そこからOpenCVのライブラリを呼び 出します。 OpenCV library Objective c++ Swift
  12. 12. 顔検出 from 標準framework ・iOS 5.0あたりからCore Imageに機能的に追加された 顔の検出(笑顔検出、瞬き検出) QRコードの検出 ・iOS 9.0では文字検出、文字認識系もできるように! https://developer.apple.com/library/prerelease/ios/documentation/CoreImage/Reference/ CIDetector_Ref/ ・CIDetectorを使う
  13. 13. 顔認識、顔検出について 顔認識 顔検出 たかし 顔認識システム 顔検出システム 写真に写っているのは誰かを識別する 写真の中から人の顔を抽出する 顔はここ!
  14. 14. 顔認識、顔検出について 顔検出 顔検出システム 写真の中から人の顔を抽出する 顔はここ! iOSではCore Image framework のCIDetectorクラスを 使うことで実装可能
  15. 15. パフォーマンス面での比較 CIDetector vs OpenCV
  16. 16. パフォーマンス面での比較 demo
  17. 17. パフォーマンス面での比較 0 0.1 0.2 0.3 0.4 0 45 90 135 180 CIDetector(High) CIDetector(Low) OpenCV 0.209 0.118 0.382 180 60 130130 60 180 CPU使用率(%) 処理時間(sec) 検証端末:iPhone 6 Plus
  18. 18. パフォーマンス面での比較 CIDetectorAccuracyLow CIDetectorAccuracyHigh ->認識精度は下がるっぽい? あまり体感では違いがわからず。  動画などのリアルタイムに処理する用途に向く ->認識精度が高いらしい。  静止画等の処理スピードが要求されない用途に向く
  19. 19. パフォーマンス面での比較 NVidia CUDA ランタイム API を利用して実装されているので, NVidia の GPU のみがサポートされています 参考)Open CV docs http://opencv.jp/opencv-2svn/cpp/gpu_gpu_module_introduction.html iOS GPU https://developer.apple.com/library/ios/documentation/DeviceInformatio Reference/iOSDeviceCompatibility/OpenGLESPlatforms/ OpenGLESPlatforms.html ・OpenCV ->iOSではGPU機能は使われていない。。
  20. 20. 局所特徴量について https://www.youtube.com/watch?v=LWY-w8AGGhE ・ARマーカー  ->テンプレート画像とカメラで撮影した画像の    特徴量の対応付け https://www.youtube.com/watch?v=8q0h1VJLIpM ・パノラマ写真作成 http://www.slideshare.net/lawmn/siftsurf ->回転、拡大縮小に強い特徴量
  21. 21. 局所特徴量について SHIFT  ->1999年頃に考案された特徴量 SURF  ->SHIFTの速度改良版 ORB  ->SURFの10倍高速といわれている AKAZE  ->SHIFT,SURFの欠点を改良した特徴量
  22. 22. パフォーマンス面での比較 demo
  23. 23. パフォーマンス面での比較 0 0.055 0.11 0.165 0.22 0 45 90 135 180 SHIFT SURF ORB AKAZE 0.124 0.032 0.119 0.208 118 100 180 100100 180 100 118 処理時間(sec)CPU使用率(%) 検証端末:iPhone 6 Plus 特徴点の抽出数 1400   1800     500   1300
  24. 24. まとめ ・標準frameworkではできないことが色々できる。 ・GPUを使えない面でパフォーマンス的に不利な感。 ・OpenCVのパフォーマンスチューニングは少し面倒 OpenCV on iOS OpenCV ・できることをざっくり紹介
  25. 25. おまけ
  26. 26. 文字認識について ->iOS 9以降で可能になるはず CIDetector tesseract-oar ->google が開発中のオープンソースライブラリ ->cocoaPods経由で簡単に導入可能 pod 'TesseractOCRiOS'
  27. 27. パフォーマンス面では demo
  28. 28. パフォーマンス面では リアルタイムの認識は難しそう。。

×