OpenCV カスケード分類器をテストしてみました

2020年3月5日

以前の投稿でOpenCVを用いて顔認証をしましたが、OpenCVには認証に使うカスケード分類器(以降、分類器)がいくつも用意されています。

そこで、ライブラリに入っている主な分類器を動作させてみました。そのためにAndroidアプリ「AR-J-GPS」に選択メニューを用意して、それぞれテストできるようにしました。

(※「AR-J-GPS」は非公開です)

使用する画像について

本当は、実際に街で人や車などを撮影して画像認識したいのですが、職務質問されてしまいますので(汗)、ディスプレイに写った画像を撮影して画像認識します。

使用する画像は、google画像検索で「改変後の再利用が許可された画像」を使います。女性の画像は、「Flickr」に登録されているものを使いました。

1.haarcascade_frontalface_alt

顔認証の分類器は、他にもいくつか用意されていますが、私がやってみた範疇では「haarcascade_frontalface_alt」が一番成績が良かったです。

顔認証は精度が高く、顔認証した場所をフォーカスポイントにするカメラアプリケーションの作成に役立ちそうです。

2.haarcascade_eye

最近のカメラは瞳認証が付いています。瞳認証の分類器も精度が高く、カメラアプリケーションの作成に役立ちそうです。

3.haarcascade_lefteye_2splits

左目を判定する分類器ですが、この写真を使う限りでは、両目を認識することが多かったです。次の例にもあるように、画像によっては左目をきちんと認識すると思います。

4.haarcascade_righteye_2splits

右目を判定する分類器は、右目をきちんと認識します。他の画像でも試しましたが、髪型など条件によってうまくいく、いかないがありそうです。

5.haarcascade_upperbody

上半身を判定する分類器だと思いますが、うまくいきません。例では顔認証しています。

6.haarcascade_smile

笑った顔を判定する分類器だと思いますが、ぜんぜんダメです。使い方が違うのでしょうか?

7.haarcascade_fullbody

全身を判定する分類器だと思いますが、期待に反してうまく動作しません。防犯カメラなどに便利だと思うのですが、これも使い方でしょうか?

8.haarcascade_russian_plate_number

ナンバープレートを読み取る分類器ですが、ロシアのナンバープレート用なので、日本のナンバープレートでは全然認識しません。

これも役立ちそうな分類器なので、どこかで提供されていると嬉しいですね。

9.nackycascade

前に自作したナキウサギの分類器ですが、再利用可画像では全然認識できません。分類器の作り込みが全然足りませんね。

ちなみに、ここの画像だけスマートフォンのハードコピーを使用しています。他の分類器で使った画像は、分類器で判定した時に使う画像に認識したエリアを描画したものです。

AR-J-GPSのプレビュー画面にも認識した枠が表示されるようになっています。現状では、1秒間に2回程度の認識処理しかできません。カメラアプリだともっと早く表示されているので、何かうまくやるやり方があるのでしょうね。

10.まとめ

それぞれの分類器を試してみましたが、顔認証は成績が良く、カメラアプリケーションに使えそうです。それ以外については思ったような結果が残せず、使い物にはなりませんでした。 しかし、良い結果が出なかった分類器も、画像の大きさや質を変更することによって改善されるかもしれません。今後も試していきたいと思います。