輪講用資料「deep convolutional network cascade for facial point detection」

24
Deep Convolutional Network Cascade for Facial Point Detection 輪講用資料 長崎県立大学 国際情報学研究科情報メディア専攻 M2215001 片渕 小夜

Upload: saya-katafuchi

Post on 12-Apr-2017

753 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

Deep Convolutional

Network Cascade for

Facial Point Detection輪講用資料

長崎県立大学 国際情報学研究科情報メディア専攻

M2215001

片渕小夜

Page 2: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

目次

1. 研究背景

2. 従来手法

3. 提案手法

1. ネットワークの概要

2. Level1

3. Level2,Level3

4. CNNの構造

5. 学習を洗練させるために

6. 顔パーツの位置推定

4. CNN

4. 畳み込み層

5. プーリング層

6. 全結合層

5. ネットワーク構成図

6. 実験

1. 実験概要

2. 精度評価式

3. ネットワーク別の精度比較

4. カスケード接続の検証

5. 従来手法との精度比較

6. 最終の比較結果

7. まとめ

Page 3: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

研究背景

現在広く使用されている顔認識システム

• 真顔で• 十分な照明の元でなど,厳格に定められた条件下で撮影・認識している

• 極端な表情でもきちんと認識できる• 照明に対しロバスト性のある• より柔軟な環境下でも十分に成果の出せる顔認識システムが求められている

Page 4: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

従来手法

1.顔のパーツの局所特徴量を得る方法

• 画像によっては特徴量が十分に得られないことも→顔パーツと思われる特徴量を大量にサジェストしてしまう

2.顔のパーツの形状または配置による制約をつける方法

• 画像中に含まれる目や口の領域や配置などを予め入力しておく→効率的だが,笑顔や変顔など特殊な表情に対応できない

より厳密な結果を出すためには,指数関数的に増加する計算量をこなし,複雑な分類器を地道に作っていくしかない

Page 5: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

提案手法

滝(カスケード)状にデータを流して結果を得る

Deep Convolutional Network Cascade

(全3層のうち)

1層目の出力

2,3層目の出力

従来手法の結果

Page 6: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

提案手法(1)ネットワークの概要

Le:左目Re:右目N:鼻Lm:左口角Rm:右口角

CNNを3つ用意し,各層の出力を入力データとして扱う

• 1層目(Level1)で大方の認識は完了させる• 2,3層目で微調整を行う

Page 7: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

提案手法

(2)Level1

• F1:顔全体を算出• EN1:目と鼻の位置を算出• NM1:鼻と口の位置を算出

顔のパーツに合わせ3つのCNNを構築

全てのCNNの結果を平均化し,Level1の出力とする

Page 8: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

提案手法

(3)Level2,Level3

顔のパーツ毎に5つのCNNを構築

各パーツの局所的な特徴は曖昧かつ信頼性が低いので,2,3層目が加えることの出来る調整はごく僅かに設定されている

Page 9: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

提案手法(4)各CNNの構造

例:F1のCNN

※全てのCNNにおいて層構造は同じであるが,入力画像の大きさが違うため,入力層の大きさは各パーツに合わせて変更している

• 畳み込み層・プーリング層のセット:3セット

• 全結合層:2層の全10層

Page 10: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

提案手法(5)学習をより洗練させるために

1.CNNは深くあるべき

深いネットワークを構築する事は,ローカルな局所特徴量を得る上に高次元の特徴形成に有効である

2.畳み込み層通過後に調整を行う

当研究では畳み込み層の活性化関数にtanhを使用,この活性化の後に絶対値を用いて調整を加える事でより精度が向上した

3.各顔パーツを認識するニューロンを共有する

基本的に各パーツは画像中の似通った場所に映り込むと考えられるこの為,ある画像に有用であったニューロンは他人の画像でも十分に効果がある

Page 11: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

提案手法(6)顔パーツの位置推定

𝑥 =𝑥1(1)+⋯+ 𝑥𝑙1

(1)

𝑙1+

𝑖=2

𝑛∆𝑥1(𝑖)+⋯+ ∆𝑥𝑙𝑖

(𝑖)

𝑙𝑖

顔パーツ𝑥の位置は,Level1で得られた初期位置と,Level2,Level3で得られた微調整の結果の加算によって得られる

Level1の出力 Level2,Level3の出力

Page 12: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

CNN(1)畳み込み層

入力画像はグレースケール画像で,𝐼(ℎ, 𝑤)で示す.

畳み込み層が持つパラメータは𝐶(𝑠, 𝑛, 𝑝, 𝑞),絶対値を使用した調整を加える場合は𝐶𝑅(𝑠, 𝑛, 𝑝, 𝑞)

𝑠 =カーネルの辺の長さ 𝑛 =畳み込むフィルタの数 𝑝, 𝑞 =重み共有パラメータ

フィルタは領域qの大きさでp個に分割され,それぞれ重みを共有している

Page 13: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

CNN(1)畳み込み層

𝐶 𝑠, 𝑛, 𝑝, 𝑞 は以下の式で求められる,この結果をプーリング層に渡す

𝑦𝑖,𝑗(𝑡)= tanh(

𝑟=0

𝑚−1

𝑘=0

𝑠−1

𝑙=0

𝑠−1

𝑥𝑖+𝑘,𝑗+𝑙(𝑟)

∙ 𝑤𝑘,𝑙𝑟,𝑢,𝑣,𝑡

+ 𝑏 𝑢,𝑣,𝑡 )

𝑖 = ∆ℎ ∙ 𝑢,⋯ , ∆ℎ ∙ 𝑢 + ∆ℎ − 1𝑗 = ∆𝑤 ∙ 𝑣,⋯ , ∆𝑤 ∙ 𝑣 + ∆𝑤 − 1

∆ℎ =ℎ − 𝑠 + 1

𝑝, ∆𝑤 =

𝑤 − 𝑠 + 1

𝑞𝑢 = 0,⋯ , 𝑝 − 1, 𝑣 = 0,⋯ , 𝑞 − 1𝑤:重み 𝑏:バイアス

絶対値による調整𝐶𝑅(𝑠, 𝑛, 𝑝, 𝑞)を行う場合は,𝐶 𝑠, 𝑛, 𝑝, 𝑞 の絶対値をプーリング層に渡す.

Page 14: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

CNN(2)プーリング層

演算方法は最大プーリング,𝑃(𝑠)で表される

Sはカーネルの辺,全てのカーネルは重複をしない

プーリング層での演算は以下の式に沿って行われる

𝑦𝑖,𝑗(𝑡)= tanh(𝑔 𝑢,𝑣,𝑡 ∙ max

0≤𝑘,𝑙≤𝑠𝑥𝑖∙𝑠+𝑘,𝑗∙𝑠+𝑙𝑡

+ 𝑏 𝑢,𝑣,𝑡 )

ゲインgとバイアスbは畳み込み層から共有されたパラメータである

Page 15: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

CNN(3)全結合層

全結合層はF(n)で表される

𝑦𝑖 = tanh(

𝑖=0

𝑚−1

𝑥𝑖 ∙ 𝑤𝑖∙𝑗 + 𝑏𝑗)

j=0,…,n-1で,nとmは現在の層と前層の結合したニューロンを示す.

Level1の全結合層

全結合層は3つ用意され,それぞれF1(顔全体)・EN1(目と鼻)・NM1(鼻と口)を抽出する

Level2,Level3の全結合層

全結合層は左目・右目・鼻・左口角・右口角毎に用意され,Level1で得られた結果を中心とした微妙な調整を行うために働く

Page 16: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

ネットワーク構成図

それぞれ,Level1の

• 顔(F1):S0

• 目と鼻(EN1),鼻と口(NM1):S1

Level2,Level3:S2

を採用しているS3~S7は比較用のネットワーク構成を示す

Page 17: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

実験(1)実験概要

様々なネットワーク構成,カスケード構成を試験し,市販システムとの精度を比較する

精度評価は検出誤差と顔パーツの誤検出率によって行う

使用する画像

• 13466枚の顔画像を用意• 5590枚はLFWと呼ばれるデータセットから取得,残りはWebからダウンロード

• 全ての顔画像に対して,顔のパーツの位置をラベリング• 13466枚の中からランダムに10000枚を学習し,残りの3466枚を検証用に使用

Page 18: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

実験(2)精度評価式

精度評価は検出誤差と顔パーツの誤検出率によって行う

𝑒𝑟𝑟 = (𝑥 − 𝑥′)2+(𝑦 − 𝑦′)2/𝑙

𝑥, 𝑦:ラベルデータ, 𝑥′, 𝑦′:検出点𝑙:顔面における顔パーツの位置

検出誤差errが5%よりも大きい場合は失敗としてカウントする※目の位置は検出誤差正規化に使用される

Page 19: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

実験(3)ネットワーク別の精度比較

顔の各パーツ別の平均誤差

• より多くの層を持つネットワークが誤差が少ない• ローカルの重みを共有した方がより精度が良い• 絶対値による調整を行ったほうが良い

顔認識においてCNNは有効であり,よりネットワークが深いほど精度が良い

Page 20: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

実験(4)カスケード接続の検証

カスケード接続による精度の変化

Level1の段階で得られた誤差より,Level2を通して得られた誤差は大幅に減少Level3では僅かに誤差を減少させる

Page 21: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

実験(5)従来手法との精度比較

Luxand Face SDK, Microsoft Research Face SDK

BioIDという顔認識用データセットを使用,23人の被験者による1521枚の画像セットで,全て前向き.均一な照明下で撮影

MS Research Face SDKは目と鼻の頂点を認識しないので口角部分を比較

水色が提案手法,その他が従来手法.提案手法は誤差が非常に少なく,課題解決のためかなり有効と考えられる

Page 22: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

実験(6)従来手法との精度比較

LFPW

Webから1432枚の画像をダウンロード,うち1132枚を学習用,300枚を検証用画像に割り当てる

照明,撮影角度などかなり制約の少ない画像を含む.

提案手法を用いた精度比較では,検証用画像にLFPWの中の学習用・検証用の画像を使用

水色が提案手法,その他が従来手法.提案手法は誤差が非常に少なく,課題解決のためかなり有効と考えられる

Page 23: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

実験(7)最終の比較結果

青・赤:従来手法の誤差緑:従来手法

全ての顔パーツにおいて,従来手法よりも誤差が少ない鼻・口においては大幅に誤差を減少させることが出来た

Page 24: 輪講用資料「Deep Convolutional Network Cascade for Facial Point Detection」

まとめ

顔認識において,カスケードCNNは非常に有効

重要な機能を洗練させることで,比較的小さなネットワークでより良い精度を得ることが可能になった

商用ソフトウェアに応用し,更なる精度向上に貢献する