顔認識の基礎(1): 顔画像データ作成
顔認識(Face Detection)問題とは
任意の画像が、顔画像かどうかを、コンピュータに判定させる問題
顔である
顔に近い
顔ではない
顔認識問題の解法
演繹的方法: 顔画像が満たすべきルールを人間が考え、条件分岐を利用して判定
そのようなルールを人手で考案するのは手間が掛かる
例外が多く発生し、すべてに対応するのは困難
帰納的方法: 大量の顔画像を保存しておき、比較してそれに近い画像を顔と判定
コンピュータの得意分野に合致した方法
ただし、あまりにも大量な顔画像の保存と照合は困難
また、収集された画像に含まれない顔の判定は困難
特徴抽出を利用した方法(機械学習): 顔画像に共通する特徴を抽出し、それを利用した数値的ルールを利用
ルールは収集画像から自動で抽出可能
特徴さえ有効なら、収集画像に含まれない顔でも判定可能
従って例外的事例にも有効
大量の画像全てではなく、特徴のみを保存するので、軽量かつプライバシー侵害の恐れは低い
本授業では、受講者の顔画像データから「固有顔」で特徴抽出する手法を実習する(固有顔の説明は次回)
今回の実習の目標: 顔画像データの作成と提出
自分の顔の写真を撮り、以下の画像群と同様の形式に編集・整形して、数値列として保存する
整形された顔画像の例
Source:
Sheng Zhang and Matthew Turk (2008) Eigenfaces. Scholarpedia, 3(9):4244.
Fig. 1.
顔写真の撮影
Photo Booth
を起動
証明書写真を撮る要領で自分の顔を撮影
胸を張って、顎を引いた形
鼻筋は垂直となるように
無表情で目は前をまっすぐ見ること
何度か練習して撮り直すとよい
この段階では、顔の位置や大きさについては(はみ出さない限り)気にしなくてよい
Photo Booth下部にある撮影した画像をドラッグして、デスクトップに移動
画像のファイル名を「face.jpg」に変更
gimpによる特徴点座標の測定
gimpでは画像操作を行わず座標値の測定のみ行うことに注意
gimpを起動
参考
「ファイル」→「開く」を利用してface.jpgを読み込み
左下に座標が表示されるので、鼻の頭にカーソルを合わせてその座標をメモする(小数点以下は四捨五入)
座標は左上隅を原点として表示されることに注意
以下この座標を(cx,cy)として参照する
(cx,cy)が整形画像の中心となる
(cx,cy)から垂直に伸びた直線と、左右の目頭を結ぶ直線の交点辺りにカーソルを合わせる
垂直なため、x座標に変化は無いはずなので、この交点の座標を(cx,cy-r)として参照する
注: 交点にカーソルを合わすのが難しい場合は、左右の目頭のy座標の平均を cy-r として近似してもよい
rの4倍が顔画像の入るボックスの大きさとなる
鼻筋が垂直から大幅に外れている場合は写真撮影からやり直すこと
参考画像
による計測座標点のイメージ
画像ボックスの始点(sx,sy)を、sx=cx-2*r 及び sy=cy-2*r により計算しておく
画像ボックスサイズ R=4*r を計算しておく
ターミナル上でのconvertコマンド操作による画像整形
ターミナルを起動し、「$ cd Desktop」によりデスクトップフォルダに移動
以下のconvertコマンドの実行により、face.jpgを順番に整形
参考
注: tmp は temporary の略で、一時的にのみ利用するファイル名によく利用される
「$ convert -crop
R
x
R
+
sx
+
sy
face.jpg tmp1.jpg」を実行
注意:
R
,
sx
,
sy
はgimpにより測定した値を利用する
例:
R
=100,
sx
=300,
sy
=200の場合は、「$ convert -crop 100x100+300+200 face.jpg tmp1.jpg」を実行
画像が始点(sx,sy)、サイズR x R のボックスに切り取られる
「$ convert -resize 100x tmp1.jpg tmp2.jpg」を実行:
画像が100x100のピクセルサイズに変形される
「$ convert -type GrayScale tmp2.jpg tmp3.jpg」を実行:
画像が白黒に変換される
「$ convert -compress none tmp3.jpg face1.pgm」を実行:
画像がテキストとして可読な数値列形式(非圧縮のPGM形式)に変換される
テキストとして表示したデータ
作成した画像データの検証と提出
作成した画像データ face1.pgm が正しいかどうかを以下の三つの方法で検証する
face1.pgm を gimpで開いて、自分の顔画像になっていることを確認
(目、口、鼻の位置がおおむね下のサンプル画像と一致していることも確認のこと)
mi で face1.pgm を開くと、
このような数値列
が表示されることを確認
ターミナルで「$ head -3 face1.pgm」を実行して、以下の出力となることを確認
この出力は完全に一致する必要がある
P2 100 100 255
コマンドと記号の説明
head -3
ファイルの先頭3行を表示させるコマンド
P2
このPGMファイルが白黒グレースケール画像であることを示す
100 100
このファイルが100x100ピクセルの画像であることを示す
255
各ピクセルの輝度値(白さ)が0-255の数値で表現されることを示す
以下の注意事項をよく読んで理解した上で、
第11回実習課題として、face1.pgm をITC-LMSに提出すること
提出したファイルをこちらで統計処理して固有顔を抽出するため、
上記の検証を満たした正しいデータを提出する
よう入念に注意すること
データ処理の都合上、
ITC-LMSへのデータの複数回提出はしないこと
(正しく作成した face1.pgm を一回のみ提出すること)
上記の注意事項にも関わらず、
明白な不注意によって不適合なデータを提出した場合は減点対象とする場合がある
提出された画像データの使用条件は下記の通りなので、各自確認のこと
提出されたデータは本授業の総合実習のみで利用し、他の目的で使用することはありません。
データを受講者以外の者に配布することはありません。
提出された顔画像そのものを、他の受講者に配布することはありません。
全ての画像を統計処理することにより抽出される「固有顔」は、次回、受講者全員に配布します。 なお、「固有顔」のみから各人の顔画像を復元することは、ほぼ不可能です。
その他状況に応じて、プライバシー保護に必要な措置をとります。
その他の実習作業
必須作業(比較用の自顔画像の作成)
: 次回授業までに必ずやっておくこと(総合レポートの必須課題において利用する)
ヒント: 「$ convert -crop
R
x
R
+
sx
+
sy
-resize 100x -type GrayScale -compress none face.jpg face2.pgm」のようにすると、tmpファイルを通さず一気に整形可能
注意: 写真の画像ファイル名をface2.jpg等に変更して保存した場合は、コマンドの引数であるface.jpgも変更が必要
もう一枚無表情の自分の顔画像を撮影し、同様の整形作業を行って、100x100の白黒画像として face2.pgm を作成しておく(face1.pgm をコピーしてはならない)
任意の軽い表情の顔画像(微笑、目を閉じる、眼鏡を外す等)を撮影し、同様に整形して、face3.pgmを作成しておく
任意の大きく標準ポーズから外れた顔画像(うつむく、横を向く、口を大きく開く等)を撮影し、鼻の頭を中心として同様に整形し、face4.pgmを作成しておく
デスクトップに顔画像用のフォルダ「faces」を作成し、作成した画像はそこに入れておく
発展的作業1(顔画像と非顔画像)
: 余裕がある場合はできるだけ進めておくとよい(応用課題において利用する)
SIPI画像データベース
から、いくつか顔画像を選択して同様の手順で整形画像を作成しておく(鼻の頭を中心とすること)
例1
: 正面を向いていない
例2
: ややうつむき加減
例3
: 半分近く顔が隠れている
SIPI画像データベース
から、いくつか非顔画像を選択し、100x100の白黒画像を作成しておく
注意: 画像の一部を切り取って取り出す必要はない(注目したい部分があるなら取り出してもよい)
例1
: 家
例2
: 飛行機
例3
: 湖
注意: データベースの標準画像形式はjpgではなくtiffであるが、作業手順は上記と同様であり、最終的にpgm形式にすればよい。どうしても途中をjpg形式で作業したい場合は、「$convert image.tiff image.jpg」で形式を変換してから作業を進めてもよい。
発展的作業2(様々な表情)
: 更に余裕がある場合は作成しておくとよい(応用課題において利用する)
以下の画像を参考に、7種類の基本的な感情の表情(Happy, Surprise, Contempt, Sadness, Fear, Disgust, Anger)を自分の顔に浮かべて撮影し、画像を作成しておく
表情の例
Source:
David Matsumoto and Paul Ekman (2008) Facial expression analysis. Scholarpedia, 3(5):4237.
Fig. 2.
注意: この画像例は誇張気味の表現なので、もう少し柔らかい表情にしてもよい