機械学習勉強会 資料

34
機械学習勉強会資料 〜機械学習で遊ぼう!〜 @kivantium 誤った記述が含まれる可能性があります 嘘を嘘と見抜ける人のみ閲覧してください

Transcript of 機械学習勉強会 資料

Page 1: 機械学習勉強会 資料

機械学習勉強会資料〜機械学習で遊ぼう!〜

@kivantium

誤った記述が含まれる可能性があります嘘を嘘と見抜ける人のみ閲覧してください

Page 2: 機械学習勉強会 資料

機械学習の流れ

前処理 結果

元データ

特徴抽出 学習器

この部分は共通!ここをうまくやれば

Page 3: 機械学習勉強会 資料

前処理と特徴抽出

前処理 結果

元データ

特徴抽出 学習器

特徴抽出の方法はデータによっていろいろ

● 画像: SURF・SIFT・HOG・LBP● 音声: MFCC● テキスト: n-gram・TF-IDF

特徴量が取れさえすれば同じような仕組みで分類できるよね!

Page 4: 機械学習勉強会 資料

ご注文は機械学習ですか?

● 去年書いたプログラム● ニューラルネットワークを使ってみたかった● 顔検出プログラムは転がっていた

→顔部分だけについて分類してみよう!

● 特徴量は64色に減色したピクセルの色割合

● 詳細は「ご注文は機械学習ですか?」で検索(kivantium.hateblo.jp/entry/2014/11/25/230658)

Page 5: 機械学習勉強会 資料

ご注文は機械学習ですか?

www.nicovideo.jp/watch/sm24999950

作成した動画

Page 6: 機械学習勉強会 資料

ご注文は機械学習ですか?を支える技術

● LBP特徴+Adaboostによる顔検出

● 顔画像からの特徴抽出

● 多層パーセプトロンによる分類

● OpenCVによる描画

Page 7: 機械学習勉強会 資料

顔検出の流れ(1)

● 与えられた画像を順番に切り出す

Page 8: 機械学習勉強会 資料

顔検出の流れ(2)

● 学習器で顔かどうかチェック

学習器 顔じゃないよ

学習器 顔だよ

Page 9: 機械学習勉強会 資料

顔検出の流れ(3)

● 同じことを大きさを変えて行い平均を取る

Page 10: 機械学習勉強会 資料

顔検出器の学習

● 大量の顔画像候補をさばくために高速に判断したい● 多くは非顔画像→最初は雑に調べてあとからじっくり

● 上流ほど判断が緩い(高速)● 各検出器はAdaboostで構成

検出器1 検出器2 検出器3 顔!

顔ではない 顔ではない顔ではない

Page 11: 機械学習勉強会 資料

Adaboost

● 弱い検出器を組み合わせて強い検出器を作る● 正解率が高い検出器に票を多く与えた投票形式

● Haar-Like特徴(黒部分の和-白部分の和)で1位・2位になった特徴

● この組み合わせ方を決めるアルゴリズムがAdaboost

Page 12: 機械学習勉強会 資料

Adaboostのイメージ(1)

分類器2分類器1 分類器3

結果

顔 顔 not 顔

顔です● 複数の分類器が学習● 最初は平等な多数決

Page 13: 機械学習勉強会 資料

Adaboostのイメージ(2)

分類木2分類木1 分類木3

結果

● 正解した分類器の票数を増やす

● 間違えた分類器の票数を減らす

Page 14: 機械学習勉強会 資料

Adaboostのイメージ(3)

分類木2分類木1 分類木3

結果

● 正解しなかった画像については重要度を上げる

顔not 顔顔

Page 15: 機械学習勉強会 資料

Adaboostのイメージ(4)

分類木2分類木1 分類木3

結果

● 前回調べた重要度に応じて再び学習

● 新しい分類器の性能に応じて重みも更新

not 顔顔not 顔

not 顔

Page 16: 機械学習勉強会 資料

Haar-Like特徴(1)

● 黒部分の画素値の和-白部分の画素値の和

http://download-soft2014.org/2015/03/28/opencv-haar-cascade-xml/

Page 17: 機械学習勉強会 資料

Haar-Like特徴(2)

● 目の近くは暗いなどといった大まかな特徴が分かる

Viola and Jones (2003) "Robust Real-Time Face Detection"

Page 18: 機械学習勉強会 資料

LBP特徴(1)

● 8近傍の画素値が中心より大きいか小さいかを2進数表示

Jo Chang-yeon (2008) Face Detection using LBP features

Page 19: 機械学習勉強会 資料

LBP特徴(2)

● 顔画像を分割してLBP特徴の値でヒストグラム● 各ヒストグラムが弱分類器の1つになる● Haar-Like特徴より速い!

Jo Chang-yeon (2008) Face Detection using LBP features

Page 20: 機械学習勉強会 資料

学習データの用意

● こうして得た顔検出器で顔画像を動画から大量に取得

Page 21: 機械学習勉強会 資料

特徴量抽出

● 色の分布だけ見れば分類できそう● 色が256^3=16777216通りあるから64色に減色● 各色のピクセル数の割合を特徴量に

Page 22: 機械学習勉強会 資料

多層パーセプトロンの学習

● 64次元ベクトルを多層パーセプトロンに入れて学習

Page 23: 機械学習勉強会 資料

OpenCVによる描画

● 顔を検出→識別器の結果に応じて色選択→枠をつける

Page 24: 機械学習勉強会 資料

誤検出の例

● 色の割合しか見ていないので当然誤検出が起こる

Page 25: 機械学習勉強会 資料

DeepLearning版

● DeepLearningというのがすごいらしい

Deep Learningでラブライブ!キャラを識別するhttp://christina.hatenablog.com/entry/2015/01/23/212541

Page 26: 機械学習勉強会 資料

とりあえず作った

ご注文はDeep Learningですか?http://www.nicovideo.jp/watch/sm25618673

Page 27: 機械学習勉強会 資料

多層パーセプトロン版との変更点

● 識別器がCaffeというライブラリに変わっただけ● 特徴量とか考えずに画像を渡したら識別してくれる● ブラックボックスとして使えた● 精度も向上した● 詳細は「ご注文はDeep Learningですか?」

(http://kivantium.hateblo.jp/entry/2015/02/20/214909)

Page 28: 機械学習勉強会 資料

もっと機械学習やりたい!

● 特徴量さえ取れれば機械学習は同じ!

● アニメで映像と並んで重要なのはなんだろう?● 音楽やりたくない??

Page 29: 機械学習勉強会 資料

メル周波数ケプストラム(MFCC)

● 音声認識によく使われる特徴量(というか他に知らない)

● 離散フーリエ変換で振幅スペクトルを求める● 振幅スペクトルにメルフィルタバンクをかけて圧縮する● 離散コサイン変換する● 得られたケプストラムの低次成分がMFCC

Page 30: 機械学習勉強会 資料

離散フーリエ変換

● 周波数解析の手法

http://markun.cs.shinshu-u.ac.jp/kiso/projects/thesis/master/1999_tawara.htm

Page 31: 機械学習勉強会 資料

メル尺度

● 周波数を人間が認識している形式に変換

http://shower.human.waseda.ac.jp/~m-kouki/pukiwiki_public/66.html

Page 32: 機械学習勉強会 資料

離散コサイン変換

● 離散信号を周波数領域へ変換する方法らしい(まだ理解していない)

● 20次元の信号に変換して低周波数の12次元を取ればMFCCの出来上がり!

Page 33: 機械学習勉強会 資料

やったこと

● Daydream café(ごちうさのオープニングテーマ)を認識する「第27羽 こころぴょんぴょんイントロクイズ」(kivantium.hateblo.jp/entry/2014/12/26/213153)

● イントロ部分を切り出してMFCCを取ったものを多層パーセプトロンに放り込んだら一応認識できた

● イントロ以外の部分を入れたら全然ダメ

● 「この曲っぽさ」を表す特徴量が必要そう● 現在調査中

Page 34: 機械学習勉強会 資料

まとめ

前処理 結果

元データ

特徴抽出 学習器

この部分は共通!ここをうまくやれば

● 前処理と特徴抽出を頑張れば何でも機械学習で扱えるはず!● ブラックボックスでいいから機械学習で遊んで見よう!● 何でもいいからネタを作って公表するといいことがあるよ!