顔認識の基礎(1): 顔画像データ作成

顔認識(Face Detection)問題とは

任意の画像が、顔画像かどうかを、コンピュータに判定させる問題

顔である
顔に近い
顔ではない

顔認識問題の解法

  1. 演繹的方法: 顔画像が満たすべきルールを人間が考え、条件分岐を利用して判定
  2. 帰納的方法: 大量の顔画像を保存しておき、比較してそれに近い画像を顔と判定
  3. 特徴抽出を利用した方法(機械学習): 顔画像に共通する特徴を抽出し、それを利用した数値的ルールを利用
本授業では、受講者の顔画像データから「固有顔」で特徴抽出する手法を実習する(固有顔の説明は次回)

今回の実習の目標: 顔画像データの作成と提出

自分の顔の写真を撮り、以下の画像群と同様の形式に編集・整形して、数値列として保存する
整形された顔画像の例
Source: Sheng Zhang and Matthew Turk (2008) Eigenfaces. Scholarpedia, 3(9):4244. Fig. 1.

顔写真の撮影

  1. Photo Booth を起動
  2. 証明書写真を撮る要領で自分の顔を撮影
  3. Photo Booth下部にある撮影した画像をドラッグして、デスクトップに移動
  4. 画像のファイル名を「face.jpg」に変更

gimpによる特徴点座標の測定

gimpでは画像操作を行わず座標値の測定のみ行うことに注意
  1. gimpを起動 参考
  2. 「ファイル」→「開く」を利用してface.jpgを読み込み
  3. 左下に座標が表示されるので、鼻の頭にカーソルを合わせてその座標をメモする(小数点以下は四捨五入)
  4. (cx,cy)から垂直に伸びた直線と、左右の目頭を結ぶ直線の交点辺りにカーソルを合わせる
  5. 画像ボックスの始点(sx,sy)を、sx=cx-2*r 及び sy=cy-2*r により計算しておく
  6. 画像ボックスサイズ R=4*r を計算しておく

ターミナル上でのconvertコマンド操作による画像整形

  1. ターミナルを起動し、「$ cd Desktop」によりデスクトップフォルダに移動
  2. 以下のconvertコマンドの実行により、face.jpgを順番に整形 参考
    注: tmp は temporary の略で、一時的にのみ利用するファイル名によく利用される
    1. 「$ convert -crop RxR+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 のボックスに切り取られる
    2. 「$ convert -resize 100x tmp1.jpg tmp2.jpg」を実行:
      画像が100x100のピクセルサイズに変形される
    3. 「$ convert -type GrayScale tmp2.jpg tmp3.jpg」を実行:
      画像が白黒に変換される
    4. 「$ convert -compress none tmp3.jpg face1.pgm」を実行:
      画像がテキストとして可読な数値列形式(非圧縮のPGM形式)に変換される
      テキストとして表示したデータ

作成した画像データの検証と提出

  1. 作成した画像データ face1.pgm が正しいかどうかを以下の三つの方法で検証する
  2. 以下の注意事項をよく読んで理解した上で、第11回実習課題として、face1.pgm をITC-LMSに提出すること

その他の実習作業