Upload
daisuke-yamashita
View
579
Download
6
Embed Size (px)
Citation preview
自己紹介・山下大輔(やました だいすけ) ・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
おしながき
・機械学習について ・顔認識、顔検出について ・今回のハンズオンで作るもの ・OpenCVについて ・CIDetectorについて
wikipediaより https://ja.wikipedia.org/wiki/機械学習
機械学習って何?
機械学習(きかいがくしゅう、英: machine learning)とは、人工知能における研究課題の一つで、人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術・手法のことである。
wikipediaより https://ja.wikipedia.org/wiki/機械学習
機械学習って何?人物の写真データをその人の特徴をうまく表現できるような数値に 変換できればなんとかできそう。
数値に変換する 識別する
たかし:10 さとし:500 ゆうじ:700 さとみ:8000
723ゆうじ?
機械学習って何?人物の写真データをその人の特徴をうまく表現できるような数値に 変換できればなんとかできそう。
数値に変換する 識別する
たかし:10 さとし:500 ゆうじ:700 さとみ:8000
723ゆうじ?
特徴量抽出
学習
識別器
機械学習って何?人物の写真データをその人の特徴をうまく表現できるような数値に 変換できればなんとかできそう。
数値に変換する 識別する
たかし:10 さとし:500 ゆうじ:700 さとみ:8000
723ゆうじ?
特徴量抽出
学習
識別器
顔検出について顔検出システム 顔はここ!
特徴量計算 識別処理
Haar-like特徴量 AdaBoost
Haar-like特徴量
AdaBoost
->領域を定義して明暗から数値を算出
->識別能力の弱い識別器を連携させて識別を行う方法
Haar-like特徴量
Haar-like特徴量 H(r1,r2) = S(r1) - S(r2)
黒領域の平均輝度 白領域の平均輝度
->ぼんやり明暗で人の顔っぽいものは認識できるのでは?
位置、大きさ形を変えて 18万個ほど抽出
AdaBoostの学習->サンプルから弱識別器、重みを決定していく
z1:評価値 = 0.9
z2:評価値 = 0.5
z:評価値 = 0.2
・ ・ ・
Adaboost
h(2の場所) × α1
h(1の場所) × α2
AdaBoost->サンプルから弱識別器、重みを決定していく
z1:評価値 = 0.9
z2:評価値 = 0.5
zx:評価値 = 0.2
・ ・ ・
Adaboost
h(2の場所) × α2
h(1の場所) × α1
・ ・ ・
h(xの場所) × αx
識別->検索窓を定義し、作成したAdaBoost識別器から評価値を算出
Adaboost
h(2の場所) × α2
h(1の場所) × α1
・ ・ ・
h(xの場所) × αx
0.1:顔じゃない
+
+
+
識別->検索窓を定義し、作成したAdaBoost識別器から評価値を算出
Adaboost
h(2の場所) × α2
h(1の場所) × α1
・ ・ ・
h(xの場所) × αx
3.5:顔発見
+
+
+
OpenCVについて
OpenCV(オープンシーヴィ、英語: Open Source Computer Vision Library)とはインテルが開発・公開したオープンソースのコンピュータビジョン向けライブラリ。 2009年にWillow Garage(ウィロー・ガレージ)に開発が移管された後、2015年現在はItseezがメンテナンスを行なっている。
wikipediaより https://ja.wikipedia.org/wiki/OpenCV
OpenCVについて
・機能が豊富! -車、動物、人の検出
https://www.youtube.com/watch?v=5uCbEvXL94Q https://www.youtube.com/watch?v=3BJFxnap0AI
-顔認識、顔検出 -文字認識、文字検出 -さまざまな特徴量計算(SHIFT,SURF)
OpenCVについて
・もちろんiOSで使えます! -公式でビルドライブラリが配布されている
http://opencv.org/downloads.html
-CocoaPods上では公式には配布されていないので野良ビルドを使う必要がある。
https://github.com/Zi0P4tch0/Specs
ただし、現状は最新版の3.0には未対応
OpenCVについて
・c++で呼び出す必要があります。 swiftから使うにはbridge-headerを設置してobjective-c++を呼び出して、そこからOpenCVのライブラリを呼び出します。
OpenCV library
Objective c++
Swift
顔検出 from OpenCV
・cascade file(学習後のモデルファイル)を読み込んで ・認識メソッドを呼び出す
cascade.load(fileName) cascade.detectMultiScale(image,positions,・・・);
画像データ 顔の位置情報
cascade fileの場所
・cascade fileは色々な人が配布しているのでそれを使えば 人の顔以外も検出は可能
顔検出 from 標準framework
・iOS 5.0あたりからCore Imageに機能的に追加された
顔の検出(笑顔検出、瞬き検出) QRコードの検出
・iOS 9.0では文字検出、文字認識系もできるように!
https://developer.apple.com/library/prerelease/ios/documentation/CoreImage/Reference/CIDetector_Ref/
・CIDetectorを使う
CIDetector 使い方
https://developer.apple.com/library/prerelease/ios/documentation/CoreImage/Reference/CIDetector_Ref/
let image = UIImage(named:”photo”) let ciImage = CIImage(image: image) let detector = CIDetector(ofType:CIDetectorTypeFace ,context:nil ,options:[ CIDetectorAccuracy:CIDetectorAccuracyHigh
]) let features = detector.featuresInImage(ciImage)