コンピューターは「人間の目線」をどのように認識するのか?

コンピューターは「人間の目線」をどのように認識するのか?

  • GIGAZINE
  • 更新日:2021/02/21
No image

コンピューターがデジタルな画像やムービーをいかに理解するのかという問題を解き明かす研究分野が「コンピュータビジョン」です。エンジニアのFabrizio Di Guardo氏が、自身が開発した目線の移動で線を描ける「EyeDraw」のアルゴリズムを通じて、コンピュータービジョンのアルゴリズムがどのように使われるかを解説しています。

EyeDraw — How to draw with your eyes using Computer Vision | by Fabrizio Di Guardo | Jan, 2021 | Towards Data Science

https://towardsdatascience.com/eyedraw-how-to-draw-with-your-eyes-using-computer-vision-226317501e6a

No image

EyeDrawはオープンソースのコンピュータービジョンライブラリ「OpenCV」を用いて、Pythonで開発されている目線で線を描くためのソフトウェアです。EyeDrawは目線の認識に際し、「Haar Cascadesによる顔検知」「瞳をブロブ(塊)として検知」「ホモグラフィによる瞳とカーソルのマッピング」という3つのアルゴリズムを用いているとGuardo氏は説明しています。

第一ステップは顔と目の認識です。認識の手法としては、OpenCVが提供する事前学習モデルを用いたHaar Cascadesの特徴量識別子による画像解析を採用しているとのこと。特徴量識別子は「こういう特徴を顔と目は持っている」とコンピューターに理解させる役割を果たしており、識別子を顔の画像に重ねることで、コンピューターに顔と目の特徴を捉えさせています。

No image

顔と目を認識できたら、次は瞳を「ブロブ(塊)」として検出するとGuardo氏は説明。ブロブはコンピューターにとって「ある特定の性質を共有するピクセル群」であり、瞳の検出に適しているとのこと。画像を数値に変換した後、OpenCVのfindContoursメソッドを用いて検出した輪郭の中心とその半径を推定することで、瞳を検出しています。

No image

次の段階として、検出した瞳と画面のカーソルを対応させる必要があります。Guardo氏はこの対応を実現するために「「ホモグラフィ(射影変換)」」と呼ばれる図形処理技術を用いているとのこと。ホモグラフィは異なる平面上の2つの点を対応させるための技術。ここでのホモグラフィは、数学的には2次元の座標空間上の点を表す3次元ベクトルを、他の点を表す3次元ベクトルに変換する3×3の行列です。

No image

ホモグラフィによる瞳とカーソルの対応を行うためには、「正しい対応」をコンピューターに知らせるための「キャリブレーション」が必要です。キャリブレーション機能はEyeDrawにも備わっており、OpenCVのメソッドを使えば簡単に実現できるとのこと。

No image

ここまでの処理で、コンピューターは「ユーザーがスクリーンのどこを見ているか」を認識できるようになりました。しかし、これだけではコンピューターは、カーソルの移動が「線を描いている」のか「カーソルを他の場所に移動させている」のか判断できないので、Guardo氏は「ポインターモード」と「カーソルモード」機能を実装し、手動で切り替えることで問題を解決しています。

No image

近年はディープラーニングがコンピュータービジョンの強力な対抗馬となっています。しかし、Guardo氏はディープラーニングの複雑さを指摘し、理論的に明快なコンピュータービジョンが医療やセキュリティなどの分野で使われ続けていると語っています。

Guardo氏が開発した「EyeDraw」はGitHubに公開されており、無料で誰でも利用することができます。

GitHub - fabridigua/EyeDraw: Small computer vision software that allows you to draw with your own eyes

https://github.com/fabridigua/EyeDraw

この記事をお届けした
グノシーの最新ニュース情報を、

でも最新ニュース情報をお届けしています。

外部リンク

  • このエントリーをはてなブックマークに追加