顔認識アルゴリズム:constrained local model を調べてみた

Post on 12-Apr-2017

176 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Constrained Local Model (CLM) SurveyJotaro Shigeyama (@JotaroUT)

Constrained Local Model : CLM

CLM : 顔部位検出のためのアルゴリズム

CVの ObjectDetectorなどと組み合わせて用い、顔部位検出が可能

リアルタイム性が良く、多くのフレームワークにソースが公開

openFrameworks Processing javascipt webgl……...

Xiaoguang Yan,Constraint Local Model for Face Alignment, Tutorial

Cristinacce et.al. Feature Detection and Tracking with Constrained Local Models 2006

CLM Pipeline

CLM Modelモデルは 2つに分かれている

顔の特徴点モデル(形状モデル

特徴点周辺の画像モデル(パッチモデル

CLMではこの2つのモデルの情報を統合して効率的に顔部位検出を行う

→モデルがなければ検出できない

→モデル構築の話から

CLM Architecture

CLM Architecture

CLM Model Building

顔画像とその顔に予め決められた位置にプロットされた特徴点の学習データを大量に用意する。(手作業)

CLMのモデルでは次のデータを学習する

特徴点の変形に関する情報

特徴点周りの顔画像の特性に関する情報

・・・

特徴点に関する情報

特徴点は60 (=N)点用意

→120次元のベクトルを用意できる

すべての学習データ (=M)に対してベクトルを集め、並べた行列を構成する

*追記:ベクトルはすべて平均値で引いておく

特徴点の主成分分析 (PCA)

顔の特徴点は顔の向きや姿勢・表情筋の変位によって変形する

しかしながら人間顔の変形の仕方はある程度パターンが有るはず・・・

→主成分分析でパターンを割り出したものをデータとしてとっておく

先ほどの行列 Xに対して、特異値を算出するが、 XTXの非ゼロ固有値が特異値の二乗になることを利用する。

固有値は降順にソートし、対応する固有値・固有ベクトル K個を用いることにする。 (Pは KxN行列に圧縮される。 bは固有顔の寄与率ベクトル)

Point Distribution Modelの構成

先ほどの式をさらに一般化する

→与えられた特徴量 顔の姿勢・位置・スケール・変形の情報を含む

PDMはこの特徴量を定式化したもの(よく論文に出てくる)

s,R,t : 剛体運動に関するパラメータ

b : → →非剛体運動 つまり表情パラメータ CLMで注目

特徴点周りの画像データ

特徴点周りの画像はある程度決まっているはず

「目頭の特徴点周りの画像は『目頭っぽい』画像をしているはずだ」

→人間顔に普遍的な点周辺の輝度情報があれば、顔・非顔判定ができる

SVMで顔・非顔トレーニングセットについて学習

wは顔画像データ xのフィルタ画像になっている

→Patch Expertsと呼ばれる判定用フィルタ

テンプレートマッチングのようにして使う

各特徴点周りについて学習させる

CLM Architecture

探索ステップ:

Viola−Johnes法で顔の位置を探索( OpenCVと同じ)

この時はまだ顔の大雑把な位置しかわからない

顔の位置・目の位置

最近は dlibの facedetectionを使う

顔部位の初期推定値を求める

平均顔を使う

目の位置から姿勢・拡大縮小

探索ステップ: SVMフィルタ

特徴点周辺を、 Patch-expertsよりも大きめにクロップする

Patch-expertsでクロップ画像のテンプレートマッチングをする

テンプレートマッチングした結果高スコアだった箇所をフィルタリング

結果を Response imageとする

その後二変数二次関数にフィッティングする

なぜ二変数二次関数なのかはのちほど

探索ステップ:最適化関数

次の評価関数が最大となる特徴点ベクトル xを求める

r:二次関数にフィッティング済みの Response Image

b,λ:PCAで求めた変形寄与率と固有値

β:ハイパーパラメータ

探索ステップ:最適化関数

r(二次関数にフィッティング済 )と bは二次形式に記述可能

探索ステップ:最適化関数

第一項・二項は「 Response Imageの値」

第三項は「 PCAから予め得られた変形度合いからの離れ具合」

→顔部位画像のマッチング+顔部位変形の特性を融合して探索できる

探索ステップ:最適化関数

第三項の最小値・最大値を設定しておく(過度な変形を防ぐため)

どこかでみたことが・・・

matlabの documentationを覗く

[二次計画法 ] http://jp.mathworks.com/help/optim/ug/quadprog.html

探索ステップ:最適化関数

実は二次計画法問題に帰結している

C++の Quadprog++などをつかえば内点法で比較的早く解いてくれる

NP-hard → NP

’この関数の最大 x’が、次の特徴点の候補

収束するまで探索ステップを繰り返す

あとがき

ここで上げた評価関数やフィッティング問題はごく一例

凸関数なら別にカーネルはガウシアンでもよかったりする

当然評価関数の書き方は異なってくる

学習する特徴量の組み合わせ

SVMだけじゃなく HOG特徴量とか

CLMを皮切りに多くの手法が開発されることとなる

CLNFはパッチエキスパートの学習がニューラルネットワークになってる

PDMの確率推定(評価関数の対数尤度最大化)手法もある

評価関数の数理計画法から統計モデリング・ベイジアンアプローチへ

top related