極私的視点(再)

思いついた時に、思いつきの文章とそれっぽい写真を大公開です。

Pythonで顔判定をやってみた

簡単にいろんなことができるのがPythonの良いところ

とか書いたけど、実際にやるとデータを集めにゃならんしパラメタの調整もせねばならんからそう簡単でもないぞ。

などといいつつPythonで使えるopenCVという画像データを取り扱うライブラリを使ってインターネッツから拾ってきた「顔っぽく見える画像」に顔が含まれているかどうかの判定をするコードを(インターネッツに転がっていたコード事例を見ながら)書いてみたのでその結果を発表します。

顔判定するための情報(「カスケード分類器」と呼ばれる機能で利用されるXMLファイルで、正面顔とか笑顔とか左目などもあり)インターネッツで公開されているやつを利用しますた。この判定の基準となる情報は自分でも作れるらしい。そのためには機械学習用の正しいデータと間違ったデータを1万枚くらい集める必要があるらしい。学習はコードを実行するだけだけど、集めるのがタイヘンでそこで挫折しそうですな。

(学習用データをライブラリを使えば増やすこともできるみたいなので、今度やってみようかな、なんてな)

顔だと判定されたものの例

まずはこれたち。

f:id:tonytani37:20210117144450j:plain

えべっさん(大黒天?)像はちゃんと顔として認証されました

f:id:tonytani37:20210117144558j:plain

人間を象った像は当然顔として判定されまする

もちろん人間の顔はきちんと顔として認識されます。ただし今の設定では横向きは認識せんのです。

f:id:tonytani37:20210117145033j:plain

いけめん

マスクしてる写真も顔として認識されました。

f:id:tonytani37:20210117145144j:plain

ちゃんと認識されました

f:id:tonytani37:20210117145227j:plain

こちらもちゃんと認識されました

f:id:tonytani37:20210117151235j:plain

こちらのマスクも顔と判定されました

さてここからが本番です。ヒトがみたとき顔っぽいと思われる画像がAIはどれくらい顔として認識するかお楽しみ。

f:id:tonytani37:20210117145650j:plain

なすびに顔があってもいいじゃないか

f:id:tonytani37:20210117145738j:plain

宮島のシカも顔判定されますた

f:id:tonytani37:20210117145807j:plain

スターウォーズに出てきそう

f:id:tonytani37:20210117145840p:plain

Twitterで見たことあるやつ

f:id:tonytani37:20210117145915j:plain

こっちも見たことあるやつで顔として判定されたやつ

で、心霊写真とかでよくあるような「地縛霊の顔が見えます」的な写真も見繕っていくつか判定させてみたら、何個か顔として判定されました。

次のは顔と判定されたやつ。

f:id:tonytani37:20210117150042j:plain

心霊写真その1 グレイっぽい

f:id:tonytani37:20210117150100j:plain

 心霊写真その2 幽霊っていうよりも宇宙人

f:id:tonytani37:20210117150123j:plain

心霊写真その3 ハムナプトラに出てきたやつか?

f:id:tonytani37:20210117150159j:plain

心霊写真というよりもアニメに出てきそうなやつ

こちらは顔として判定されなかった心霊っぽいやつ

f:id:tonytani37:20210117150353j:plain

ディズニーランドのホーンテッドマンションの庭に植わってるやつ(たぶん)

f:id:tonytani37:20210117150458j:plain

先住民族の長老っぽいぞ

同じような写真でも認識されてないものもある。理由は不明。でもおそらくパラメタの設定かな?

f:id:tonytani37:20210117150631j:plain

こいつは顔じゃないそうです

画像が顔だと認識されたりされなかったりする原因を考察すれば、中学生の夏休み自由研究にはなるかもね。

こちらからは以上です。