顔認識ではOpenCVとDlibという代表的なライブラリがあります。Dlibの精度は高いとは聞いていたものの今まで使ったことがなかったのでUnityの『Dlib FaceLandmark Detector』($40)というAssetでテストしてみました。

Dlibで取得できる顔器官検出

Dlibでは顔器官検出ができ、顔の輪郭や眉毛、目などのパーツを68点のポイントとして取得できます。全ポイントは以下の通り。

dlibPointNum

テスト

テストではカメラからリアルタイムに目のポイントを取得してSpliteを重ねるようなアプリを作りました。

OS: Windows10 Pro
CPU: Core i7-3770K
GPU: GeForce GTX 660 Ti
メモリ: RAM 32GB

テスト結果

上記のPCスペックでカメラ解像度を1280×720で取得で10fpsほどで1600×1200だと3fpsぐらいになりました。(※動画は1280×720の時のものです。)

以前に顔認識プログラムを書いたのがOpenCV2のころなんですが、顔をある程度回転させても認識しますし、その頃と比べると精度はかなりイイです。ただフレームレートがやはり遅いためカメラから高解像度で取得する場合PCスペックはかなり高くないといけないです。

以下ラインがあるところは1600×1200の解像度の時のProfilerの様子です。とくにCPU、GPUはかなり食っており、大体CPUは400msでGPUはムラがありますが高い時で410msになっています。

dlibProfile1600x1200