
OpenCVによる非ディープラーニングの顔認識でどこまでできるのか試してみた!

IT技術

ディープラーニングを使わない顔認識
Githubで公開されている「Face-Detection-OpenCV」を実行し、OpenCVでの顔認識の限界を探ってみました。
このコードには、OpenCV(オープンシーヴィ)による、「非ディープラーニングの顔認識のテスト用コード」がまとまっています。
- 赤ちゃんのグレイ表示/顔認識テスト
- 3人の赤ちゃんの顔認識テスト
- 顔認識精度をパラメータ調整で向上させた例
- LBP方式の顔認識テスト
- Haar方式とLBP方式の比較
最終的にHaar方式、LBP方式という2種類の顔認識を比較しています。

Haar方式については、認識速度が遅く、壁に貼ったポスターの顔まで「顔」と認識してしまいました。
しかし、LBP方式は、実際の人間の顔のみキレイに認識出来た上、認識にかかる時間が1/3以下。
ここだけ見ると、「ああ、Haar方式って良いところないんだな。使わないようにしよう…」と思ってしまいます。
でも、念のため、別の画像で確認してみたいと思いました。
今回は、Haar方式とLBP方式の顔認識の違いで遊んでみたいと思います!
OpenCVインストール方法や環境構築に関しての記事
ドキュメント内の指定箇所のみ繰り返し実行する
今回は、毎回全コード実行するのは時間がかかるため、以下の方法で実行しました。
ドキュメント内の「Haar and LBP Results Analysis」の部分のコードが、test5.jpgを読み込む箇所です。
具体的には、C:\Users\<ユーザ名>\gitlocal\Face-Detection-OpenCV\dataのデータのうち、test5.jpgを差し替えています。

画像差し替え後、この部分から処理を再実行しました。
具体的には、該当箇所をクリックして選択状態にしてから、「Runボタン」をクリックです。

このあと、顔認識結果が表示される箇所までRunボタン連打で進めて、別の画像に差し替えて実験しています。
5人の人物の顔認識

緑の枠が表示されている箇所が、「顔がある」と認識されている部分です。
こちらの画像に関しては、きれいに認識できていますね。
多少斜めになっていても、メガネをかけていても、顔と顔がくっついていても問題なく認識しているようです。
サングラス、メガネ着用の人物の顔認識

サングラスは認識出来ているのに、LBP方式ではメガネの女性の顔認識ができませんでした。
…なぜ!?
手が顔にかかっているからでしょうか?
横顔の人物の顔認識

んー、残念!
Haar方式とLBP方式どちらも、横顔の人物は認識できませんでした。
斜めや逆さの人物の顔認識

Haar方式とLBP方式どちらも、斜めの人物の認識はできませんでした。
一定角度以上傾くと認識できないのかもしれません。
画像を回転させて複数認識処理するなどの工夫が必要なのかも知れません。
デフォルメ顔の認識

・・・これもダメか。
Haar方式とLBP方式どちらも、デフォルメされた顔は認識できませんでした。
「目鼻口がついていれば良い」というわけではなさそうです。
動物の顔認識

Haar方式とLBP方式どちらも、プレーリードッグの顔認識はできませんでした。
ここで1つの疑問。
では、猿など、人間に近い顔なら認識できるのでしょうか?
ゴリラでやってみましょう。

Haar方式だと、ゴリラの顔が認識出来ました。
木目の顔認識

木目や、天井のシミなど、なんとなく顔に見えることはありませんか?
そうなると、もし、そのような認識が可能であれば、「自動心霊写真検出システム」ができるのでは?
・・・などと、ウキウキして待っていましたが、認識できませんでした。
顔認識できなかったケースまとめ
- 一定以上傾いた顔
- 横顔
- 重なりあった顔
- 動物の顔(類人猿は一部認識)
- デフォルメされた(イラスト等)顔
このあたりを解決するには、「やはりディープラーニングを使おう」ということになるのでしょうね。
今回は、OpenCVを使ったHaar方式とLBP方式による顔認証についてご紹介しました。
ディープラーニングについての記事も、ぜひご覧くださいね!
こちらの記事もオススメ!
2020.07.28機械学習 特集知識編人工知能・機械学習でよく使われるワード徹底まとめ!機械学習の元祖「パーセプトロン」とは?【人工知能】ニューラルネ...
2020.07.30Python 特集実装編※最新記事順Responder + Firestore でモダンかつサーバーレスなブログシステムを作ってみた!P...
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ

「好きを仕事にするエンジニア集団」の(株)ライトコードです! ライトコードは、福岡、東京、大阪、名古屋の4拠点で事業展開するIT企業です。 現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。 いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。 システム開発依頼・お見積もり大歓迎! また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」を積極採用中です! インターンや新卒採用も行っております。 以下よりご応募をお待ちしております! https://rightcode.co.jp/recruit