コンピュータは石頭か?

最近ちょっと、検索技術のことが頭から離れず、検索について思いを巡らしています。そんなとき、ふと本屋さんで次の本が目に留まり、購入しました。
佐藤真一氏、齋藤淳氏の”石頭なコンピュータの眼を鍛える”です。

石頭なコンピュータの眼を鍛える (丸善ライブラリー)

石頭なコンピュータの眼を鍛える (丸善ライブラリー)

冒頭”コンピュータって、画像や映像(動画)を扱うのがとても苦手なんです。”で始まります。えっ!、そんな、インターネットでは画像や映像がばんばん流れているのに?そうなんです、コンピュータって、画層や映像を表示するだけなら得意ですが、それが何であるかを理解するのは苦手なんです。この本を読むと、そのことがよく分かります。
画像認識(=画像検索)は、検索技術として、かなり高度な部類に入ります。結局、人間が対象物を見て、それが何であるかを認識するのと同じことをしなければ、画像検索はできません。この本の中では、”コーパス”とうい手法を紹介しています。コーパスとは、大量の画像や映像をもとに、これが何であるかをひたすらコンピュータに教え込む手法です。

本の中では、米国国立標準技術研究所(NIST)が主催するTRECVIDの活動を中心に書かれています。
さて、どうやって、コンピュータに画像を理解させるのでしょうか?
顔認識の技術として、特徴量を抽出する手法(Haar-Wavelet-like特徴量の抽出)が紹介されています。昔は、目や鼻や口の位置関係から顔を認識するアプローチがとられていましたが、この特徴量を抽出する方法は、まったく異なった方式です。白と黒のマスクを対象の画像に被せ、その白と黒のマスクにおおわれた画素の輝度の差分を数値化します。白と黒のマスクから抽出される特徴を、顔の画像と顔でない画像とで比較していきます。マスクのパターンもいろいろ試してみて、顔と顔でない画像を区別できるほどの特徴量の分布差が得られるマスクのパターンを、コンピュータが探していきます。大量の、顔が映っている画像と顔でない画像をコンピュータに読み取らせ、顔が映っていればこのような特徴量になるとか、特徴量がこううであれば顔が映っているという判断基準を、コンピュータに作らせるわけです。顔とそうでない画像を読み取らせて(=学習させて)、コンピュータに判断基準を作らせてしまうところがミソです。
特徴量抽出に関する資料で、オムロン技術本部の発表資料が分かりやすいです。こちらです。”統計的学習手法を用いた物体認識における特徴量の進化”

本文で次に紹介されているのが、Bag of Featureです。パーツから全体を判断する手法です。このアプローチの一つの手法として、SIFT(Scale Invariant Feature Transform)アルゴリズムによる特徴量の抽出が注目されています。これは簡単にいうと、画像の中で特徴が際立っている部分を抽出する手法です。(注:Webで調べてみましたが、SIFTは特許が取られているようです。)
このSIFTの手法は、画像のスケール変化や画像が回転しても不変な特徴量を抽出します。
SIFTのアルゴリズムは、特徴点の検出(detection)と特徴点の記述(description)の2段階からなり、それぞれ以下のような処理をします。
①detectionの処理
・スケールとポイントの検出(DoG処理:Difference of Gaussianによるスケールとポイントの検出)
・キーポイントのローカライズ(キーポイントから特徴点として適していない点を削除)
②description
オリエンテーションの算出(回転しても不変な特徴を抽出)
・特徴量の記述(オリエンテーションの結果により、キーポイントの特徴量を記述)

このSIFTの手法は、物体認識としてかなり強力ですね。物体が半分隠れていても認識してくれます。応用もいろいろと考えられています。画像のマッチング、特定物の認識、画像分類/検索、物体追跡等があります。
アルゴリズムを簡素化して、iPhoneアプリに適用したら面白いアプリもできそうですね。おもちゃ的なアプリができなたらいいですね。