こんにちは。株式会社マックスネット 人工知能・AI開発チームのIsoです。
今回はディープラーニングを小休止して、Opencvを使っての顔認識をやってみよう。
**********
顔認識というのは、ある画像の顔の部分を検出して矩形で囲む技術のことだ。
まずは顔画像を用意しよう。
こちらの画像を使って、顔認識できるのかを検証してみよう。
pythonのコードなどは、以下の記事を参照した。
Python, OpenCVで顔検出と瞳検出(顔認識、瞳認識)
上記サイトに記載のコードを適当な名前で保存(ここではtest01.py)して、実行してみる。
成功したら、保存した画像を表示してみよう。
とまあ、Opencvを使うと、いとも簡単に顔認識できるのかがわかる。
(ちなみに緑色の矩形は瞳認識だ。それと、右奥のライトを誤認識している)
で、ここで終わるには何ともつまらないので、いろんな画像を入れてみて、顔として認識できるのかを検証してみよう。
まず、アライグマ写真はどうだ。
…こちらは認識できずだった。そうですか。動物は苦手なんですね。
では、同じ霊長類だったら。
こちらのゴリラ画像はどうだ。
顔ではなく、鼻を顔として認識したようだ。言われてみれば、鼻の穴が目に見えなくもない。
お次に、たくさんの人物画像はどうだ。
顔は認識できたり、できなかったり。
瞳はほとんど認識できずだ。
ここで、真ん中行のメガネの男性は顔も認識できていない。
てことは、メガネ系は弱いのだろうか。
では、こちらの解像度バッチリのメガネ男性を認識チェックしてみる。
お見事に認識できている。但し、瞳認識はできていない。
結論を出すにはサンプル数が少な過ぎるが、ここまでの感想としては、解像度がそこそこあり、正面系の顔画像なら、結構な確率で顔認識はできるようだ。
しかし、瞳認識については、正面系でなるべくメガネ無し、でないときついのでは、といった感じだ。
いずれにせよ、結構楽しいOpencvでの顔認識だった。
時間があれば、下記も検証してみたい。
・イラスト画像は?
・人間顔に似た霊長類を探してチェック?
・変顔はどうなのか?
などなど。
皆さんもぜひ実験してみては。