Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
固有顔による顔認証
東京大学大学院教育学研究科修士1年 黒宮寛之
固有顔(Eigen faces)の基本的な考え
● 人の顔はいくつかの基本画像の足しあわせで表せる
#1×0.2+#2×0.3+#3×(-0.01)+...
=
AT&T Face databaseより
コンピュータ上での画像の扱い
[[157 154 154 ..., 152 149 150]
[153 156 154 ..., 150 151 150]
[153 152 156 ..., 152 150 151]
...,
[148 143 138 ..., 112 108 111]
[135 131 151 ..., 108 112 106]
[148 193 217 ..., 105 110 106]]
画像の1ピクセルごとに対応する箇所の明るさ(白: 255〜黒:0)が数値で記録されている
(グレースケールの場合)
画像はベクトルで表せる
[157, 154, 154, ..., 105, 110, 106]
[[157 154 154 ..., 152 149 150]
[153 156 154 ..., 150 151 150]
[153 152 156 ..., 152 150 151]
...,
[148 143 138 ..., 112 108 111]
[135 131 151 ..., 108 112 106]
[148 193 217 ..., 105 110 106]]
一列に並び替える
画像は空間上に投影できる
点[157, 154, 154, ..., 105, 110, 106]
点[145, 110, 154, ..., 175, 115, 166]
*本当は3次元空間には
投影できないので、右の
図はイメージです
顔の基本画像をつくろう
● 今の画像も基本画像(■)の足しあわせでできている
しかし100×100ピクセルの画像を表すために■パーツは10,000個も必要
● 人の顔はもっと少数の基本画像で表現できるのではないか
基本画像の数を減らしていこう
● パーツの数を減らす
つまり
● 次元削減
つまり・・・
● 主成分分析!
主成分分析
空間上にプロットされた顔の数々について全員
に共通するような軸を取り出す
この軸(固有ベクトル)が、顔の基本画像である
AT&T Face databaseでの結果
数字は第i成分の寄与率
足しあわせをやってみる
せっかくなのでパーツをふやしてやってみる
次元削減の結果
● 1人の顔を表すのに10,000パーツ必要だったところが、100~200パーツ程度で表
現できるようになった
もういちど顔空間にもどって
● あたらしい軸(パーツ)で表現された顔
も空間上にプロットされる
● それぞれの座標の値は、そのパーツを
どのくらいの割合使ったかを表す
個人識別の方法
● 同じ人は写真が違っていても、同じパーツを同じ割合だけ使う可能性が高いと考え
られるので、空間上でも同一人物は近い場所に、別人物は遠い場所にプロットされ
るはずである。
なので
● ターゲット画像の空間上での距離を調べて一番近い画像が本人の可能性が高い
画像と画像の距離の計算
点[5,3,2,...]
点[2,3,4,...]
ベクトルの距離の公式を使う
距離=
顔認証やってみた
各画像との距離を計算して一番近いものを返す
成功!
おまけ:似ている顔の探索
● 固有顔アルゴリズムでは顔と顔の類似度が距離で出てくるので、3番めに似ている
顔、一番似ていない顔を探せるのではないか
似ている顔の探索
入力画像
結果 (dist=距離=類似度)
うーん、これは微妙かも
固有顔と個性
● データを平均して要約したり、一般的な法則をもとめるアプローチはデータを捨てる
ことばっかりやってるので、その真逆にある個人の特性をみるアプローチをやって
みようとのことだったが・・・
● 実際に今回やったのはデータを捨てまくって(次元削減)全体の大まかな傾向をつ
かむという、普遍的な法則をもとめるアプローチそのものだった
● (少なくとも固有顔では)個性の識別というのは、一般的な法則を求めた先にあるも
ののようである
これから
固有顔アルゴリズムは顔認証の中でも一番古典的なものらしいので、他の顔認証シス
テムも勉強してみようと思います。
今回の参考サイト:
Face Recognition with Python - bytefish.de

More Related Content

固有顔による生体認証