ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

Deep Learing以前の技術で瞳検出とトラッキング

REAL-TIME DETECTION AND TRACKING OF HUMAN EYES IN VIDEO SEQUENCES

前から読みたかった論文をようやく読めたので、軽く紹介します。 1ooページ越えの対策ですが、画像処理や機械学習の基礎的なところも書かれていて勉強には良いと思います。

https://etd.lib.metu.edu.tr/upload/12606459/index.pdf

内容はDeep Learning以前に使われていた顔検出や瞳検出等のテクニックを紹介しています。最終的には、瞳のリアルタイムトラッキングまでやりましたという内容になっています。この論文を読んで改めてDeep Learningってすごいなと思うと共に、Deep Learning以前の技術をちゃんと残しておかないと、技術が断絶しそうなそんな思いで読んでました。

一般的なコンセプトと画像処理の背景

最初に目の構造や、行列計算、色空間の話があります。ここが教科書としてよくまとまっている気がしました。

目の構造

言葉の定義も重要ですが、Deep Learning以前の物体検出では対象物の特徴をしっかりと掴むことが重要でした。見つけたいものがeyeなのか、pupilなのかでまたアルゴリズム変わってきます。

f:id:natsutan:20200705220029p:plain

線形代数

分散、共分散の話から、PCAまで軽く基本を押さえています。PCAが後で効いてくるのが伏線っぽくて良かったです。 Deep Learning以前の識別タスクというのは、基本的に次元削減の技術で、例えばエッジだけを見たり、ヒストグラムを取ったり、周波数領域に移したり、特徴量の抽出が大変でした。

色空間

ここが僕自身あんまり分かってなかったというか、使わない色空間の知識が全くなくて勉強になりました。 こんな感じで基本的な考え方から、RGBの変換式まで説明があります。

f:id:natsutan:20200705220055p:plain

グレイ、HSV、XYZ、CIELAB、YCbCrの五種類の色空間の説明があります。それぞれ、こういう色空間がある理由と、使い道(使い分け)について軽く書いてありました。

従来の領域検出

Deep Learning以前の領域検出のアルゴリズムとしてスネークアルゴリズム(動的輪郭モデル)が紹介されています。

本当はここをさくっと動かしてブログを書きたかったのですが、簡単には動かず諦めました。 アルゴリズムは、まず物体の外側に領域を作って、その領域がだんだん小さく丸くなるように狭めていきます。

f:id:natsutan:20200705220236p:plain

あとは、これが物体の領域に引っかかって小さくなるのが止まれば良いのですが、やってみるとこんな感じ。

f:id:natsutan:20200705220242p:plain

んー、アルゴリズムとしては動いてそうだが、もうちょっと絞って欲しい。そうだ、まず上の部分の領域を作っている点を増やそうと思ってやってみましがた、上手く行かず。

状況を知りたいので、対象物を無視してちょっと小さくなる雰囲気だけ見てみると。

f:id:natsutan:20200705220251p:plain

なるほど、小さくなるアルゴリズムは、領域を構成する点の重心を目指す事がわかりました(これは別のアルゴリズムもあるらしい)。見つけたい物の中心と領域の重心が合ってないと上手く行かない。こんな感じで、見るからに調整が面倒なアルゴリズムです。そもそも凸凹したものは駄目っぽいです。

こんな単純なレベルでもDeep Learningの方が簡単そうです。

スネークアルゴリズムに関しては、いろいろ派生のアルゴリズムがあるのですが、パラメータに敏感で試行錯誤大変そうでした。

従来の顔検出

ハールライク系列と、固有顔しかしらなかったですが、結構いろいろ紹介されていて面白かったです。

その中から隠れマルコフモデルを使った顔検出を紹介します。

f:id:natsutan:20200705220415p:plain

こういう使い方があるのかと驚きました。まあ、使う事は無さそうですが。

感想

使うかどうかは別にして、いろんなアルゴリズムを知れたのは良かったです。改めてDeep Learningのすごさを感じました。

一点収穫があり、eigenfaceの目版でeigeneyeが紹介されていました。eigeneyeの計算量が小さく済むのであれば、使い道がありそうです。 例えば、最初の物体検出で顔を見つけ、次にeigeneyeで目を見つけるのは意味があります。今のDeep Learningはどうしても入力画像を縮小することになるので、縮小した時点で潰れてしまう物を見つけるのは無理です。いったん縮小して対象物の外側を検出しそこから元の解像度に戻り従来手法で対象物を探す手法は、結果的に計算時間を減らせる可能性が有りそうです。

全体を通してReferencesが充実しているので、既存手法を今から押さえたい人には読む価値があると思いました。僕は楽しかったです。