Labmartの顔認証を実装してみる
この記事は,CPS Labo Advent Calendar 2018の14日目の記事です.
13日目の記事はこちら
ご挨拶
こんにちは,B3のanzyです.この度無事CPSに配属されました.よろしくお願いします.
Labmart is 何?
こちらをご覧ください.
顔認証システム
流れはこうです.
webcamが起動 → 顔検出 → 予測 → いわいっぺい!
開発環境
python3.5.2
ubuntu16.04
webカメラから画像を抽出
簡単ですね.あとはcap.read()をすれば1フレームを読み込むことが可能です.
リサイズとグレースケール化
画像サイズが大きいと処理が重くなってしまいます.リサイズとグレースケール化してあげます.
顔検出
簡単ですね.これだけで顔を検出できます.
Haar like特徴量とは(専門でなければ飛ばす)
Haar like特徴量とは,よくわかりませんがここが全てです.
簡単に説明すると,
- 探索窓の任意の位置に矩形領域を配置する.
- 矩形領域に任意のパターンを設定する.
- パターンの黒領域、白領域それぞれの画素値の和の平均を求める.
- それらの差を特徴量とする.
- 矩形領域の位置・サイズ・パターンを変えて繰り返す.
- 検索窓の位置を変えて上記を繰り返す.
こうして無数の特徴量Hを得られました.お疲れ様です.
予測
LBPHとはLocal Binary Patterns Histogramの略です.顔を小さなセルに分割し、それぞれのエリアのヒストグラムを比較します。
参考記事
labelが特定した人のid,conが信頼度みたいなものです.
conの閾値を設けることで,よりセキュア(?)な認証になります.今回は経験則から60以下としました.
さらに,labelが30フレーム連続で同一人物であるなどの条件をいくつか設けています.
いわいっぺい
こうして,ボスのイケボな「いわいっぺい」を聞くことができます.
まとめ
まだまだ,決算システムとしては未熟です.
顔を登録して顔認証してもらうと分かると思いますが,高確率で私のidになってしまいます.顔が平べったいからかもしれない
vueオタクとまた残留して頑張りたいと思います.
おわり