📱
スマホの画面注視認識機能を簡易実装する
はじめに
寝顔でスマホの顔認証ロックを解除 50万円の不正送金被害も どう防ぐ?専門家に聞いたというニュースがあり驚きました。悪い人はいろんなこと考えるんですね。
あなたの個人情報や資産に関する情報などが詰まったスマートフォン。普段はロックをかけているが、もし寝ている間にロックが解除されてしまったら?
そんな恐ろしい事件が実際に起きた。警視庁は、飲食店で知り合った男性が寝た後に、男性の寝顔でスマホやネットバンキングの顔認証ロックを解除し、不正に50万円を送金した疑いで、チュニジア人の男を逮捕したのだ。9/14(木) 15:54配信
このニュースで出てきた「画面注視認識機能」。要は、スマホの画面を見ているかどうかを認識する機能です。これを簡易的に実装してみました。
考え方
カメラを注視している、ということは、虹彩が目の中心か、あるいは寄り目ぎみになっているということです。
虹彩の位置を確認するにはmediapipe
を使えばできそうですね。
目の左端から右端にかけて1本の線を引き、その線の中心に虹彩があるかどうかを確認します。
入力動画
参考
Kazuhito00様のmediapipe-python-sampleを参考にさせていただきました。
それ以外の参考にしたサイトを以下に記載します。
- mediapipe/iris.md
- mediapipe/facemesh.md
- Real-time Pupil Tracking from Monocular Video for Digital Puppetry
- MediaPipe Iris: Real-time Iris Tracking & Depth Estimation
- Face landmark detection guide
- mediapipe/canonical_face_model_uv_visualization.png
実装
用意した関数
以下の6つの関数を用意しました。
出力動画
Right Eye is looking: center
Left Eye is looking: center
Right Eye is looking: center
Left Eye is looking: left
Right Eye is looking: left
Left Eye is looking: left
Right Eye is looking: left
Left Eye is looking: left
(前後省略)
この機能を使えば、画面の指示に従い虹彩を動かすことによって、マルチモーダルな認証を実現できるかもしれませんね。
Discussion