SlideShare a Scribd company logo
OpenCVとモバイル
株式会社BizReach
プロダクトマーケティング本部
山下大輔
自己紹介
・山下大輔(やました だいすけ)
・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
swift系の勉強会やっています
http://d-cube.connpass.com/event/17185/
機械学習で学ぶSwift入門
http://d-cube.connpass.com/event/17185/
ゲーム開発で学ぶSwift入門
OpenCVとモバイル
モバイル(iOS)視点
機械学習視点
・学習の視点ではなく認識の視点から
・パフォーマンス的にどうなのか
・実装も絡めながら説明
・OpenCVでどんなことができるかざっくり説明
OpenCVについて
OpenCV(オープンシーヴィ、英語: Open Source Computer Vision
Library)とはインテルが開発・公開したオープンソースのコンピュータ
ビジョン向けライブラリ。 2009年にWillow Garage(ウィロー・ガレー
ジ)に開発が移管された後、2015年現在はItseezがメンテナンスを行なっ
ている。
wikipediaより https://ja.wikipedia.org/wiki/OpenCV
OpenCVについて
・最近3.0がリリース
・機能が豊富!
  -車、動物、人の検出
   ->カスケードファイルを切り替えることで対応可能
https://www.youtube.com/watch?
v=5uCbEvXL94Q
https://www.youtube.com/watch?v=3BJFxnap0AI
  -顔認識、顔検出
-文字認識、文字検出
-さまざまな特徴量計算に対応(SHIFT,SURFなど)
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
正面顔、目、体、笑顔等の
検出用など
OpenCVについて
ブースティング
決定木
EMアルゴリズム
k近傍法
サポートベクターマシン
http://docs.opencv.org/3.0.0/dd/ded/group__ml.html
各種識別器も実装されています。
OpenCVについて
・もちろんiOSで使えます!
-公式でビルドライブラリが配布されている
       http://opencv.org/downloads.html
-CocoaPods上では公式には配布されていないので野良ビル
ドを使う必要がある。
       https://github.com/Zi0P4tch0/Specs
       ただし、現状は最新版の3.0には未対応
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
OpenCVについて
・c++で呼び出す必要があります。
swiftから使うにはbridge-headerを設置してobjective-
c++を呼び出して、そこからOpenCVのライブラリを呼び
出します。
OpenCV library
Objective c++
Swift
顔検出 from 標準framework
・iOS 5.0あたりからCore Imageに機能的に追加された
顔の検出(笑顔検出、瞬き検出)
QRコードの検出
・iOS 9.0では文字検出、文字認識系もできるように!
https://developer.apple.com/library/prerelease/ios/documentation/CoreImage/Reference/
CIDetector_Ref/
・CIDetectorを使う
顔認識、顔検出について
顔認識
顔検出
たかし
顔認識システム
顔検出システム
写真に写っているのは誰かを識別する
写真の中から人の顔を抽出する
顔はここ!
顔認識、顔検出について
顔検出
顔検出システム
写真の中から人の顔を抽出する
顔はここ!
iOSではCore Image framework のCIDetectorクラスを
使うことで実装可能
パフォーマンス面での比較
CIDetector vs OpenCV
パフォーマンス面での比較
demo
パフォーマンス面での比較
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
パフォーマンス面での比較
CIDetectorAccuracyLow
CIDetectorAccuracyHigh
->認識精度は下がるっぽい? あまり体感では違いがわからず。
 動画などのリアルタイムに処理する用途に向く
->認識精度が高いらしい。
 静止画等の処理スピードが要求されない用途に向く
パフォーマンス面での比較
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機能は使われていない。。
局所特徴量について
https://www.youtube.com/watch?v=LWY-w8AGGhE
・ARマーカー
 ->テンプレート画像とカメラで撮影した画像の
   特徴量の対応付け
https://www.youtube.com/watch?v=8q0h1VJLIpM
・パノラマ写真作成
http://www.slideshare.net/lawmn/siftsurf
->回転、拡大縮小に強い特徴量
局所特徴量について
SHIFT
 ->1999年頃に考案された特徴量
SURF
 ->SHIFTの速度改良版
ORB
 ->SURFの10倍高速といわれている
AKAZE
 ->SHIFT,SURFの欠点を改良した特徴量
パフォーマンス面での比較
demo
パフォーマンス面での比較
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
まとめ
・標準frameworkではできないことが色々できる。
・GPUを使えない面でパフォーマンス的に不利な感。
・OpenCVのパフォーマンスチューニングは少し面倒
OpenCV on iOS
OpenCV
・できることをざっくり紹介
おまけ
文字認識について
->iOS 9以降で可能になるはず
CIDetector
tesseract-oar
->google が開発中のオープンソースライブラリ
->cocoaPods経由で簡単に導入可能
pod 'TesseractOCRiOS'
パフォーマンス面では
demo
パフォーマンス面では
リアルタイムの認識は難しそう。。

More Related Content

PDF
Introduction of Swift from Machine Learning
PDF
iOS豆知識ver0.0.5
PDF
ROS JAPAN Users Group Meetup 04
PDF
人工知能ハンズオン
PPTX
わんくま名古屋#27(20130518) データバインディングを極める
PDF
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-Edo
PDF
Self-Driving System with IoT
PDF
Moveitを使ったアプリケーションの紹介
Introduction of Swift from Machine Learning
iOS豆知識ver0.0.5
ROS JAPAN Users Group Meetup 04
人工知能ハンズオン
わんくま名古屋#27(20130518) データバインディングを極める
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-Edo
Self-Driving System with IoT
Moveitを使ったアプリケーションの紹介

What's hot (12)

PDF
KITEMATIC便利そうだよ
PDF
【Unity道場 建築スペシャル2】BIMの“I”の使い方
PDF
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
PDF
Xcode and iTC submission topics
PDF
i-Cart miniを対象としたつくばチャレンジ用ソフトウェアパッケージの開発
PPTX
デ部プレゼン資料20100306
PDF
僕らのデータ同期プラクティス
PDF
Unity道場 ロボティクス 秋のLT祭り 2021
PDF
業務系WebアプリケーションがStrutsから旅立つ日
PDF
Approach of Prototyping for making Application User Interface about iOS
PPTX
Dronecodeの概要とROSの対応について
PDF
KLabのVR/ARへの取り組み
KITEMATIC便利そうだよ
【Unity道場 建築スペシャル2】BIMの“I”の使い方
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Xcode and iTC submission topics
i-Cart miniを対象としたつくばチャレンジ用ソフトウェアパッケージの開発
デ部プレゼン資料20100306
僕らのデータ同期プラクティス
Unity道場 ロボティクス 秋のLT祭り 2021
業務系WebアプリケーションがStrutsから旅立つ日
Approach of Prototyping for making Application User Interface about iOS
Dronecodeの概要とROSの対応について
KLabのVR/ARへの取り組み
Ad

Viewers also liked (15)

PDF
Business idea - 「Kinectで実現するスマートライフ」店舗編
PDF
What's this
PPTX
顔認証装置を用いた保育園のソーシャルグラフ生成に関する研究
PDF
アメブロFaceの顔認識システム
PDF
顔認識 × ○○
PDF
顔パスの技術
PPTX
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
PDF
Sift特徴量について
PDF
画像局所特徴量と特定物体認識 - SIFTと最近のアプローチ -
PDF
論文輪読資料「FaceNet: A Unified Embedding for Face Recognition and Clustering」
PDF
OpenCVをAndroidで動かしてみた
PDF
画像認識の初歩、SIFT,SURF特徴量
PDF
MIRU2013チュートリアル:SIFTとそれ以降のアプローチ
PDF
OpenCV 3.0 on iOS
PPTX
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Business idea - 「Kinectで実現するスマートライフ」店舗編
What's this
顔認証装置を用いた保育園のソーシャルグラフ生成に関する研究
アメブロFaceの顔認識システム
顔認識 × ○○
顔パスの技術
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
Sift特徴量について
画像局所特徴量と特定物体認識 - SIFTと最近のアプローチ -
論文輪読資料「FaceNet: A Unified Embedding for Face Recognition and Clustering」
OpenCVをAndroidで動かしてみた
画像認識の初歩、SIFT,SURF特徴量
MIRU2013チュートリアル:SIFTとそれ以降のアプローチ
OpenCV 3.0 on iOS
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Ad

More from Daisuke Yamashita (17)

PDF
potatotips_77.pdf
PDF
State management for ios development
PDF
Static analysis for go lang
PDF
Convert the notification feature to the notification microservice
PDF
歯磨き.go #2
PDF
歯磨き.go Go言語の静的解析とコード生成勉強会
PDF
ライブラリを作って5年たったので振り返る
PDF
Tensorflow
PDF
Introduction of ios-chart in oss-labs#3
PDF
About SnapKit - Open source lab -
PDF
View Monitoring Tips
PDF
Swift open source library - ViewMonitor -
PDF
Let's Start Swift Open Source Activity.
PDF
バグのことは嫌いになってもXcodeのことは嫌いにならないでください。
PDF
Unity Introduction from 2D shooting game.
PDF
Introduction of Swift from Game Development
PDF
How to measure UIView position on Native App
potatotips_77.pdf
State management for ios development
Static analysis for go lang
Convert the notification feature to the notification microservice
歯磨き.go #2
歯磨き.go Go言語の静的解析とコード生成勉強会
ライブラリを作って5年たったので振り返る
Tensorflow
Introduction of ios-chart in oss-labs#3
About SnapKit - Open source lab -
View Monitoring Tips
Swift open source library - ViewMonitor -
Let's Start Swift Open Source Activity.
バグのことは嫌いになってもXcodeのことは嫌いにならないでください。
Unity Introduction from 2D shooting game.
Introduction of Swift from Game Development
How to measure UIView position on Native App

OpenCV on mobile