ご存知の方も多いと思いますが、riyaというサービスではアップロードした写真の中に顔があるとそれを認識して視覚化したり、物があるとそれを認識してその物に似た商品(場合によってはそのもの)をみつけてくれるという機能があります。一見すごい技術に見えるのですが、実はあるライブラリを使えばこれを簡単に実現することができます。
事の発端は単純に自分が顔認識をやってみたいと思ったからで、そのためのライブラリやソフトウェアがないのかなぁとネットをさまよっていたらこのライブラリに行き着いたというわけです。
そのライブラリは「opencv」といいます。
このopencvは、Intelが開発を行っているものでSourceforgeにてプロジェクトが進められています。このopencvというのは、別に顔認識に特化したライブラリではなく、「OpenCV (Open Source Computer Vision) is a library of programming functions mainly aimed at real time computer vision.」、つまりリアルタイムにコンピュータの画像、映像を扱うためのライブラリで、顔認識はその中の1つの機能となっています。
コンパイルは、Windows・Mac OS X・Linuxのそれぞれで可能となっているようで、自分はdebian上でコンパイルしました。WindowsとMac OS XですとWebCamなどとの連動も簡単に行なうことができるようなので、リアルタイムに顔を認識させるサンプルを見ることもできそうです(未確認)。ちなみにdebian上でのコンパイルは、普通に ./configure && make && sudo make install であっさりいけました。
ソースの中にはサンプルプログラムもありますので、それを参考に顔認識を行なってみたのが以下の写真です。
↓顔を認識して自動で○を付加

このようにかなりの精度で顔を認識させることができます。
このopencvのこの技術は、別に顔だけを認識させるための機能ではなく、元となるデータがあれば顔以外のものも認識させることができるような仕組みになっています。具体的には、ここやここにあるような、haar cascadesと呼ばれるXMLなどで表現されるデータを与えてやることによって、そのデータで表現されているオブジェクトを認識させることが可能となります。
このページでは、ペットボトルのデータを作成することでペットボトルの認識に成功しています。面白い。
元のデータを作るには多くのサンプルデータが必要となるのですが、その辺の使い方などに関しては、こちらのIntelのページに詳しくでています。
ちなみに、この顔認識などは別に画像だけではなく、最初に説明した通りリアルタイムな画像でも顔認識をさせることもできるのですが、手元にその環境をまだ作っていないため試せていませんが、あとで試せたらご紹介しようかと思います。
このライブラリは現在Pythonでのバインディングのみ提供されていますが、近い将来にid:spiritlooseさんがCPANモジュールを作ってくれると信じています。(たまたまこのライブラリをいじっていたら、id:spiritlooseさんがCPANモジュールを作ってるという記事を書いててビックリしました)
ということで遊びで、鎌倉の大仏でも認識するんだろうかと思ってやってみたのが以下です。
↓大仏

↓認識してくれた!すげー。

ちなみに、最近眼の認識をさせようとしているのですがどうも眼だけの認識になると顔に比べて情報量が少ないため誤認識が多くなってしまうようです。両目でのデータを使えば精度が上りそうな気もしますが。その辺も今後見ていければと思っています。
売り上げランキング: 25995
CQ出版
売り上げランキング: 4119




コメントする