画像処理と機械学習のメモ

髪久々に染めたらDQNになりました、寒色系の黄色にしたらこのざま

そんなことはどうでもよくて

今回は機械学習とかデータマイニングは画像処理分野でも重要視されているっていうのは画像処理歴1年の新米ペーペーの僕にも少しは感じ取れるところがありましたので勉強

たとえば参考にさせてもらったデータマイニングで使われるトップ10アルゴリズム - おしゃスタ統計 〜統計学・機械学習・AI〜でも述べられているようなk-means,SVM,EMアルゴリズム,AdaBoostなんていうのはパターン認識の分野で「画像内にどんな物体があるのか?」を判別するときに使われる事が多いです。
簡単に言えば、「どんなものか?どんな画像か?」というのを数式とか関数とかで定義してあげて、それに当てはまる画像内の領域を見つけ出すイメージです。
それで今回ちょっと興味がわいたのでそれぞれ機械学習アルゴリズムとか簡単にまとめてみたお

K-means

means(平均)法はk個のクラスタ(集合体)に分類して平均を用いる方法。このkはシーンによって適切に最適化とか使って求められることが多い。
特徴量などをある条件から自動的に抽出して画像分類などを行う教師なし分類の一種です。
画像処理では画像領域の分類や減色処理に用いられる。
このクラスタリングを行う手法として

  • 階層的にクラスタを結合する
  • 自己組織化マップを用いる

のどちらかを用いる。

画像処理におけるアルゴリズムを簡単に説明すると

  1. 画像から色情報を基にした何次元かの空間内で対象領域を点集合で表す
  2. それぞれの点にランダムにクラスタを割り当てる(たとえば背景からの抽出がしたかったら「背景」と「非背景」)
  3. クラスタの重心を計算
  4. 点のクラスタを一番近い重心のクラスタに変更
  5. 変化がなければ終了、そうでなければ繰り返す

応用例としてはK-mean trackerとか動体追跡の分野で使われますね。

参考資料:
クラスタリングの定番アルゴリズム「K-means法」をビジュアライズしてみた - てっく煮ブログ 跡地
opencv.jp - OpenCV: その他の関数(Miscellaneous Functions)サンプルコード -

SVM(サポートベクタマシン)

一番有名らしい。
与えられた学習データ(主に識別対象の画像であるかないか)を取得しておいて、その情報を基に「対象であるか?そうではないか?」を判別する判別機。
これも色情報などを基に座標空間でこっからこっちは正解でこっちはちがうぜ!って計算するっていうのが簡単な説明だと思う。

wikiから持ってきた上記画像ではH2が黒点と白点を分けています。
個の線引きをしてくれるのがSVMなんです。
参考資料:
http://www.neuro.sfc.keio.ac.jp/~masato/study/SVM/index.htm

EMアルゴリズム

混合分布に使う。複雑。以上。

いやダメか

多項分布の確率モデルの基本らしいけど難しい。
それぞれのモデルで定義される尤度を最大化するパラメータ推定値を計算する最尤推定で使うアルゴリズム。名前の通りE(Exception)M(Maximization)の2ステップで求める。調べたけど難しいぜ、画像修復とか不完全データがあるから取り入れやすいんだと思う。

AdaBoost

これは研究で使いたいので次回。


参考文献:
http://d.hatena.ne.jp/nokuno/20111006/1317853653
http://vrl.sys.wakayama-u.ac.jp/PRA/WPR-8.pdf