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.

Introduction of Swift from Machine Learning

Introduction of Swift from Machine Learning

  1. 1. 機械学習で学ぶSwift 入門 株式会社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. 今日のゴール ・機械学習について少し理解する ・画像認識の仕組みを数学的な説明なしに理解する ・OpenCVの組み込み方をざっくり理解 ・Swiftにちょっと馴染む
  4. 4. おしながき ・機械学習について ・顔認識、顔検出について ・今回のハンズオンで作るもの ・OpenCVについて ・CIDetectorについて wikipediaより https://ja.wikipedia.org/wiki/機械学習
  5. 5. 機械学習って何? 機械学習(きかいがくしゅう、英: machine learning)と は、人工知能における研究課題の一つで、人間が自然に行っ ている学習能力と同様の機能をコンピュータで実現しよう とする技術・手法のことである。 wikipediaより https://ja.wikipedia.org/wiki/機械学習
  6. 6. 機械学習って何? 例えば人の写真データを入力すると名前を出力してくれるような仕組み を作ることを考えると たかしさん
  7. 7. 機械学習って何? 人物の写真データをその人の特徴をうまく表現できるような数値に 変換できればなんとかできそう。
  8. 8. 機械学習って何? 人物の写真データをその人の特徴をうまく表現できるような数値に 変換できればなんとかできそう。 数値に変換する 識別する
  9. 9. 機械学習って何? 人物の写真データをその人の特徴をうまく表現できるような数値に 変換できればなんとかできそう。 数値に変換する 識別する たかし:10 さとし:500 ゆうじ:700 さとみ:8000 723 ゆうじ?
  10. 10. 機械学習って何? 人物の写真データをその人の特徴をうまく表現できるような数値に 変換できればなんとかできそう。 数値に変換する 識別する たかし:10 さとし:500 ゆうじ:700 さとみ:8000 723 ゆうじ? 特徴量抽出 学習 識別器
  11. 11. 機械学習って何? 人物の写真データをその人の特徴をうまく表現できるような数値に 変換できればなんとかできそう。 数値に変換する 識別する たかし:10 さとし:500 ゆうじ:700 さとみ:8000 723 ゆうじ? 特徴量抽出 学習 識別器
  12. 12. 学習 たかし さとし ゆうじ さとみ ・・・ ・・・ ・・・ ・・・ 名前と画像の組をたくさん集める
  13. 13. 学習 たかし ・・・ 名前と画像の組をたくさん集める 特徴量抽出 12 11 9 8 10に近い値がでてくるのは「たかし」さん? たかし:10 さとし:??? ゆうじ:??? さとみ:???
  14. 14. 教師あり学習 たかし ・・・ 名前と画像の組をたくさん集める 特徴量抽出 12 11 9 8 10に近い値がでてくるのは「たかし」さん? たかし:10 さとし:??? ゆうじ:??? さとみ:???
  15. 15. 機械学習って何? 数値に変換する 識別する たかし:10 さとし:500 ゆうじ:700 さとみ:8000 13 たかし? 判別する仕組みが作れそう!!
  16. 16. 顔認識、顔検出について 顔認識 顔検出 たかし 顔認識システム 顔検出システム 写真に写っているのは誰かを識別する 写真の中から人の顔を抽出する 顔はここ!
  17. 17. ハンズオンについて 顔検出 顔検出システム 写真の中から人の顔を抽出する 顔はここ! 今回つくるもの
  18. 18. 顔検出について 顔検出システム 顔はここ! 特徴量計算 識別処理 Haar-like特徴量 AdaBoost Haar-like特徴量 AdaBoost ->領域を定義して明暗から数値を算出 ->識別能力の弱い識別器を連携させて識別を行う方法
  19. 19. Haar-like特徴量 Haar-like特徴量 H(r1,r2) = S(r1) - S(r2) 黒領域の平均輝度 白領域の平均輝度 ->ぼんやり明暗で人の顔っぽいものは認識できるのでは? 位置、大きさ形を変えて 18万個ほど抽出
  20. 20. AdaBoostの学習 ->サンプルから弱識別器、重みを決定していく z1:評価値 = 0.4 z2:評価値 = 0.8 z:評価値 = 0.2 ・ ・ ・ Adaboost h(2の場所)   α2
  21. 21. AdaBoostの学習 ->サンプルから弱識別器、重みを決定していく z1:評価値 = 0.9 z2:評価値 = 0.5 z:評価値 = 0.2 ・ ・ ・ Adaboost h(2の場所)   α1 h(1の場所)   α2
  22. 22. AdaBoost ->サンプルから弱識別器、重みを決定していく z1:評価値 = 0.9 z2:評価値 = 0.5 zx:評価値 = 0.2 ・ ・ ・ Adaboost h(2の場所)   α2 h(1の場所)   α1 ・ ・ ・ h(xの場所)   αx
  23. 23. 識別 ->検索窓を定義し、作成したAdaBoost識別器から評価値を算出 Adaboost h(2の場所)   α2 h(1の場所)   α1 ・ ・ ・ h(xの場所)   αx 0.1:顔じゃない + + +
  24. 24. 識別 ->検索窓を定義し、作成したAdaBoost識別器から評価値を算出 Adaboost h(2の場所)   α2 h(1の場所)   α1 ・ ・ ・ h(xの場所)   αx 3.5:顔発見 + + +
  25. 25. OpenCVについて OpenCV(オープンシーヴィ、英語: Open Source Computer Vision Library)とはインテルが開発・公開したオープンソースのコンピュータ ビジョン向けライブラリ。 2009年にWillow Garage(ウィロー・ガレー ジ)に開発が移管された後、2015年現在はItseezがメンテナンスを行なっ ている。 wikipediaより https://ja.wikipedia.org/wiki/OpenCV
  26. 26. OpenCVについて ・機能が豊富!   -車、動物、人の検出 https://www.youtube.com/watch? v=5uCbEvXL94Q https://www.youtube.com/watch?v=3BJFxnap0AI   -顔認識、顔検出 -文字認識、文字検出 -さまざまな特徴量計算(SHIFT,SURF)
  27. 27. OpenCVについて ・もちろんiOSで使えます! -公式でビルドライブラリが配布されている        http://opencv.org/downloads.html -CocoaPods上では公式には配布されていないので野良ビル ドを使う必要がある。        https://github.com/Zi0P4tch0/Specs        ただし、現状は最新版の3.0には未対応
  28. 28. OpenCVについて ・c++で呼び出す必要があります。 swiftから使うにはbridge-headerを設置してobjective- c++を呼び出して、そこからOpenCVのライブラリを呼び 出します。 OpenCV library Objective c++ Swift
  29. 29. 顔検出 from OpenCV ・cascade file(学習後のモデルファイル)を読み込んで ・認識メソッドを呼び出す cascade.load(fileName) cascade.detectMultiScale(image,positions,・・・); 画像データ 顔の位置情報 cascade fileの場所 ・cascade fileは色々な人が配布しているのでそれを使えば 人の顔以外も検出は可能
  30. 30. 顔検出 from 標準framework ・iOS 5.0あたりからCore Imageに機能的に追加された 顔の検出(笑顔検出、瞬き検出) QRコードの検出 ・iOS 9.0では文字検出、文字認識系もできるように! https://developer.apple.com/library/prerelease/ios/documentation/CoreImage/Reference/ CIDetector_Ref/ ・CIDetectorを使う
  31. 31. 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)

×