機械学習勉強会 資料
-
Upload
kivantium -
Category
Technology
-
view
351 -
download
6
Transcript of 機械学習勉強会 資料
機械学習勉強会資料〜機械学習で遊ぼう!〜
@kivantium
誤った記述が含まれる可能性があります嘘を嘘と見抜ける人のみ閲覧してください
機械学習の流れ
前処理 結果
元データ
特徴抽出 学習器
この部分は共通!ここをうまくやれば
前処理と特徴抽出
前処理 結果
元データ
特徴抽出 学習器
特徴抽出の方法はデータによっていろいろ
● 画像: SURF・SIFT・HOG・LBP● 音声: MFCC● テキスト: n-gram・TF-IDF
特徴量が取れさえすれば同じような仕組みで分類できるよね!
ご注文は機械学習ですか?
● 去年書いたプログラム● ニューラルネットワークを使ってみたかった● 顔検出プログラムは転がっていた
→顔部分だけについて分類してみよう!
● 特徴量は64色に減色したピクセルの色割合
● 詳細は「ご注文は機械学習ですか?」で検索(kivantium.hateblo.jp/entry/2014/11/25/230658)
ご注文は機械学習ですか?
www.nicovideo.jp/watch/sm24999950
作成した動画
ご注文は機械学習ですか?を支える技術
● LBP特徴+Adaboostによる顔検出
● 顔画像からの特徴抽出
● 多層パーセプトロンによる分類
● OpenCVによる描画
顔検出の流れ(1)
● 与えられた画像を順番に切り出す
顔検出の流れ(2)
● 学習器で顔かどうかチェック
学習器 顔じゃないよ
学習器 顔だよ
顔検出の流れ(3)
● 同じことを大きさを変えて行い平均を取る
顔検出器の学習
● 大量の顔画像候補をさばくために高速に判断したい● 多くは非顔画像→最初は雑に調べてあとからじっくり
● 上流ほど判断が緩い(高速)● 各検出器はAdaboostで構成
検出器1 検出器2 検出器3 顔!
顔ではない 顔ではない顔ではない
Adaboost
● 弱い検出器を組み合わせて強い検出器を作る● 正解率が高い検出器に票を多く与えた投票形式
● Haar-Like特徴(黒部分の和-白部分の和)で1位・2位になった特徴
● この組み合わせ方を決めるアルゴリズムがAdaboost
Adaboostのイメージ(1)
分類器2分類器1 分類器3
結果
顔 顔 not 顔
顔です● 複数の分類器が学習● 最初は平等な多数決
Adaboostのイメージ(2)
分類木2分類木1 分類木3
結果
● 正解した分類器の票数を増やす
● 間違えた分類器の票数を減らす
Adaboostのイメージ(3)
分類木2分類木1 分類木3
結果
● 正解しなかった画像については重要度を上げる
顔not 顔顔
顔
Adaboostのイメージ(4)
分類木2分類木1 分類木3
結果
● 前回調べた重要度に応じて再び学習
● 新しい分類器の性能に応じて重みも更新
not 顔顔not 顔
not 顔
Haar-Like特徴(1)
● 黒部分の画素値の和-白部分の画素値の和
http://download-soft2014.org/2015/03/28/opencv-haar-cascade-xml/
Haar-Like特徴(2)
● 目の近くは暗いなどといった大まかな特徴が分かる
Viola and Jones (2003) "Robust Real-Time Face Detection"
LBP特徴(1)
● 8近傍の画素値が中心より大きいか小さいかを2進数表示
Jo Chang-yeon (2008) Face Detection using LBP features
LBP特徴(2)
● 顔画像を分割してLBP特徴の値でヒストグラム● 各ヒストグラムが弱分類器の1つになる● Haar-Like特徴より速い!
Jo Chang-yeon (2008) Face Detection using LBP features
学習データの用意
● こうして得た顔検出器で顔画像を動画から大量に取得
特徴量抽出
● 色の分布だけ見れば分類できそう● 色が256^3=16777216通りあるから64色に減色● 各色のピクセル数の割合を特徴量に
多層パーセプトロンの学習
● 64次元ベクトルを多層パーセプトロンに入れて学習
OpenCVによる描画
● 顔を検出→識別器の結果に応じて色選択→枠をつける
誤検出の例
● 色の割合しか見ていないので当然誤検出が起こる
DeepLearning版
● DeepLearningというのがすごいらしい
Deep Learningでラブライブ!キャラを識別するhttp://christina.hatenablog.com/entry/2015/01/23/212541
とりあえず作った
ご注文はDeep Learningですか?http://www.nicovideo.jp/watch/sm25618673
多層パーセプトロン版との変更点
● 識別器がCaffeというライブラリに変わっただけ● 特徴量とか考えずに画像を渡したら識別してくれる● ブラックボックスとして使えた● 精度も向上した● 詳細は「ご注文はDeep Learningですか?」
(http://kivantium.hateblo.jp/entry/2015/02/20/214909)
もっと機械学習やりたい!
● 特徴量さえ取れれば機械学習は同じ!
● アニメで映像と並んで重要なのはなんだろう?● 音楽やりたくない??
メル周波数ケプストラム(MFCC)
● 音声認識によく使われる特徴量(というか他に知らない)
● 離散フーリエ変換で振幅スペクトルを求める● 振幅スペクトルにメルフィルタバンクをかけて圧縮する● 離散コサイン変換する● 得られたケプストラムの低次成分がMFCC
離散フーリエ変換
● 周波数解析の手法
http://markun.cs.shinshu-u.ac.jp/kiso/projects/thesis/master/1999_tawara.htm
メル尺度
● 周波数を人間が認識している形式に変換
http://shower.human.waseda.ac.jp/~m-kouki/pukiwiki_public/66.html
離散コサイン変換
● 離散信号を周波数領域へ変換する方法らしい(まだ理解していない)
● 20次元の信号に変換して低周波数の12次元を取ればMFCCの出来上がり!
やったこと
● Daydream café(ごちうさのオープニングテーマ)を認識する「第27羽 こころぴょんぴょんイントロクイズ」(kivantium.hateblo.jp/entry/2014/12/26/213153)
● イントロ部分を切り出してMFCCを取ったものを多層パーセプトロンに放り込んだら一応認識できた
● イントロ以外の部分を入れたら全然ダメ
● 「この曲っぽさ」を表す特徴量が必要そう● 現在調査中
まとめ
前処理 結果
元データ
特徴抽出 学習器
この部分は共通!ここをうまくやれば
● 前処理と特徴抽出を頑張れば何でも機械学習で扱えるはず!● ブラックボックスでいいから機械学習で遊んで見よう!● 何でもいいからネタを作って公表するといいことがあるよ!