こんにちは、産業能率大学で橋本ゼミに所属している小林航平です!
今回の記事では、文系の学生でプログラミング初心者の私がPythonとDeepFaceを使って、人との顔の一致度を測るコンテンツを作ってみたのでそちらを紹介と顔認識技術について考えていきたいと思います。
目次
そもそもDeepFaceってなに?
DeepFaceとは2014年にFacebook(現Meta)が作成した顔認識技術です。2014年当時では世界最高の顔認識の精度を持っており、セキュリティやエンターテインメントなど様々な分野で活躍しています。
DeepFace ダウンロードリンク:deepface · PyPI
しかし、2023年現在ではDeepFaceよりも優れた顔認識技術があります。
ではなぜ、DeepFaceを選んだのかというと私の使っているパソコン(Panasonic Let’s note)のマシンパワーでも扱える技術であることから、今回はDeepFaceを使いました。
オリジナルだと
Pythonによるプログラムとなっており、オリジナルのコードはこのようになっています
このプログラムで2枚の顔の写真で比較してみると…
今回試す写真はこの2枚
上は橋本ゼミの橋本先生と下は別角度の橋本先生です
実行結果がこちら
うーん…分からなすぎる
分かることは、‘verified’:Trueからこの画像はDeepFaceから見て同一人物として判定したということです。
コンテンツ化するには
ただし、このままでは学祭におけるコンテンツにはなりません。オリジナルのままでは本人なのか本人じゃないのかの判断しかできず、お世辞にも「面白い」と思えるものではないと思いました。
では、どのようにしたら面白いと思えるもの。つまり、コンテンツになるのか
オリジナルの欠点としては
- 読み取れる情報が少ない
- 比較する写真が出ないため何を比べているのか分からない
- True,Falseの情報以外が読み取りにくく面白くない
などが挙げられると思います。
そのため、私は以下の要素をプログラムで足しました。
- 比較する2枚の写真を出力する
- 2枚の画像の近似を返す’distance(浮動小数)’を分かりやすく提示する
です。
改善
改善して瑞木祭にて使用したコードが以下のようになっています。
これによりDeepFaceをコンテンツ化することが出来て、瑞木祭での実演が出来ました。
当日は、その場で写真を取り有名人とどの程度近いと判定されるのか?を表示しました。
なおdistance(2枚の写真がどれだけ離れているのか)は、浮動小数点として表示されるのですが、そのままではすぐに解読ができません。そこで、無理やり%表示にしています。
厳密には違いますが、今回のように概略だけわかればOKなので、この形で妥協しています。
そして先ほど試した橋本先生の画像を試してみると…
このようになり、初めてこれを見る人でも”2枚の写真がどれほど似ているのかを表すコンテンツ”だと出来るようになりました。
瑞木祭での実演と精度について考える
それでは実際に瑞木祭にて実演した例を紹介していきます。
*こちらで使用している画像は事前に本人に使用の許可をもらっているもののみです。
*また許可が取れてない人・芸能人の写真は著作権上、黒塗りにして職業、名前のみ表示しています。
まず、奇跡的なことですが瑞木祭にて来てくれた双子の男の子です(画像が出せなくてすみません)。私たち(他人)から見たら見分けがつきません。そして、DeepFaceでも本人だと認識していて99.31%という凄く高い値が出ました。なお、親御さんは見分けがついているそうです。
左は俳優の東出昌大さんと産業能率大学の教員である渡邊司輝先生です 人間から見て一般人のあの芸能人に似ているはDeepFaceから見て大体20%~30%の数値がほとんどでした。
左は同じゼミの先輩と妹さんです。本人同士は姉妹で似ていると思わないと言っていましたがDeepfaceでは似ていると判断し、55.04%ととても高い数値が出ました。
瑞木祭にてさまざまな兄弟や姉妹が体験してくれましたが皆かなり高い数値が出ていました。
今回、2人の人間の一致度を測るコンテンツとして使いましたが、そもそもとしてDeepFaceは顔認識技術です。つまり、私たちが普段使っているスマートフォンでの本人確認のための顔認証などで使われるものです。それにも関わらず一般人と芸能人などで’True’と出てしまうこともありました(つまりは同一人物として認識)。
ただ、明らかに似ていない人同士や男性と女性で比較したときには一桁の%を出していたため決して精度が一概にも悪いとは言えません。なお、顔認識技術は人間が似ている・似ていないと思う’感覚’的な部分で決めているのに比べ、’数値’で表している部分が面白いと思います。
まとめ
今回はDeepFaceという顔認識システムを使い人間同士の顔の一致率を図るコンテンツを作成し、瑞木祭で実演、その結果からDeepFaceの精度や人間と顔認識技術での似ている・似ていないの判断の出し方などについて書いていきました。
今回の一連の流れを通して、Pythonというプログラミング言語を用いてプログラムの作成方法、プログラミングでの課題解決、DeepFaceの精度、人と顔認証システムでの似ている・似ていないの判断の違いなど様々なことを考えていきました。また、人間同士だと「あの人、○○に似ているよね」という会話になったとき、「似ている」という人もいれば、「似ていない」という人もいます。それはり人によってその人への印象が異なるなど様々な要因があります。一方、顔認証システムでは人に対して印象がない同じ機械によって判断される上に、数値が出るなどの信頼性があります。顔認証システムは現在スマートフォンの顔認証や空港などで使われています。今後はさらに街中の防犯カメラなどに搭載され指名手配犯逮捕などに使用されたり様々な活用があり得ると思います。
それでは
執筆:橋本ゼミ12期生 小林航平