新規に顔画像登録する方法

アイキャッチ画像

新規に顔画像登録をする場合実に様々な方法がありますが、今回は「サンプルプログラムを動かす時にちょっと必要」ぐらいの用途にしぼって解説します。
前提として、顔画像を切り出す場合には 200x200px にしてください。(だいたい…で構いません。)

手作業で顔画像を切り出す場合

まず誰の顔を切り出すかによりますが、芸能人の顔を切り出す場合には「画像修正の可能性」を考えてください。私達の目からみると単に美しい顔画像でも高度に修正がかかっている場合がかなりあります。この場合、プログラム側からみると「全く別の人物」になりますので気をつけてください。このようなことから google の顔画像検索から顔画像を持ってくることはおすすめしません

画像修正がかけられている場合がある例
画像修正がかけられている場合があるお勧めできない例

YouTube などから動画を引っ張ってきて素材として使う場合、その動画の中から顔画像を切り出すことをおすすめします。この場合は修正がかかっていることもなく光源も一定なのでプログラム側から「同じ人物」として認識されます。
顔画像ファイル名は人物名にしてください。また表情の異なる顔画像を複数枚用意すると認識率が向上します。その場合のファイル名は「人物名01」「人物名02」などにすると良いでしょう。

動画から顔画像を手動で切り抜く例
動画から顔画像を手動で切り抜く例
顔認証結果
顔認証結果

開発室に居る方たちの「自分たちの顔」を切り出すこともあると思います。
その場合は USB カメラから映された自分の顔をキャプチャソフトで切り出すか、一度スクリーンショットをとって後から画像加工ソフトで切り出すか、そんなところだと思います。
ソフトは使い慣れたものを使っていただいて構いません
ファイル名は人物の名前にしてください。
ノートパソコン付属の USB カメラの場合、広角カメラを使っていることがあり近づきすぎると顔画像が歪みます。この場合もプログラム側からは「違う人」に認識されますので気をつけてください。

自動的に作成する

FaceCrop

弊社の FaceCrop というプログラムを使って USB カメラに映った顔を自動的に切り抜く方法もあります。
ダウンロードした FaceCrop を解凍後、ご自身の顔が中心になるように画面に移してください。output フォルダに 200x200px で切り抜かれたグレー画像が沢山たまりますので、「正面・左右・上向き・下向き」のベストショットを選んで頂きファイル名をご自身の名前で置き換えていただければ結構です。
(顔画像をグレー処理することによって、いかに光源状態が悪いかがよく分かるのでワザとグレー処理してます)

Face01 がインストールされている環境でしたら既に Python ライブラリがインストールされていると思います。一応念の為必要なモジュールを下に載せときます。

  • numpy
  • opencv-python
  • Pillow

またカスケードリストとして

  • haarcascades/haarcascade_frontalface_alt_tree.xml
  • haarcascades/haarcascade_profileface.xml

が必要になりますが、同じディレクトリに既に入れてありますので新たにダウンロードする必要はありません。
標準出力に顔が認識されたかどうか出ますのでそれを見ながら顔の向きなどをしっかり正面を向けて撮影してください
顔が表示されているウインドウで「q」を押すと終了します。

FaceCrop フォルダの中身
FaceCrop フォルダの中身
FaceCrop を動作させている様子
FaceCrop を動作させている様子

FaceCrop_CNN

常時マスクをつけている状態での顔認識は FaceCrop ではなく FaceCrop_CNN を用います。
FaceCrop_CNN は対象となる顔を CNN データを参照しながら検出します。そのため NVIDIA 製グラフィックカードと CUDA 環境設定が必要となります。
マスクをした顔は FaceCrop では検出しづらいからです。
もし CPU のみで動かす場合には非常に動作が遅くなりますが、処理自体は問題なく動作します。
FaceCrop_CNN も FaceCrop 同様、output フォルダに 200x200px で切り抜かれた画像が沢山たまりますので、「正面・左右・上向き・下向き」のベストショットを選んで頂きファイル名をご自身の名前で置き換えていただければ結構です。

顔認識フォルダに格納する

切り抜いてファイル名を「人物名」に置き換えたファイル群は、「pictures_of_people_i_know」フォルダに格納してください。
既に npKnown.txt がある場合は必ずこのファイルを捨ててください。
捨てるだけで勝手に顔画像の再エンコードをしてくれます。
「pictures_of_people_i_know」フォルダと npKnown.txt 内の128次元データとの整合性が崩れている場合、アプリケーションを止める仕様になっています。

以上です

Follow me!