Pythonで顔判定をやってみた
簡単にいろんなことができるのがPythonの良いところ
とか書いたけど、実際にやるとデータを集めにゃならんしパラメタの調整もせねばならんからそう簡単でもないぞ。
などといいつつPythonで使えるopenCVという画像データを取り扱うライブラリを使ってインターネッツから拾ってきた「顔っぽく見える画像」に顔が含まれているかどうかの判定をするコードを(インターネッツに転がっていたコード事例を見ながら)書いてみたのでその結果を発表します。
顔判定するための情報(「カスケード分類器」と呼ばれる機能で利用されるXMLファイルで、正面顔とか笑顔とか左目などもあり)もインターネッツで公開されているやつを利用しますた。この判定の基準となる情報は自分でも作れるらしい。そのためには機械学習用の正しいデータと間違ったデータを1万枚くらい集める必要があるらしい。学習はコードを実行するだけだけど、集めるのがタイヘンでそこで挫折しそうですな。
(学習用データをライブラリを使えば増やすこともできるみたいなので、今度やってみようかな、なんてな)
顔だと判定されたものの例
まずはこれたち。
もちろん人間の顔はきちんと顔として認識されます。ただし今の設定では横向きは認識せんのです。
マスクしてる写真も顔として認識されました。
さてここからが本番です。ヒトがみたとき顔っぽいと思われる画像がAIはどれくらい顔として認識するかお楽しみ。
で、心霊写真とかでよくあるような「地縛霊の顔が見えます」的な写真も見繕っていくつか判定させてみたら、何個か顔として判定されました。
次のは顔と判定されたやつ。
こちらは顔として判定されなかった心霊っぽいやつ
同じような写真でも認識されてないものもある。理由は不明。でもおそらくパラメタの設定かな?
画像が顔だと認識されたりされなかったりする原因を考察すれば、中学生の夏休み自由研究にはなるかもね。
こちらからは以上です。