コンピュータビジョンと機械学習
徹底入門
現実的な画像検索のためにやってきたこと
第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

12,141

Published on

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

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

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

No Downloads
Views
Total Views
12,141
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
79
Comments
0
Likes
26
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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×