「金正恩は影武者か!?」何パーセントで本人であるかを表示

Face01_Graphics が 1.1.5 にアップデート

Face01 1.1.5 では内部アルゴリズムの改良により何 % で本人であるかをより詳しく表示、標準出力に出力できるようになりました。また自動保存される顔画像ファイルにも何 % であるかがファイル名の一部として保存されます。

どのような内容の検証デモ動画にしようか悩みましたが、影武者の存在が囁かれている北朝鮮の金正恩の写真を用いて参照顔画像ファイルとどのくらいの差があるかを題材にすることにしました。

テストスクリプトのコードは以下のとおりです。

サンプルスクリプト

# coding: utf-8

print('Start test_script')


import face01_115 as f


kaoninshoDir, pictures_of_people_i_knowDir = f.home()


known_face_encodings, known_face_names = f.load_priset_image(
	kaoninshoDir,
	pictures_of_people_i_knowDir, 
	jitters=10, 
	upsampling=0, 
	mode='cnn', 
	model='large'
)


xs = f.face_attestation( 
	kaoninshoDir, 
	known_face_encodings, 
	known_face_names, 
	tolerance=0.39, 
	jitters=0,
	upsampling=1,
	mode='hog', 
	model='large',
	frame_skip=5,
	movie='test.mp4',
	rectangle='true',
	show_video='true',
	frequency_crop_image=1
)

for x in xs:
	(name, pict, date, img, location, percentage) = (x['name'], x['pict'], x['date'], x['img'], x['location'], x['percentage'])
	print(name, percentage)
	

サンプルスクリプトの勘所

  • load_priset_image() 関数
    mode=’cnn’
    model=’large’
  • face_attestation() 関数
    tolerance=0.39   # かなり厳格な閾値設定
    mode=’hog’ # 速度を優先
    model=’large’

題材が「影武者さがし」なので tolerance ( 閾値 ) の設定はかなり厳し目にしました。
またマスクは考慮しないのでより正確性の高い model=’large’ 、つまり 68 points method を用いました。

題材の写真

どの写真が本人でどれが影武者なのか分かりませんのでとりあえず下の 2 枚の写真を「ホンモノ」と仮定して使用します。

参照する金正恩の顔画像ファイル
参照する金正恩の顔画像ファイル

顔認証処理対象となる写真はネットから拾ってきたランダムな 32 枚の写真を1つの動画ファイルとしてつなげた test.mp4 ファイルとなります。

金正恩と思われる複数の写真
金正恩と思われる複数の写真

顔認証結果

Face01 1.1.5 を用いて検証しました。
顔を囲む枠の左上もしくは左下にパーセンテージが表示されます。

自動保存された顔画像ファイルを似ていない順からソートしたフォルダ画像が以下になります。

パーセンテージの算出

face_distances の最も距離の近い値の時、( 閾値, percentage ) が

  • ( 0, 100% )
  • ( 0.42, 99% )
  • ( 0.5, 90% )

を通る y = -ax^2 + bx + c を求める。

y (%) = -4.76190475x^2 -0.380952375x +100 となります。
(将来変更される可能性があります)

y (%) = -4.76190475x^2 -600.380952375x +100
y (%) = -4.76190475x^2 -600.380952375x +100

影武者の検証

金正恩と思われる顔は全て「金正恩」と表示されました。そこでまず % の低い金正恩の顔画像ファイルの中でもパーセンテージの低いものから並べ替えてみました。

比較対象の類似度順配列
比較対象の類似度順配列

考察

こちらの写真はサンプルの中で最もスコアが低かった顔画像です。しかしながらスコアは 99.14% です。スコアだけを見ると「本人」です。本当にこれが影武者であるとすればすれ違っても全くわからないでしょう。

こちらは 2 番目にスコアが低かった顔画像です。それでも 99.16% です。こちらもスコアだけ見ると「本人」です。「本人です」としか答えようがありません。

他の検証サイトや YouTube を調べましたが整形したのではないか…などで顔で判別するのは難しいと書いておられる方もいらっしゃいます。本当に整形手術でこの様なスコアを出せるのならば脅威の技術です。
個人的には

この写真が怪しいなぁと思っていたのですが(ネットでも誰?なんて書かれていました)、顔認証処理の結果は 99.29% の確率で本人です。私の目には他の写真と雰囲気が違うと映ったのですが、機械は嘘をつきません。
人並み外れた顔認識能力を持つ人々を「スーパーレコグナイザー」と呼びますが、そのような専門家の方のご意見も聞いてみたいものです。

さてネットを観測してみると耳の形から検証している例も有りました。

実際、生体認証において「耳介」はよく使われる技術です。

なるほど、耳の形がちょっと違うような気がします。

「耳たぶの形が違う」と主張するサイトの記事については

【何となく分からんでもないんですけれど、まあ角度とか表情の作り方とかあとそのとき太ってるか太ってないか(中略)僕が見る限りはね、こういう耳たぶの映像・耳の形の映像も、まあ明らかな違いっていうのはないですね。】

「金正恩の影武者説」高須クリニック・高須幹弥氏の見解は?

どうやら耳の形は現役のお医者様に否定されているようです。

個人的に面白いな、と思ったのは「顔認証技術を用いて金正恩氏の「影武者説」を検証」というサイトです。こちらのサイトでは「Amazon Rekognition という内にある「顔の比較」という機能を使用」とありました。

Amazon Rekognition のサイト
Amazon Rekognition のサイト

先のサイトのまとめでも、全て「本人」という結果が出ているようです。
Amazon Rekognition と東海顔認証の Face01 ではアルゴリズム自体が異なるためパーセンテージの数字自体は異なりますが、Amazon Rekognition と Face01 が同様の結果を出力した結果となりました。

一卵性双生児の比較

一卵性双生児の芸能人であるマナカナさん、佐藤祥太・慶太さん、ザ・たっちの方々を顔認証処理してみます。
登録するかお画像ファイルにはどちらかお一人の顔を用いました。

登録顔画像
登録顔画像

ザ・たっちさんは登録顔画像に対して 99.3% でした。ギリギリ本人であると認証されるかも知れません。ここまで似ていればスマホのロック解除などは出来るでしょう。スマホのロック解除は閾値が解除されやすいように設定されているからです。

マナカナのカナさんは登録顔画像に対して 98.85% でした。マナさんの登録顔画像を使ってカナさんが顔認証を突破するのは難しいでしょう。

佐藤祥太・慶太さんは登録顔画像に対して 98.79% でした。こちらも祥太さんの登録顔画像を使って慶太さんが顔認証処理を突破するのは難しいと思います。

一卵性双生児の方が類似度は低い結果に。

先の金正恩の影武者探しでは、参照顔画像に対して比較対象は 99% を切ることはありませんでした。これは「本人」ということを表します。

対して一卵性双生児では、参照顔画像に対して 98% でした。顔認証システムの閾値設定にもよりますが Face01 顔認証システムから見たら「他人である」と判断されています。

まとめ

今回は Face01 1.1.5 におけるパーセンテージの機能拡張を紹介しつつ、その検証に「金正恩の影武者説」というゴシップ記事を用いました。
結果的には「顔認証処理では本人である」と出力されました。本当に本人なのかそれほど整形で似せているのかまでは分かりませんが面白い題材にはなりました。

最後にデスクトップ全体の検証動画を載せて終わりにしたいと思います。

最後までお読み頂きありがとうございました。

Follow me!