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

20130727 cv machine_learning@tokyo webmining

14,322 views

Published on

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

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

Published in: Technology
  • Be the first to comment

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

×