■経緯 顔でして個人を特定してログインするプロトを作ってみたい。 イメージとしてはiPhoneのfaceID。 例えば従業員の顔データを登録しておき、ドアの前で顔認証を行いロックを解除する。
■調査 普通の2次元の顔写真データが対象であれば既にライブラリが多々ある。 いずれも画像データをベクトル化し、内積やコサイン類似度を使って似てる度合を算出する。 閾値を設けてOK・NGを判定、というような方式。 閾値の設定で、判定を厳しくしたり緩くしたり調整する。
iPhoneのfaceIDのような奥行き付きデータ(RGB-Dデータ)を対象としたライブラリは自作する必要がありそう。 RGB-Dデータを学習させてモデルを作って、内積から類似度判定というロジックは流用できると思う。
■試しに使ってみたライブラリ facenet https://github.com/davidsandberg/facenet
■facenet所感 2次元画像での簡易判定であれば充分使える。 WebカメラとPCを接続して個人判定くらいでよければ、開発コストも抑えられる。
ただ本格的にやるのであればデプスカメラ(3Dカメラ)を使って奥行きデータまで使って判定する必要がある。 そうしないとマスクの有無、眼鏡の有無、双子の違い等が正確に判定できない。
デプスカメラは高価だし、奥行きデータまで使って精度の高いモデルを作るにもは開発コストは結構かかると思う。