47
コンピュータビジョンと機械学習 徹底入門 現実的な画像検索のためにやってきたこと 28 # TokyoWebmining

20130727 cv machine_learning@tokyo webmining

Embed Size (px)

DESCRIPTION

コンピュータビジョン&機械学習の入門的な内容について ※事例のランダムサンプリングを追加:修正 ※再現率、適合率の名称逆だったので入れ替え:修正

Citation preview

Page 1: 20130727 cv machine_learning@tokyo webmining

コンピュータビジョンと機械学習徹底入門現実的な画像検索のためにやってきたこと

第28回#TokyoWebmining

Page 2: 20130727 cv machine_learning@tokyo webmining

自己紹介

• 教育×IT の社内ベンチャー(メンバーは全員プロジェクトのために集まっ

た。)世界No.1の新しい教育サービスを実現したい。

担当

• 画像の認識

• 動画のトランスコード

• 認識の精度、サービスの精度を高めるための機械学習

2

でも、まだ始めてから半年強くらい。まだまだ未開の道が続く。

個人的には、半年前まで割と変わったことをしてました…

Page 3: 20130727 cv machine_learning@tokyo webmining

バックグラウンド

• 大学は数学専攻ですが…

• 前職は主にヴォイストレーナー。歌や楽器演奏。TVも少し。

←「○っとけないよ」のもといろいろ仕事

3

Page 4: 20130727 cv machine_learning@tokyo webmining

画像認識(特定物体認識)

4

正解を抽出

ユーザに役立つ情報を送信

Page 5: 20130727 cv machine_learning@tokyo webmining

どんなことに使えるの?

• バーコードの代わりに画像が使える

• ポスターを写真に取るだけで、スマホに情報が届く

• 食べ物を撮影して、カロリー情報を知る

5

Page 6: 20130727 cv machine_learning@tokyo webmining

実現手法

1.画像認識の流れとアルゴリズム

2.認識のための機械学習

3.精度測定

6

Page 7: 20130727 cv machine_learning@tokyo webmining

実現手法

1.画像認識の流れとアルゴリズム

2.認識のための機械学習

3.精度測定

7

Page 8: 20130727 cv machine_learning@tokyo webmining

画像認識の流れ

前処理• 画像から特徴を取得しやすくするための加工

特徴抽出• 画像から特徴を抽出する

認識• 特徴量比較による認識

8

Page 9: 20130727 cv machine_learning@tokyo webmining

画像認識のアルゴリズム1

• 解像度に注意。目的の物体を認識するのに、適した解像度は実験して決める。

• 目的の物体 や 特徴抽出で使用するアルゴリズムによって、前処理を変える。

9

前処理• 画像から特徴を取得しやすくするための加工

Page 10: 20130727 cv machine_learning@tokyo webmining

画像認識のアルゴリズム1 例

• グレースケール(輝度のみで表現)→ 軽くする

• Gaussian(平滑化) → ぼかす(悪いことではない)

10

Page 11: 20130727 cv machine_learning@tokyo webmining

画像認識のアルゴリズム2

• 色や全体の位置関係が画像によって変化するなら、ロバストな局所特徴量を使う

• 有名なSIFT、SURF

• 最近だとORB、FREAK(速い)

• これからやるんだったら、特許の問題もあるので、ORB とか FREAK が簡単

11

特徴抽出• 画像から特徴を抽出する

Page 12: 20130727 cv machine_learning@tokyo webmining

画像認識のアルゴリズム2 ORB

12

小さい範囲からたくさんとる= 局所特徴量

Page 13: 20130727 cv machine_learning@tokyo webmining

画像認識のアルゴリズム2 ORB

13

マッチした

特徴点同士を線結んだ表現がよく使われる

Page 14: 20130727 cv machine_learning@tokyo webmining

違う本だと

14

当然、マッチする点は少なくなる。そのため、分類できる。

Page 15: 20130727 cv machine_learning@tokyo webmining

画像認識のアルゴリズム3

• 抽出した特徴量を比較する処理

• まずはブルートフォース(総当り)でやってみる

• そのあと、大規模な検索だったら、近似最近傍探索をやる

15

認識• 特徴量比較による認識

Page 16: 20130727 cv machine_learning@tokyo webmining

ブルートフォースでやることの難しさ

16

DBには、32byteのベクトルが数十万個入る。これと画像を毎回比較したら

とても時間がかかるので、近似最近傍探索やりましょう。

Page 17: 20130727 cv machine_learning@tokyo webmining

近似最近傍探索

17

ここは個人的にまだあまりうまくいってません。

FLANN - Fast Library for Approximate Nearest Neighbors(k-近傍探索)で実施していますが、

データがそこそこないと精度が出ない…。もっと改善したら発表したい…。

Page 18: 20130727 cv machine_learning@tokyo webmining

実現手法

1.画像認識の流れとアルゴリズム

2.認識のための機械学習

3.精度測定

18

Page 19: 20130727 cv machine_learning@tokyo webmining

認識のための機械学習

正解の抽出

N

1 …

19

学習したフィルター

学習済み

フィルターを

使用して、

ただ 1 つの正解を抽出する

まずはAda-Boostで行った。

理由は割りと少ない事例で動く。

どんなものかというと…

Page 20: 20130727 cv machine_learning@tokyo webmining

Ada-Boost

20

• 2 クラスの分類アルゴリズム。

• 教師有り学習。

• デジカメなどの 顔認識 への利用が有名。

Page 21: 20130727 cv machine_learning@tokyo webmining

Ada-Boostの学習

弱識別器3

弱識別器2

弱識別器1

21

強識別器

今回は幾何学情報を学習した

Page 22: 20130727 cv machine_learning@tokyo webmining

Ada-Boostの分類サンプル

22

一様に分布した点のうち、青い点を正事例サンプルとして学習

Page 23: 20130727 cv machine_learning@tokyo webmining

Ada-Boostの分類サンプル

23

特徴量にxとyそれぞれの

大小関係のみ使って、50個の弱識別器を作成

新しいサンプル事例を分類すると

Page 24: 20130727 cv machine_learning@tokyo webmining

Ada-Boostの分類サンプル

24

結構きれいに分類出来る

(XOR難しい)

Page 25: 20130727 cv machine_learning@tokyo webmining

Ada-Boostでフィルターをつくる

25

クエリ画像

抽出した正解画像

3000個の事例作成・・・

正事例

正事例

負事例

正事例

Page 26: 20130727 cv machine_learning@tokyo webmining

Ada-Boost 注意した点

• 過学習は起こりづらいはずだが、事例を説明しきってしまっていないか注意する。

• 特徴の次元を増やしすぎない

• そのために、実験手法を正しくする

• これらを守っても、弱点はある。

26

Page 27: 20130727 cv machine_learning@tokyo webmining

Ada-Boostの弱点

• ノイズの影響を受けやすい

• 複雑な分類はできない

• サンプルのように急に傾向が異なる結果があると分類を間違う(A ∧ B)

別の手法を使う

• Random-forest でやってみた

27

A B

Page 28: 20130727 cv machine_learning@tokyo webmining

Random-Forest

• ランダムにサンプリングしたデータから、2分木をたくさん作って投票するアルゴリズム。多クラス問題に対応できる

28末端ノードに分類結果を持つ

たくさん木をつくる

Page 29: 20130727 cv machine_learning@tokyo webmining

Random-Forest の 投票

29

投票箱

Page 30: 20130727 cv machine_learning@tokyo webmining

Random-Forest 注意した点

• ランダムに取得した分岐条件で、うまく分離できなければ

枝の成長をとめてよい。ランダムシードを実装しておくと良い。

• 過学習に注意し、事例の数を少なくとも数万レベルで用意する

30

うまく出来ると、とても精度良いです

Page 31: 20130727 cv machine_learning@tokyo webmining

Random-Forest 分類サンプル

31

Ada-Boostと同じ教師で、どのくらい分類できるのか?

※サンプル数は増やした

Page 32: 20130727 cv machine_learning@tokyo webmining

Random-Forest 分類サンプル

32

特徴量にxとyそれぞれの

大小関係のみ使って、50個の木を作成

新しいサンプル事例を分類すると

Page 33: 20130727 cv machine_learning@tokyo webmining

Random-Forest 分類サンプル

33

きわどいところまで分類できている。

(XOR大丈夫)Random-Forest

フィルター、良い感じ。

Page 34: 20130727 cv machine_learning@tokyo webmining

34

近似探索でざっくり分類した後識の誤りを救う目的で、機械学習を

使っています。本当に救えているのか?

精度をちゃんと測定しましょう。

Page 35: 20130727 cv machine_learning@tokyo webmining

実現手法

1.画像認識の流れとアルゴリズム

2.認識のための機械学習

3.精度測定

35

Page 36: 20130727 cv machine_learning@tokyo webmining

性能評価(精度測定)

• 導入には精度が必須

• そのための基礎的な概念

36

正事例

True positive

(正しく正解を抽出)

True

Negative

(正しく不正解に抽出)

負事例False

Positive

(間違って正解を抽出)

False

Negative

(間違って不正解を抽出)

Page 37: 20130727 cv machine_learning@tokyo webmining

性能評価 2

37

• データセット(クエリと正解 もしくは 不正解)を準備する。

• データセットを使って、精度が測定できるモジュールを作る。

負荷テストの出力を使うと効率が良かった。

Page 38: 20130727 cv machine_learning@tokyo webmining

性能評価 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 )

Page 39: 20130727 cv machine_learning@tokyo webmining

性能評価 実例

・1 つのクエリに対する正解が 1 つ。間違った答えは極力返さない。

・1つのクエリに対するして、たくさんの候補をユーザに提供する。

重視したいことに合わせて、F 値 を算出する関数を変えて、F 値を見てもよい。

39

Page 40: 20130727 cv machine_learning@tokyo webmining

F値の使い方が良くない例

40

しっかり値を見ないと、分類がうまくいかないことも。極端だが、再現率を適合率の

100倍重視した例。誤分類だらけ。

Page 41: 20130727 cv machine_learning@tokyo webmining

実現手法

1.画像認識の流れとアルゴリズム

2.認識のための機械学習

3.精度測定

おまけ. 機械学習を勉強するにあたってお世話になったデータ

41

Page 42: 20130727 cv machine_learning@tokyo webmining

実験用画像セット• 以下に充実しています。

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

Page 43: 20130727 cv machine_learning@tokyo webmining

OpenCV

• http://opencv.org/

• 実装はここでコード見て、ずいぶん学ぶことができました。

43

Page 44: 20130727 cv machine_learning@tokyo webmining

これから

• 画像認識を使ったサービスは開始できた。これから先は、

• 音声を使ったら…

• 文字認識は…

• ユーザのデータから新しい学習の傾向を探す…

•新しい技術で乗り込むチャンス。

44

なので

Page 45: 20130727 cv machine_learning@tokyo webmining

SPRIXでは、仲間を募集しています。

• 世界初のサービスをつくるため、研究~設計~実装までやれます。

• 研究機関、個人、ベンチャー、大学関係の皆様、共同研究の費用出ます。

• 画像認識に限らず、テキストマイニング、文字認識、AI …など、研究を現実的なサービスに取り入れるチャンス。

• 連絡があればいつでも会えます。

45

どんなことやれるの?

Page 46: 20130727 cv machine_learning@tokyo webmining

連絡先

•Twitter

@masazdream

•会社

46

Page 47: 20130727 cv machine_learning@tokyo webmining

SPRIXでは IT×教育サービス を

どんどん実現します。

以上です、ありがとうございました。

47