ica 独立成分分析 を用いた 時系列顔画像認識 -...

36
ICA( 独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科 本田研究室 小田知典 平成14年 2月14日()

Upload: others

Post on 31-Mar-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

ICA(独立成分分析)を用いた 時系列顔画像認識

高知大学 理学部 数理情報科学科

本田研究室 小田知典

平成14年 2月14日(木)

Page 2: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

2

Abstract

顔は、コミュニケーションにおいて、ノンバーバル(非言語的)情報をも含む様々な情

報を相手に効果的に伝達できるメディアとして重要な役割を担っている。そこで、コン

ピュータネットワークや、人間と機械のコミュニケーションにおいて顔画像の利用はと

ても大切な意味を持ってくる。

そこで、まず、顔画像研究の現状を調べ、それをまとめた。そして、PCA による顔画

像表現に比べ ICA による顔画像表現の有効性を議論した。その議論を証明するために、

実際に ICA による顔画像認識の実験を行い、ICA による基底を作り出すことに成功し

た。また、基底の数を制限するために、一度 PCA によって求めた上位の基底に対し、ICA

を行い、基底の数を抑えるという実験を行った。そして、求められた基底に対する重み

係数をグラフ化した。グラフから見られる基底に対する重みの特徴的な部分の画像を見

ることによって、PCA、ICA それぞれの顔画像に対する認識の違いを知ることが出来

た。また、その結果から、ICA による顔表現の有効性を知ることができた。

今後は、求めた基底を使い、表情などの判別に応用していくことが課題である。

Page 3: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

3

1. はじめに...........................................................................................................4

2.顔画像研究の現状.............................................................................................5

2.1.顔画像の合成................................................................................................5

2.1.1.顔表情の合成 ....................................................................................5

2.1.2.表情の記述法 ....................................................................................6

2.2.顔表情の認識................................................................................................6

2.3.顔画像の工学的応用について....................................................................7

2.3.1.顔の特性 ............................................................................................7

2.3.2.顔画像の工学的応用 ........................................................................8

2.3.3.顔画像の工学的応用上の注意 ........................................................9

3.ICA(Independent Component Analysis:独立成分分析).......10

3.1. ICAとは .....................................................................................................10

3.2.問題の定式化..............................................................................................10

3.3.Kullback-Leibler情報量 .................................................................... 11

3.4.ICAの性質と顔画像への応用..............................................................14

4.実験.......................................................................................................................15

4.1.使用したデータ (画像)について ...............................................................15

4.2.結果..............................................................................................................16

4.2.1. ICAで求めた基底..........................................................................16

4.2.2.基底の制限 ......................................................................................17

4.2.3.画像の時系列変化について ..........................................................20

4.3.考察..............................................................................................................22

5.終わりに.............................................................................................................23

謝辞 ..................................................................................................................................24

参考文献 ...........................................................................................................................25

付録 プログラムリスト ...............................................................................................26

Page 4: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

4

1. はじめに

顔は、コミュニケーションにおいて、ノンバーバル(非言語的)情報をも含む様々な情

報を相手に効果的に伝達できるメディアとして重要な役割を担っている。

一方、近年コンピュータネットワークを中心として、多様なメディアへのアクセスが

可能となっている。この中で、ネットワークを介した人間同士、或いは人間とコンピュー

タのコミュニケーションを支援するインターフェイスについては、様々な問題点が指摘

されている。即ち、コンピュータと人間との自然なコミュニケーションのために、従来の

ような論理情報の伝達だけでなく、人間の心理的な側面をも考慮した、より感受性豊か

なメディアの開発が望まれている。

このような観点から、コンピュータに顔の認識や顔画像の合成の機能を持たせ、対面

によるコミュニケーションメディアを実現しようとする研究が最近国内外で活発であ

る。

本研究では、顔画像研究の現状についての調査とともに、ICA(Independent

Component Analysis:独立成分分析)という手法を使い、実際の顔画像に対して、認

識実験を行った。また、従来よく使われてきた、PCA(Principal Component

Analysis:主成分分析)と比較して、手法の違い、有効性などについて考えてみる。

Page 5: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

5

2.顔画像研究の現状

2.1.顔画像の合成 「人間と人間」、あるいは「人間とコンピュータ」のコミュニケーションを実現する

ためのインターフェイスの構築には、実在の人物をモデル化する必要がある。まず、そ

れらの方法についての今までの研究についてまとめる。[1]

2.1.1.顔表情の合成

表情の合成には、大きく分けて、2つの流れが存在している。

(1)表情筋のモデル化

顔の皮膚下にある表情筋と呼ばれる筋肉およびそれに連動して動く皮膚表面を物理

的なモデルとして取り扱い、筋肉・骨の動きを元に運動方程式を解くことによって皮膚

表面にあたるワイヤーフレームを動かす方法である。この方法を使うと、実際の表情表

出に近いアニメーションが実現可能であり、筋肉の配置を換えることにより、さまざま

な顔の造作に対応することができる。しかし、各種パラメータの調整が困難で、試行錯

誤に依存するところが大きく、計算量が膨大になってしまう。

(2)ワイヤーフレームを直接変形させる方法

ワイヤーフレームモデルに直接規則的な幾何学変形を施して表情を作成する方法で

ある。この方法は、意図する表情を表出させるための規則は点の移動によってのみ定義

され、比較的容易である。しかし、それぞれの顔の個人差によって正しく合成できない

という問題点がある。

Page 6: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

6

2.1.2.表情の記述法

顔表情の記述法として FACS(Facial Action Coding System)を利用すること

が一般的となっている。FACS における表情コントロールのための基本ユニットは

Action Unit(AU)と呼ばれ、各 AUごとに、モデルの変形規則が決められている。表1に

基本的な表情表出に関連する AU の例とその意味付けを示す。また表2は、6基本感情

と呼ばれる喜び、怒り、嫌悪、悲しみ、恐れ、驚きを表現する AU の組み合わせとその強度

の例を示している。

表 1 Facial Action Coding System における AU の例 AU.No FACS Name AU.No FACS Name AU1 Inner brow raiser AU14 Dimpler AU2 Outer brow raiser AU15 Lid corner depressor AU4 Brow lower AU16 Lower lip depressor AU5 Upper lid raiser AU17 Chin raiser AU6 Cheek raiser AU20 Lip stretcher AU7 Lid tighter AU23 Lip tighter AU9 Nose wrinkler AU25 Lip part AU10 Upper lid raiser AU26 Jaw drops AU12 Lid corner puller

表 2 基本表情を実現する AU の例 Basic Emotion Conbination of AU parameters Surprise AU1-(40),2-(30),5-(60),15-(20),16-(25),20-(10),26-(60) Fear AU1-(50),2-(10),4-(80),5-(60),15-(30),20-(10),26-(30) Disgust AU2-(60),4-(40),9-(20),15-(60),17-(30) Anger AU2-(30),4-(60),7-(50),9-(20),10-(10),20-(15),26-(30) Happiness AU1-(65),6-(70),12-(10),14-(10) Sadness AU1-(40),4-(50),15-(40),23-(20)

また、発話における基本口形に関しては、FACS で表現しきれない部分もあるため独

自のルールが使われている

2.2.顔表情の認識

人間とコンピュータのコミュニケーション、また、人間と人間のコンピュータを介し

たコミュニケーションにおいて、コンピュータによる顔表情の認識は、必要不可欠であ

る。顔表情の認識について、今研究されているアルゴリズムを紹介する。 表情認識をするアルゴリズムには、大別して4通りの方法がある。

まず、1つ目として、表情筋の動きに着目して表情の分析と認識を行うものである。

この方法には、オプティカルフローにより表情筋の動きを検出する方法と、FACS の

AU の動きを推定して表情認識に用いる方法がある。

Page 7: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

7

2つ目の方法は、顔の特徴点の抽出を行い、その移動量から表情を推定するものであ

る。この研究は、ほとんどが、特徴点の抽出ができたものとして行われている。表情認

識の特徴量としては、特徴点から求まる眉間の近傍三角形の面積、口の開き具合をあら

わす面積、鼻の中心と上唇の左右両端の情報の点を結ぶ直線が水平方向に対して持つ角

度、眉の角度、目の開き具合、口の曲率、口の縦横比等のパラメータである。これらを

用い、各感情に対応する基準値とある感情から得られた値との比較によって識別を行う

という方法である。

3つ目の方法は、顔部位の変化を大局的に記述するものである。この方法には、ポテ

ンシャルネットに基づくもの、テンプレートマッチングを行うもの等が提案されている。

4つ目は、時系列を導入したものである。この方法には、HMM(Hidden Markov

Model)を用いて時系列情報を考慮した手法、リカレントネットワーク(RNN)を用

いた手法などが提案されている。

2.3.顔画像の工学的応用について 顔の特性を利用して研究・開発が行われている2つの分野にスポットを当てる。「人

と人との対面コミュニケーションの支援」として通信分野、また、「人と機械の間の顔

情報を介したコミュニケーションの支援」としてヒューマンインターフェイス分野であ

2.3.1.顔の特性 顔には、表現性、固有性、類似性、外見の変容性など様々な特性がある。これらが、顔画

像を工学的に利用できる可能性であり、また克服しなければならない点である。

(1)表現性

顔が非言語的メッセージの主要な発信チャネルの1つである要因として顔の表情や

視線に、豊かな表現性があることによる。顔には20以上の表情筋があり、人が意図的

に表出することができる表情は、60種類以上あるといわれている。一方、視線につい

ては、表情とあわせて、人の意思をあらわすとともに、対話における発言権の委譲や、

空間の注視点などを表現することが示されている。このような特性を工学的に利用すれ

ば、対面でのコミュニケーションの工学的支援など通信分野に応用できるものと思われ

る。

(2)固有性と類似性

一般に顔の輪郭や、目、口といった顔の造作の大きさ、形状、色、配置には個人差が

あり、顔には固有性があるといえる。また顔は血縁関係、人種、性別、年齢などの複数

の属性にまたがる特徴を複合的に有しており、類似性があるともいえる。このような特

徴を活用すれば、個人識別や、年齢、性別などの推定をするシステムの構築が可能にな

るだろう。つまり、ヒューマンインターフェイス分野としての応用が考えられる。

Page 8: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

8

(3)外見の変容性

同一人物の顔であっても、その外見は定常的・恒常的なものではなく、さまざまな要

因で変化する。これは顔の変容性といえる。短期的変化には、髪形の変化、日焼け、化

粧、眼鏡の着用などがあり、長期的変化には、顔の輪郭形状の変化、肌の色の変化、し

わの発生、などがある。

2.3.2.顔画像の工学的応用

(1)通信:人と人の対面コミュニケーションの支援 顔画像研究として、通信分野における主要な技術的課題は、話者の意思や心情を表わ

す顔表情や、話者間のアイコンタクト、また話者の注視点の空間位置推定に欠かせない

視線情報の伝達にあるといえる。

これらのうち顔表情の伝達については、送信画像の高精細化と画面の大型化によって

かなりの部分が達成できる。一方、アイコンタクトや話者の視線情報の通信では、これま

で主としてカメラ位置と視点位置の相違や、話者間で想定される位置関係とシステムの

物理的な配置関係の不一致による視線情報の混乱などが問題とされてきた。しかし、近

年ハーフミラーや複数のカメラ・モニタを利用する方法などが提案され、問題の解決が

図られつつある。

また、コンピュータグラフィックスやバーチャルリアリティなどの技術を積極的に導

入し、新たな展開を図ろうという動きもある。ここでの主要な技術的課題は、表情や視線

の符号化や、仮想空間中における表現などにある。

これらの問題に対して、画像の意味的構造や変化(動き)成分をコンピュータに抽出・

符号化させ、これを超低ビットレートの通信や画像の記述・合成に利用すると言う「知的

符号化」と言う方法が提唱されている。具体的には、送信側で画像から表情の変化成分の

みを抽出して符号化し、受信側ではこのデータを復号して CG により顔と表情の再構成

を行うというものである。 他にも「知的符号化」の拡張として「臨場感通信」というもの

や、バーチャルリアリティの技術を応用した、「マルチベースラインステレオ法」という

ものもある。

(2)ヒューマンインターフェイス:人と機械の間の顔情報を介したコミュニ

ケーション

機械の操作の方法などを覚えるときなど、厚いマニュアルを読むのは大変である。そ

こで、人の自然な話し言葉や顔表情、視線、ジェスチャを活用して機械を操作することが

可能なユーザインタフェースの研究・開発が進められている。これらは一般にマルチモ

ーダルインタフェースと呼ばれている。

マルチモーダルインタフェースにおけるデータ入力方式については、画像認識技術の

利用や、顔画像と音声の双方を同時並行的に認識しようとする試みなどがある。一方出

力方式については、様々な技術や機器の利用が検討されているが、その一つに機械の

Page 9: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

9

「顔」の導入がある。

顔を持ち、人とマルチモーダルな対話を有するエージェントは擬人化エージェントと

呼ばれ、様々な特色を持つ擬人化エージェントが研究されている。これらの中には、表情

や、ジェスチャを表出するもの、ユーザの識別や、人物やものを見て覚えることができる

ものもある。また、エージェントの表情の活用に有効と思われる人口感情の研究や、顔を

物理的な実体(ロボット)として構築する研究なども行なわれている。

2.3.3.顔画像の工学的応用上の注意 「顔」はさまざまな個人情報を含むため、個人の顔画像を利用して研究・開発を行った

り、その成果を発表する際などには、本人の承諾を得るなどして個人の肖像権やプライ

バシーの保護に十分な配慮がされなければならない。

また、顔は表現の自由度が高い反面、顔による表現の解釈には見るものの主観的な判

断が入る余地が多分にあるといえる。そこで、顔表情の認識や合成技術の研究・開発にお

いては、この点に十分配慮する必要がある。

Page 10: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

10

3.ICA(Independent Component Analysis:独立成分分析)

3.1.ICA とは ICA(Independent Component Analysis:独立成分分析)[2]は最近注目されている

統計的データ解析手法であり EEG(electroencephalogram)や音声信号などの blind

source separation 問題への応用が盛んに研究されている。

人々の話し声や行き交う音食器のぶつかる音、或いは音楽など様々な音が重なり合っ

たパーティー会場にあっても、我々はそうした雑音に惑わされることなく会話を楽しむ

ことができる。このように重なり合った信号の中から特定の信号を選択的に識別する聴

覚系の能力は“カクテルパーティー効果”と呼ばれ古くから興味をもたれている。ICA

は、信号の統計的な性質のみに着目して機械的に特定の信号を抽出する信号処理の問題

として定式化されている。

ICA は、入力データを統計的に独立な信号の線形結合であるとみなしその信号及び

結合係数がともに未知である場合でもそれらを推定することができる。これにより求ま

る基底は PCA(Principal Component Analysis:主成分分析)のような直交性の拘束

がないため、より複雑なデータ分析に対してもその性質をより的確に表わす基底を得る

ことができる。

顔画像表現への応用としては、従来良く用いられてきた PCA による表現(固有顔)の

かわりに ICA による表現を用いる研究が行なわれている。[3]

3.2.問題の定式化 ある時系列で観測される、n個の信号

Tn txtxtx ))(),...,(()( 1= (1)

を観測したとき、このxを統計的に独立な原信号 T

n tststs ))(),...,(()( 1= (2)

を線形作用素 )( nnA × で変換させたものとし、

)()( tAstx = (3)

と表わすとする。ここでは、観測点の数と信号源の数は一致するものとし、また作用素は

時間に対し不変とする。 この前提の中で、独立成分分析の問題は、原信号 )(ts 及び作要素 A に関する知識を一

切持たずに、観測データから原信号を復元することであると定義される。ここで、 A の逆行列をW とし )(ts の近似値を )(ty とすると、(3)は

)()( tWxty = (4)

と書ける。ゆえに、独立成分分析とは(4)から、観測データ )(tx のみを用いて )(ty の各成

分が互いに統計的独立になるような作用素W を求めることと言い換えてもよい。しか

Page 11: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

11

し、理想的には、作用素W は 1−A となればよいのだが、要素の順番の入れ違いとその大き

さの任意性は残る。これは原信号のエネルギー等に関する知識が全く無いので復元信号

は、原信号の定数倍とするしかなく、また信号につけられた番号は便宜的に与えたもの

であり、復元信号の番号と原信号の番号の間の対応には意味が無いからである。結局適

当な対角行列Dと置換行列 Pを用いて

PDWA = (5)

なるような作用素W を決定する問題ということになる。

3.3.Kullback-Leibler情報量

統計的独立の定義は同時分布の密度函数が周辺分布の密度函数の積で表わされること

)()...(),...( 11... 11 nXXnXX xPxPxxPnn

= (6)

であるので、自然な方法の1つは結合分布と周辺分布の間に統計的な距離によって y の

各成分を独立とする作要素 W を求めることになる。統計的な距離としては具体的には

Kullback-Leibler 情報量(Kullback-Leibler divergence)や Hellinger 距離などがあ

るが、こうした距離は確率分布をそのものを使って定義されているため観測値のみから

計算することが難しく、通常は例えば kernel 法等と組み合わせて確率密度の推定と距

離の最小化を同時に行っていかなくてはならない。但し、Kullback-Leibler 情報量の場

合は確率密度を既知として得られた結果が比較的近似しやすいものとなっているため、

実用上良く用いられる。

以下では Kullback-Leiber 情報量の元で最小化を考え、最急降下法による算法の導

出を試みる。

n変数 Tnyyy ),...,( 1= の同時・周辺分布間の Kullback-Leibler 情報量は

∑=

−=

=n

ii

n

YHYH

YYIYI

1

1

)()(

),...,()( (7)

と書ける。ここで )( iYH 、 )(YH はエントロピー(平均情報量)である。特に2変数の場合

),()()(),( 212121 YYHYHYHYYI −+= (8)

は相互情報量と呼ばれる量に一致する。多変量の場合(7)は情報理論における相互情報

量とは一致しない。 結合分布のエントロピー )(YH は

Wxy = (9)

より )(yPY が )(xPX を用いて

WyWP

yP XY

)()(

1−

= (10)

Page 12: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

12

と書けることを用いると

)11(log)(

)()log)((log

)()log)((log

)(log)()(1

1

WXH

dxxPWxP

dyW

yWPWyWP

dyyPyPYH

XX

XX

YY

+=

−−=

−−=

−=

∫−

となる。ここでX とY が一対一で対応しているので X で平均をとることとY で平均を

とることは同値である事に注意しておく。

結局Kullback-Leiber 情報量(以下では情報量と略記)は

∑=

−−=n

ii WXHYHYI

1

log)()()( (12)

と表わされる。 次に iY を互いに(できるだけ)独立とする変換W すなわち情報量 )(YI を最小にする変

換W は

0)( =

∂∂

WYI

を満たすので、これを求めるために各項のW に関する偏微分を計算していく。まず X の

エントロピーはW にはよらないので消える。また Wlog は余因子分解によりW の ij 成

分に関する余因子を ijW とすれば

∑=

=n

jijijWwW

1

ˆ (13)

と書けることに注意すれば

)14()(

ˆ1loglog

1 T

ijij

W

WWw

W

W

W

−=

=

∂=

となる。各 iY のエントロピーは

Page 13: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

13

[ ]

( )[ ]

[ ] )15()(

)(log

log

)(log)()(

1

TP

ji

iYX

ij

kn

k ikYP

ij

iYP

ij

ii

XYE

XdY

YPdEP

w

XwPE

w

YPE

wYH

WYH

X

i

iX

iY

ϕ=

−=

∂−=

∂−=

∂∂

=∂

∑ =

となる。但し、ϕ は各 i毎に

[ ][ ] )16()()(

)()()(

1

1

TTP

TTP

WIYYE

WXYEWYI

Y

X

−=

−=∂

ϕ

ϕ

となる。

望ましいW を求めるためには

0)( =

∂∂

WYI

をW にして解けばよいが、ϕ の非線形性のため通常解析的にとくことはできず、一般的

には反復法による解法が用いられる。最も単純な方法は最急降下法であるが、最急方向

は接空間に妥当な計量を導入して定義しなくてはならない。計sa量等の問題から一般

に用いられるのは以下のような計量である。ε を小さな数としてW を UW ε+ と変化さ

せたときの tangent vector(接空間の要素)U の norm を

)17()(

)(1

12

UUWWtr

UWUWtrUUTT

TTW

−−

−−

=

==

で定義し、相互情報量を減らすW の勾配を求めると

[ ]( )WYYEIW TPY

)(ϕ−=∆ (18)

となる。ここでφ は任意の関数、YPE は YP によって決まる期待値、 W∆ は更新量であ

る。またこれを on-line化して

tTtttt WyyIW ))((1 ϕη −=∆ + (19)

という更新則がよく用いられている。ここで tη とは、学習を抑える学習係数である。

Page 14: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

14

3.4.ICAの性質と顔画像への応用

PCAとICAのどちらも基底の非相関化を行うが、PCAが 2 次のモーメントの非

相関化を行うのに対し、PCAは2次以上の高次のモーメントとの非相関化を行う。こ

のことと関連したICAの特色として、

・非直交な成分分離

・原信号の空間的局所性

が挙げられる。

ICAにより求まる原信号は、PCAと異なり直行性の拘束がない。そのため、ICA

の原信号は入力信号の特性にあわせて、非直交となりえる。図1は PCAによる基底の例、

図2は ICA により求められた基底の例である。

図1.PCA により求められた基底の例

図2.ICAにより求められた基底の例

直交2クラスタの分布に対しては PCA、ICA のどちらも基底が分布の主成分方向を表

わしているが、非直交2クラスタの分布では、PCA ではどちらの分布からもずれた方

向になっている。しかし、ICAでは、このような分布に対しても分布の方向を示す基

底が求められているのがわかる。

一般に顔画像の分布が直交であるとは考えにくいこと、また顔画像の局所的表現への

有効性などの点から、PCA による表現より、ICA による表現のほうが有効であると考え

られる。

Page 15: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

15

4.実験

ICA を使い、実際の顔画像に対し、認識実験を行った。実際に使った W の更新式は、

および )( yφ は、以下のとおりである。

)exp(11

)(y

y−+

=φ (21)

またηは、 9108 −× とし、反復回数は 100 回で行った。

4.1.使用したデータ(画像)について 実験に使用した画像は、被験者にできるだけ様々な表情をしてもらうようにして撮影

した98枚の時間的連続画像である。図 3 に使用したデータの前処理を示す。この98

枚の画像はまずモノクロ化し、顔内の10個の特徴点(両眉の上、両眉の外端、両目の

外端、鼻の下、口の両端、口の下端:図 4)を元に、最も標準と思われる画像に対応させ

るように画像をアフィン変換した。さらに、表情に関係の薄い頭部などを切り取り、3

0x30ピクセルの入力データとした。

(a).原画像 (b).モノクロ画像

(c).アフィン変換した画像 (d).入力データ

図 3.使用したデータの前処理

図 4.図 3(c)のアフィン変換で使用した特徴点の定義

)20()))(2((1T

tt yyIIWW φη −++=+

Page 16: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

16

4.2.結果

4.2.1.ICA で求めた基底

98枚の画像に ICA を行うことによって、98枚の基底を得ることができた。以下、

図 5 は、その基底である。

図 5.ICA で求めた基底

Page 17: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

17

4.2.2.基底の制限

ICA によって基底を求めると、使用したデータの枚数だけ基底が求まってしまう。

そこで、基底を制限する方法として、まず98枚のデータに対し、PCA で基底を求め、

変動量が上位の基底にだけ、ICA を行うという方法をとった。[3]図 6 は、PCA で求め

た上位10 個の基底の寄与度である。上位10個の基底で、85パーセント以上の寄与率

がある。今回は、PCA で求まった上位20個の基底を使用した。この時、上位20個の

基底による寄与度は、約92%である。

図 6.PCA で求めた上位基底の寄与度

Page 18: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

18

図7 は、PCA で求めた上位20の基底である。ここで求まった基底のうち、第1基底

は、全ての顔の平均値となっているため、特徴を得ることが出来ない。そこで、2つ目

からの基底19個をICAに使用した。

図 8 は19個の基底に対し、ICAを適用し、基底を求めたものである。

図 7.PCA で求めた上位20個の基底

図 8.PCA 基底から ICA基底を求めたもの

基底に、直行性の拘束を持つ PCA 基底は、ある画像において、黒くでているところ

が、ある画像では、白くでているなどといった不自然なかたちの基底が見られる。しか

し、ICA 基底にはそのような特徴は無い。

Page 19: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

19

次に、これらの基底を見やすくするために、それぞれの基底に、PCA で求めた基底

の第1基底を足し合わせたものを示す。図 9 は PCA 基底に対するもの、図 10 は ICA

基底に対するものである。

図 9.PCA 基底に PCA 基底の第1基底を足したもの

図 10.ICA 基底に PCA 基底の第1基底を足したもの

この図を見ると、PCA 基底は、特徴的な固有の表情が、基底としてでているのに対し、

ICA 基底は、目や口といった部分部分の変化が基底としてでていることがよく分かる。

これは、ICAにおける空間的局所性がよく表されているといえるだろう。

Page 20: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

20

4.2.3.画像の時系列変化について

原画像は、時間的に連続したものであり、時間とともに変化したものである。そこで、

その変化を可視化するために、基底に対する重み係数の変化をグラフ化してみた。図

11 は、PCA 基底に対するもの、図 12 は、ICA 基底に対するものである。X 軸(横)が時

間順の画像で、Y 軸(縦)が基底 ID である。

図 11.PCA 基底に対する重み係数の変化

図 12.ICA基底に対する重み係数の変化

Page 21: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

21

PCAは、1~4までの基底以外には、小さな係数しかかかっていない。しかし、ICA

では偏りはあるものの PCA に比べ少なかった。

このグラフから、特徴的な変化が起こっているところの画像を見てみることにする。

まず、PCA のほうから見ていく。図 11 において、最も特徴的な部分は、60 付近であ

る。図13 は、58 から 62 までの画像である。

図 13.図 11 における特徴的な部分の画像(1)

図 11 では、59 が最も第一基底の成分に対する係数が強くなっている。第一基底に対

する係数が強くなっているということは、その画像が、平均的な画像に近いことを表し

ている。確かに、59 の画像(左から 2 番目)は、特別な表情をしておらず、平均に近いも

のと思われる。 次に、第 2 基底に対する変化が強い 33 から 37 までの画像を紹介する。

図 14.図 12 における特徴的な部分の画像(2)

34 から 36 までの画像(左から 2 番目から3 枚)には、はっきりと笑顔が見られる。こ

れらのことから、表情をとらえるという意味では、PCA による方法も有効であると思

われる。

Page 22: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

22

今度は、図 12 について見てみる。まず、13 から 17 あたりの画像を見てみる。ここ

では、14、15、16 の画像をはさんで、2 つの画像に、逆の成分がかかっている。

図 15.図 12 における特徴的な部分の画像(1)

口の開き方について注目してみる。13(左端)は、口が突き出され、口の横幅が狭くなっ

ている。逆に、17(右端)は、口が横に引かれ幅が広くなっている。このような局所的な

変化は、PCA には見られず、ICA の顔認識における有効な部分であると思われる。

次に、最も特徴的な変化のある 56 付近、53 から 57 の画像を見てみる。

図 16.図 12 における特徴的な部分の画像(2)

56(右から 2 番目)の画像は、とても特徴的な画像となっており、また、比較的変化の大

きい55(真ん中)の画像も特徴的な画像となっている。これらのことから、ICAは表情

などといった大きな変化だけでなく、口などという局所的変化をとらえることが出来る

事がわかる。

4.3.考察 PCAによる表現、ICA による表現のどちらでも、表情などの違いを認識することは

出来た。しかし、PCAでは、ICA のように、目や口といった局所的な変化を認識する

ことは出来なかった。これは、顔表現において ICA が優れている点であると思われる。

しかし、ICA には入力信号と原信号の数が同じでなければならない為に基底を制限でき

ないなどといった欠点がある。これは、今後新しい画像を入力して、その表情を判別す

るというような実験を行う時、課題となる点である。

Page 23: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

23

5.終わりに

顔画像研究は、これから、通信、ロボット、などの研究が進んでいくにあたって避け

て通れない重要な研究分野であろう。本研究を通じて、この分野における最新技術や、

可能性を知ることができたことはとても有用なことであった。また、ICA という手法も

まだ、主流ではないが、これから、多分野に活用できる有効な手法だと考えられる。

実験については、統計的に独立であり、顔画像表現に適していると思われる、ICA 基

底を作ることには成功した。また、時系列変化について PCA、ICA の違いを調べること

もできた。しかし、新しく入力された画像からの顔表情の認識実験などは行うことがで

きなかった。今後は、基底に対する重み係数の違いから、表情を記憶させ、新しく入力

した画像の表情を判別、また個人の判別などの実験が考えられる。これらのことが、本

実験の反省点であり、これからの課題であるといえよう。

Page 24: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

24

謝辞

今回の卒業研究に際して数理情報科学科本田理恵博士の

多大なご指導を承りました。

また、同研究室の先輩方、4回生達とも有意義な

討論をし、楽しい時間を過ごさせてもらいました。

ここで、皆様に心からの感謝を申し上げたいと思います。

ありがとうございました。

Page 25: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

25

参考文献

[1] 「顔」の情報処理 長谷川修 森島繁生 金子正秀

[2] 独立成分分析慨論 村上昇

[3] ICA を用いた顔画像の表現法及び顔認識システムへの応用

二村直広 岡田和典 森健策 末永康仁

Page 26: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

26

付録 プログラムリスト

ICA の基底を求め、元の画像に復元するプログラムである。

#include "stdlib.h"

#include "stdio.h"

#include "math.h"

#include "string.h"

#define M 200

#define N 1000

#define MM 40

#define e 100

#define f 0.000000008

#define DATALIST "list.d"/*入力ファイルリスト*/

#define wDATALIST "wlist.d"/*出力ファイルリスト*/

#undef RAND_MAX

#define RAND_MAX 100000

char file_name[M][MM];

char fname[M][MM];

int randam();

void seki(int im ,int jm ,float a[][], float b[][], float c[][]);

void seki2(int im ,int jm ,float a[][],float b[][], float c[][]);

void seki3(int im ,int jm ,float a[][],float b[][], float c[][]);

void printmatrix(int m, int n, float a[][]);

float sigm(float y);

void read_data(char filename[],int *im,int *jm,unsigned char image[]) ;

void write_data(char filename[],int im,int jm,unsigned char image[]);

int file_read(int *m, int *n);

int file_read2();

void gen_init(int m, int n,float a[][]);

main()

{

Page 27: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

27

int i,j,k,l,t;

int m,n,im,jm;

float x[M][N],w[M][N],y[M][N];

float z[M][N],dw[M][N],q[M][N],sig[M][N];

float g[M][M];

unsigned char img[N];

float ymin, ymax;

/*入力ファイル名読み込み*/

file_read(&m,&n);

/*出力ファイル名読み込み*/

file_read2();

/*w を決める*/

gen_init(m,m,w);

/*x を読み込む*/

for(i=0; i<m; ++i){

read_data(file_name[i],&im,&jm,img);

for(j=0; j<n; ++j){

x[i][j]=(float)img[j];

}

}

/*更新*/

for(t=0; t<e ; ++t){

/*Y=WX*/

seki(m,n,w,x,y);

/*シグモイド関数*/

for(i=0; i<m; ++i){

for(j=0; j<n; ++j){

sig[i][j]=sigm(y[i][j]);

}

}

Page 28: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

28

seki2(m,n,sig,y,z);

/*単位行列*/

for(i=0; i<m; ++i){

for(j=0; j<m; ++j){

if(i==j){

q[i][j]=1.0+z[i][j];

}

else{

q[i][j]=z[i][j];

}

}

}

seki(m,m,q,w,dw);

for(i=0; i<m; ++i){

for(j=0; j<n; ++j){

w[i][j]+=f*dw[i][j];

}

}

/*出力*/

for(i=0; i<m; ++i){

for(j=0; j<n; ++j){

img[j]=(unsigned char)y[i][j]+50;

}

ymax=1.0e-5;

ymin=1.0e5;

for(j=0; j<n; ++j){

if (ymax<y[i][j]){

ymax=y[i][j];

}

if (ymin>y[i][j]){

ymin=y[i][j];

}

Page 29: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

29

}

printf("%f %f¥n",ymax,ymin);

write_data(fname[i],im,jm,img);

}

for(i=0; i<m; ++i){

for(j=0; j<m; ++j){

g[i][j]=w[i][j];

}

}

inv(g,m,M);

seki3(m,n,g,y,x);

for(i=0; i<m; ++i){

for(j=0; j<n; ++j){

img[j]=(unsigned char)x[i][j];

}

write_data(fname[i+98],im,jm,img);

}

for(i=0; i<m; ++i){

for(j=0; j<m; ++j){

printf("%f ",g[i][j]);

}

printf("¥n¥n");

}

printf("¥n");

for(j=0; j<m; ++j){

ymax=0;

for(i=0; i<m; ++i){

if (ymax<g[i][j]){

ymax=g[i][j];

}

}

printf("%f ",ymax);

Page 30: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

30

printf("¥n");

}

}

/*行列の積 A*B=C*/

void seki(int im ,int jm ,float a[M][N],float b[M][N], float c[M][N])

{

int i,j,k;

for(i=0; i<im; ++i){

for(j=0; j<jm; ++j){

c[i][j]=0.0;

for(k=0; k<im; ++k){

c[i][j]+=a[i][k]*b[k][j];

}

}

}

}

void seki2(int im ,int jm ,float a[M][N],float b[M][N], float c[M][N])

{

int i,j,k;

for(i=0; i<im; ++i){

for(j=0; j<im; ++j){

c[i][j]=0.0;

for(k=0; k<jm; ++k){

c[i][j]+=a[i][k]*b[i][k];

}

}

}

}

void seki3(int im ,int jm ,float a[M][M],float b[M][N], float c[M][N])

{

int i,j,k;

for(i=0; i<im; ++i){

for(j=0; j<jm; ++j){

Page 31: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

31

c[i][j]=0.0;

for(k=0; k<im; ++k){

c[i][j]+=a[i][k]*b[k][j];

}

}

}

}

void printmatrix(int m, int n, float a[M][N])/*表示*/

{

int i ,j;

for (i=0; i<m; ++i) {

for (j=0; j<n; ++j) {

printf("%f ", a[i][j]);

}

printf("¥n");

}

}

/*シグモイド関数*/

float sigm(float y)

{

return(1-2*(1.0/(1+exp(-y))));

}

/*ファイル名読み込み*/

int file_read(int *m, int *n)

{

int im,jm;

unsigned char a[N];

FILE *fp;

char *infile=DATALIST;

*m=0;

fp=fopen(infile,"r");

if(fp==NULL){

printf("cannot open %s :read data¥n",infile);

Page 32: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

32

exit(1);

}

while(!feof(fp)) {

fscanf(fp,"%s",file_name[*m]);

(*m)++;

}

fclose(fp);

read_data(file_name[1],&im,&jm,a);

(*n)=im*jm;

(*m)-=1;

}

/*ファイル名読み込み*/

int file_read2()

{

int im,jm;

unsigned char a[N];

FILE *fp;

char *infile=wDATALIST;

im=0;

fp=fopen(infile,"r");

if(fp==NULL){

printf("cannot open %s :read data¥n",infile);

exit(1);

}

while(!feof(fp)) {

fscanf(fp,"%s",fname[im]);

(im)++;

}

fclose(fp);

}

/*ファイル読み込み*/

void read_data(char filename[],int *im,int *jm,unsigned char image[])

{

int i,j;

Page 33: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

33

FILE *fp;

char buf[100];

if((fp=fopen(filename,"rb"))==NULL)

{ printf("file %s can not open ",filename);

exit(1);}

check_pgm(buf,fp,im,jm);

fread(image,sizeof(unsigned char),(*im)*(*jm),fp);

fclose(fp);

}

/*PGMチェック*/

int check_pgm(char *headbuf, FILE *fp,int *width,int *height)

{

char buf[100];

int i=0;

int tw,th;

fgets(buf,sizeof(buf),fp);

if(buf[0]=='P' && buf[1]=='5')

{

if(headbuf) strcpy(headbuf,buf);

do { fgets(buf,sizeof(buf),fp);

if(headbuf) strcat(headbuf,buf);

} while(buf[0]=='#');

sscanf(buf,"%d%d",&tw,&th);

/* NULL check */

if(width) *width=tw;

if(height) *height=th;

do { fgets(buf,sizeof(buf),fp);

if(headbuf) strcat(headbuf,buf);

} while(buf[0]=='#');

return ftell(fp);}

else{

fputs("Not a PGM file....¥n",stderr);

fclose(fp);

return 0;

Page 34: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

34

}

}

/*ファイル書き込む*/

void write_data(char filename[],int im,int jm,unsigned char image[])

{ int i,j;

int bits=255; /*諧調値の最大値*/

FILE *fp;

/* ファイルをオープンしてファイルポインタをセットする*/

if((fp=fopen(filename,"wb"))==NULL)

{ perror("file can not open ");

exit(1);

}

/* P5 ファイルとしてヘッダをファイルに書き込む*/

fprintf(fp,"%s¥n","P5");

fprintf(fp,"%s¥n","#");

fprintf(fp,"%d %d¥n",im,jm);

fprintf(fp,"%d¥n",bits);

/* image の中身をファイルに書き出す*/

fwrite(image,sizeof(unsigned char),im*jm,fp);

fclose(fp);

}

/*1から0の乱数を作る*/

void gen_init(int n, int m,float a[M][N])

{

int i,j;

random_init(time(NULL));

for(i=0; i<n; ++i){

for(j=0; j<m; ++j){

a[i][j]=random();

a[i][j]=a[i][j]/RAND_MAX;

}

Page 35: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

35

}

}

int random_init(int s)

{

return((s*4221+2111)%RAND_MAX);

}

int random()

{

int ran;

ran=((ran*4221+2111))%RAND_MAX;

return(ran);

}

/* 逆行列の計算 */

int inv(g,n,nn)

float *g;

int n,nn;

{

int i,j,k;

float p,q;

float *gk,*gi;

for ( k = 0 , gk = g ; k <n ; ++k , gk += nn )

{

p=gk[k];

gk[k]=1.0;

for ( j = 0 ; j < n ; ++j )

gk[j]/=p;

for ( i = 0 , gi = g ; i < n ; ++i , gi += nn )

{

if ( i!=k )

{

q=gi[k];

gi[k]=0.0;

for ( j = 0 ; j < n ; ++j )

Page 36: ICA 独立成分分析 を用いた 時系列顔画像認識 - …honda/studentarc/01oda.pdfICA(独立成分分析)を用いた 時系列顔画像認識 高知大学 理学部 数理情報科学科

36

gi[j]-=q*gk[j];

}

}

}

}