20130727 cv machine_learning@tokyo webmining

14,156 views

Published on

コンピュータビジョン&機械学習の入門的な内容について

※事例のランダムサンプリングを追加:修正
※再現率、適合率の名称逆だったので入れ替え:修正

Published in: Technology
0 Comments
28 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
14,156
On SlideShare
0
From Embeds
0
Number of Embeds
4,951
Actions
Shares
0
Downloads
91
Comments
0
Likes
28
Embeds 0
No embeds

No notes for slide

20130727 cv machine_learning@tokyo webmining

  1. 1. コンピュータビジョンと機械学習 徹底入門 現実的な画像検索のためにやってきたこと 第28回#TokyoWebmining
  2. 2. 自己紹介 • 教育×IT の社内ベンチャー(メンバーは全員プロジェクトのために集まっ た。)世界No.1の新しい教育サービスを実現したい。 担当 • 画像の認識 • 動画のトランスコード • 認識の精度、サービスの精度を高めるための機械学習 2 でも、まだ始めてから半年強くらい。まだまだ未開の道が続く。 個人的には、半年前まで割と変わったことをしてました…
  3. 3. バックグラウンド • 大学は数学専攻ですが… • 前職は主にヴォイストレーナー。歌や楽器演奏。TVも少し。 ←「○っとけないよ」のもといろいろ仕事 3
  4. 4. 画像認識(特定物体認識) 4 正解を抽出 ユーザに 役立つ情報を 送信
  5. 5. どんなことに使えるの? • バーコードの代わりに画像が使える • ポスターを写真に取るだけで、スマホに情報が届く • 食べ物を撮影して、カロリー情報を知る 5
  6. 6. 実現手法 1.画像認識の流れとアルゴリズム 2.認識のための機械学習 3.精度測定 6
  7. 7. 実現手法 1.画像認識の流れとアルゴリズム 2.認識のための機械学習 3.精度測定 7
  8. 8. 画像認識の流れ 前処理 • 画像から特徴を取得しやすくするための加工 特徴抽出 • 画像から特徴を抽出する 認識 • 特徴量比較による認識 8
  9. 9. 画像認識のアルゴリズム1 • 解像度に注意。目的の物体を認識するのに、適した解像度は実験して 決める。 • 目的の物体 や 特徴抽出で使用するアルゴリズムによって、前処理を変え る。 9 前処理 • 画像から特徴を取得しやすくするための加工
  10. 10. 画像認識のアルゴリズム1 例 • グレースケール(輝度のみで表現)→ 軽くする • Gaussian(平滑化) → ぼかす(悪いことではない) 10
  11. 11. 画像認識のアルゴリズム2 • 色や全体の位置関係が画像によって変化するなら、ロバストな局所特徴量を使 う • 有名なSIFT、SURF • 最近だとORB、FREAK(速い) • これからやるんだったら、特許の問題もあるので、ORB とか FREAK が簡単 11 特徴抽出 • 画像から特徴を抽出する
  12. 12. 画像認識のアルゴリズム2 ORB 12 小さい範囲からたくさんとる = 局所特徴量
  13. 13. 画像認識のアルゴリズム2 ORB 13 マッチした 特徴点同士を線 結んだ表現 がよく使われる
  14. 14. 違う本だと 14 当然、マッチする点 は少なくなる。 そのため、 分類できる。
  15. 15. 画像認識のアルゴリズム3 • 抽出した特徴量を比較する処理 • まずはブルートフォース(総当り)でやってみる • そのあと、大規模な検索だったら、近似最近傍探索をやる 15 認識 • 特徴量比較による認識
  16. 16. ブルートフォースでやることの難しさ 16 DBには、32byteのベクトルが数十万個 入る。これと画像を毎回比較したら とても時間がかかるので、近似最近傍探索やりましょう。
  17. 17. 近似最近傍探索 17 ここは個人的にまだあまり うまくいってません。 FLANN - Fast Library for Approximate Nearest Neighbors(k-近傍探索) で実施していますが、 データがそこそこないと精度が出ない…。 もっと改善したら発表したい…。
  18. 18. 実現手法 1.画像認識の流れとアルゴリズム 2.認識のための機械学習 3.精度測定 18
  19. 19. 認識のための機械学習 正解 の抽出 N 1 … 19 学習したフィルター 学習済み フィルターを 使用して、 ただ 1 つの正解 を抽出する まずはAda-Boostで行った。 理由は割りと少ない事例 で動く。 どんなものかというと…
  20. 20. Ada-Boost 20 • 2 クラスの分類アルゴリズム。 • 教師有り学習。 • デジカメなどの 顔認識 への利用が有名。
  21. 21. Ada-Boostの学習 弱識別器 3 弱識 別器2 弱識 別器1 21 強識別器 今回は幾何学情報を学習した
  22. 22. Ada-Boostの分類サンプル 22 一様に分布した点 のうち、青い点を 正事例サンプル として学習
  23. 23. Ada-Boostの分類サンプル 23 特徴量にxとy それぞれの 大小関係のみ使って、 50個の弱識別器を作成 新しいサンプル事例を分類すると
  24. 24. Ada-Boostの分類サンプル 24 結構きれいに 分類出来る (XOR難しい)
  25. 25. Ada-Boostでフィルターをつくる 25 クエリ画像 抽出した正解画像 3000個の事例作成 ・ ・ ・ 正事例 正事例 負事例 正事例
  26. 26. Ada-Boost 注意した点 • 過学習は起こりづらいはずだが、事例を説明しきってしまっていないか注意 する。 • 特徴の次元を増やしすぎない • そのために、実験手法を正しくする • これらを守っても、弱点はある。 26
  27. 27. Ada-Boostの弱点 • ノイズの影響を受けやすい • 複雑な分類はできない • サンプルのように急に傾向が異なる結果があると分類を間違う(A ∧ B) 別の手法を使う • Random-forest でやってみた 27 A B
  28. 28. Random-Forest • ランダムにサンプリングしたデータから、2分木をたくさん作って投票するアル ゴリズム。多クラス問題に対応できる 28 末端ノードに分類結果を持つ たくさん木をつくる
  29. 29. Random-Forest の 投票 29 投票箱
  30. 30. Random-Forest 注意した点 • ランダムに取得した分岐条件で、うまく分離できなければ 枝の成長をとめてよい。ランダムシードを実装しておくと良い。 • 過学習に注意し、事例の数を少なくとも数万レベルで用意する 30 うまく出来ると、とても精度良いです
  31. 31. Random-Forest 分類サンプル 31 Ada-Boostと 同じ教師で、 どのくらい分類 できるのか? ※サンプル数は増やした
  32. 32. Random-Forest 分類サンプル 32 特徴量にxとy それぞれの 大小関係のみ使って、 50個の木を作成 新しいサンプル事例を分類すると
  33. 33. Random-Forest 分類サンプル 33 きわどいところまで分 類できている。 (XOR大丈夫) Random-Forest フィルター、良い感じ。
  34. 34. 34 近似探索でざっくり分類した後 識の誤りを救う目的で、機械学習を 使っています。 本当に救えているのか? 精度をちゃんと測定しましょう。
  35. 35. 実現手法 1.画像認識の流れとアルゴリズム 2.認識のための機械学習 3.精度測定 35
  36. 36. 性能評価(精度測定) • 導入には精度が必須 • そのための基礎的な概念 36 正事例 True positive (正しく正解を抽出) True Negative (正しく不正解に抽出) 負事例 False Positive (間違って正解を抽出) False Negative (間違って不正解を抽出)
  37. 37. 性能評価 2 37 • データセット(クエリと正解 もしくは 不正解)を準備する。 • データセットを使って、精度が測定できるモジュールを作る。 負荷テストの出力を使うと効率が良かった。
  38. 38. 性能評価 3 38 正解を増やす再現率 間違いを減らす適合率 再現率と適合率の傾向を表すF値 再現率(recall) = true positive / ( true positive + false negative ) 適合率(precision) = true positive / (true positive + true negative) F値(F measure) = 2 / ( 1 / Recall + 1 / Precision )
  39. 39. 性能評価 実例 ・1 つのクエリに対する正解が 1 つ。間違った答えは極力返さない。 ・1つのクエリに対するして、たくさんの候補をユーザに提供する。 重視したいことに合わせて、F 値 を算出する関数を変えて、F 値を見てもよ い。 39
  40. 40. F値の使い方が良くない例 40 しっかり値を見ないと、 分類がうまくいかないことも。 極端だが、再現率を適合率の 100倍重視した例。 誤分類だらけ。
  41. 41. 実現手法 1.画像認識の流れとアルゴリズム 2.認識のための機械学習 3.精度測定 おまけ. 機械学習を勉強するにあたってお世話に なったデータ 41
  42. 42. 実験用画像セット • 以下に充実しています。 MIT が提供する画像データを使ってみます。 これはデータセットをどんな風に用意するのかを勉強することも出来ます。 http://cbcl.mit.edu/software-datasets/ 他には以下のようなデータセットもあります。 http://vasc.ri.cmu.edu/idb/html/car/index.html http://www.vision.caltech.edu/html-files/archive.html http://iris.usc.edu/Vision- Users/OldUsers/bowu/DatasetWebpage/dataset.html 42
  43. 43. OpenCV • http://opencv.org/ • 実装はここでコード見て、ずいぶん学ぶことができました。 43
  44. 44. これから • 画像認識を使ったサービスは開始できた。これから先は、 • 音声を使ったら… • 文字認識は… • ユーザのデータから新しい学習の傾向を探す… •新しい技術で乗り込むチャンス。 44 なので
  45. 45. SPRIXでは、仲間を募集しています。 • 世界初のサービスをつくるため、研究~設計~実装までやれます。 • 研究機関、個人、ベンチャー、大学関係の皆様、共同研究の費用 出ます。 • 画像認識に限らず、テキストマイニング、文字認識、AI …など、研究 を現実的なサービスに取り入れるチャンス。 • 連絡があればいつでも会えます。 45 どんなことやれるの?
  46. 46. 連絡先 •Twitter @masazdream •会社 46
  47. 47. SPRIXでは IT×教育サービス を どんどん実現します。 以上です、ありがとうございました。 47

×