フリーの顔認識ソフト Face SDK for Windows Phone

顔で遊ぶのって、楽しい

顔で遊ぶといっても「あっち向いてホイ」をして遊ぶわけじゃあない。今回は、Microsoft Research が提供している Windows Phone 用の Face SDK の話をしよう。

Face SDK は、顔を認識するためのフレームワークで、Windows Phone でとても簡単に顔のデータを扱うことができるようになるのが特徴だ。身近な例では、人の笑顔に反応して自動的にシャッターを切ったり、複数人の顔を認識してピントを合わせたりする機能が付いているデジカメ、顔の周囲に四角が表示されるよね。アレが顔認識の基本なのだ。

難しいハナシより先に、まずはMicrosoft Research 自身が Face SDK を使って開発したアプリケーションをご紹介しよう。

「FaceMask」は自分(あるいは他人も)の顔に、ウサギの耳やライオンのたてがみなどをくっつけてしまうアプリケーションだ。これは Face SDK の「顔認識」と「顔配列」という機能を使って、このパーツは顔のどこに付くべきかを解析して自動的に画像を作成しているというわけだ。

「FaceSwap」は 2 人の顔を入れ替えてしまうアプリケーション。もちろん、ただ顔を入れ替えているわけではないのが面白いところ。このアプリは顔の輪郭や髪形などはそのままにして、顔の中身だけを入れ替えてしまうのだ。Face SDK の「顔認識」を使って 2 人の顔を特定し、「顔配列」の機能で顔の要素を取得する。あとは輪郭をそのままに、お互いの顔を入れ替えてしまうというわけ。

「FaceTouch」は写真などの表情をガラっと変えてしまうアプリケーションだ。目、鼻、口、おでこや頬をジェスチャー風に決められた順にタッチすると、表情がおもしろいように変わる。これも Face SDK の「顔配列」機能で取得した顔の各要素を元にして表情を編集しているのだ。

これらのアプリケーションの詳細は Microsoft Research FACE PARTY (http://msra.cn/faceparty\_introduction/home\_en.html) のページや Windows Phone Market Place で確認できる。もし Windows Phone を持っているなら、是非遊んでみてほしい。このように、Face SDK を使えば単純に顔を認識できるだけではなく、そのほかにもさまざまな機能が含まれている。まずは、簡単に顔認識についての基礎を駆け足で説明しておこう。

・顔検出 顔検出は文字通り写真などから顔を検出するための機能。写真から顔だけを自動的に切り出したり、写真の中に顔がいくつあるか、つまり何人いるかといった情報を取得したりできる。

・顔配列 顔配列は、目や眉毛、鼻、口、顔の輪郭といった顔の要素を取り出すための機能。顔配列の機能を使うと、人物を特定したり、どういった表情なのかを解析したりできる。

・顔追跡 顔追跡はビデオやカメラのライブ映像から顔の位置を特定するための機能。ライブ映像から顔だけズームするといったことが簡単にできる。

・似顔絵 似顔絵は、文字通り似顔絵を作ってしまう機能。もとになる写真をベースに、顔の特徴を解析して似顔絵をつくることができる。用意されているテンプレートを使えばメガネをかける、イヤリングを付ける、ひげ顔にするといったことがカンタンにできる。

・肌色の検出 肌色の検出は、写真などのイメージから肌色の部分だけを抜き出すための機能。顔検出や顔追跡などの機能と併用することで、精度の高い検出を高速に実行できる。

こんな感じで Face SDK では、「顔検出」、「顔配列」、「顔追跡」、「似顔絵」、「肌色の検出」の5つの機能が提供されるのだ。さて、それでは早く同僚の顔にチョンマゲを載せたくてウズウズしているあなたのために、そろそろ Face SDK の開発環境の作り方を説明しよう。

まず最初に Windows Phone 用のアプリケーションを開発するために、無料で公開されているWindows Phone SDK をインストールしよう。ここにはVisual Studio Express for Windows Phone をはじめ、開発に必要なすべてのツールが入っている。製品版の Visual Studio を持っている場合は、テンプレートが追加されるのでそのままインストールしてOKだ。さらに更新プログラムも公開されているのでインストールしておこう。そして忘れちゃいけない今回の主役、Microsoft Face SDK もインストールする。開発に必要なツールやWindows Phone用のアプリケーション開発方法などは「Windows Phone デベロッパーセンター」に詳しく書かれているので、あらかじめ目を通しておこう。

開発の準備ができたら、まずは Face SDK のサンプルコードをビルドして実行してみよう。Windows Phone を持っていない? 大丈夫、大丈夫。Windows Phone SDK には Windows Phone のエミュレータが含まれているので、PC 上で Windows Phone をエミュレートすることができる。サンプルコードには FaceAlignmentDemo (顔の検出)、FaceTrackerDemo (顔の追跡)、CartoonDemo (顔を似顔絵に変換)、FaceParty (顔検出アプリケーションのテンプレート)が含まれている。これらのサンプルを実行すれば Face SDK で大体どんなことができるのかがわかるようになっている。

CartoonDemo のサンプルコードをビルドして実行、ボタン 1 つで似顔絵が作成できる

Face SDK を使えば、アイディアしだいで実にさまざまなことができるようになる。Microsoft Reserch が提供しているいくつかのアプリケーションのように「顔で遊ぶ」ことはもちろん、もっと実用的に応用することも可能だ。たとえば、「顔の構成要素」をデータベース化しておいて、認証に使うことだってできる。さらに、「顔追跡」の機能を使って頭を左右に振るだけでページを送る電子書籍ビューアなんていう、「モノグサだけどとても便利」なアプリケーションだって作れるんだ。

……しまった、最初に「あっち向いてホイ」じゃないと言ったけど、Face SDK を使えばソーシャルな対戦型「あっち向いてホイ」ゲームを作ることができるじゃないか! お詫びに「あっち向いてホイ」ゲームのアイディアはお譲りしたいと思う、早い者勝ちなので開発はお早めに。