以前OpenCVを使って簡単に物体検出をする方法を紹介しました。OpenCVを使うと、顔認識もできます。
オープンソースで顔認識のプログラムも配布されているので、簡単に試すことができます。今回は、OpenCVを使った顔認識を簡単に実践する方法を紹介します。
↓↓OpenCVを使った物体検出についてはこちら
ソースコードのダウンロード
ソースコードはGitHubで提供されています。下記URLからダウンロードし、任意の場所に配置してください。
https://github.com/Mjrovai/OpenCV-Face-Recognition
今回はFacialRecognitionを試してみます。
簡単3ステップで顔認識
FacialRecognitionは3つのスクリプトに分かれており、順に実行することで顔認識が可能になります。
1.学習用の顔画像を生成する
01_face_dataset.pyは学習用の顔画像を生成するためのスクリプトです。デフォルトではUSBカメラを接続している前提となっています。
スクリプトのcv2.VideoCapture(0)の引数を変更することで、既存の動画等から読み込むこともできます。また、出力先として、同階層にdatasetフォルダを用意しておきましょう。
顔画像は複数人まとめて作成することはできません。1人ずつプログラムを起動して画像を生成します。プログラムを起動すると、その人物のIDを入力せよと言われます。同一人物には同一IDを割り当てるようにしましょう。
2.顔画像を学習する
02_face_training.pyでは、01_face_dataset.pyで生成した顔画像を学習します。学習した顔は、次のプログラムで検出できるようになるという流れです。
このプロセスで意識しないといけないことは特になく、プログラムを実行するだけでOKです。なお、学習モデルはhaarcascade_frontalface_default.xmlに保存されます。
3.顔認識を実践する
ここまで来たら、実際に学習したモデルを利用して顔認識をします。03_face_recognition.pyを実行するとカメラの映像が表示されます。ここでもUSBカメラを使用する前提です。
カメラ映像に学習した顔と一致する顔が映ると、四角で囲まれ人物のIDが表示されます。また、その人物である確率も併せて表示されます。
OpenCVの学習におすすめ書籍
PythonでOpenCV始めてみようという方におすすめなのが以下書籍です。実装例も豊富なので、1からコードを書かずとも学習を進めることができます。
オライリーの1冊は読み物というより辞書としての利用におすすめです。お値段結構しますが、細かい情報までしっかりと詰め込まれています。
まとめ
OpenCVで簡単に顔認識を実践する方法を紹介しました。プログラムを一切書くことなくなかなかの精度で顔認識ができるので面白いです。もちろん、PythonやOpenCVの知識が多少あれば、自由にカスタマイズすることも可能です。
是非お試しあれ
ではでは👋