攻略! ツール・ド・プログラミング (22) Face.comが無料公開した顔認識APIとは

ニュース
トップ

【コラム】

攻略! ツール・ド・プログラミング

22 Face.comが無料公開した顔認識APIとは

杉山貴章  [2010/05/28]

22/61

Face.comとは

Face.comは、デジカメで撮影された写真の中から顔の位置などを自動で認識し、それにタグを付けて分類することができるオンラインサービスである。Face.comでは、スキャンした写真から顔にあたる部分を探し出し、その特徴(目や鼻などのパーツの位置や性別、眼鏡をかけているかなど)を記録する。利用者は検出された顔に対してタグを付け、友人などに公開することができる。そして利用者やその友人が他の写真を閲覧したりスキャンさせた際に、そこに写っている顔と近い特徴を持った顔の情報をFace.comが保持していれば、その顔に付けられたタグが新たにスキャンした顔に自動で適用される。

たとえば、筆者がいくつかの顔写真をアップロードして、検出された自分の顔に"takaaki"というタグをつけたとする。すると、次に誰かが筆者の顔写真をアップした際には、Face.comはそれを筆者の顔であると判断し、自動で"takaaki"というタグを付けてくれるというわけだ。認識精度はかなり高く、動作も高速だ。

このサービスは当初はFacebook向けのアプリケーションとして、Facebookのアルバムに適用する形で提供された。タグはFacebookのアカウント情報と関連付けられ、その顔がどのユーザのものなのか自動で識別できるというものだ。タグ情報の公開範囲はアルバムの公開範囲に準ずるため、見ず知らずのユーザに無闇に自分のタグ情報を参照される心配はない。このサービスを利用することによって、アルバムの写真を自動で分類したり、Facebookを利用している友人を探したりといったことができる。

図1はFacebookアプリケーションの「Photo Tagger」を使ってみた様子である。Facebookのアルバムに顔写真がアップロードしてあり、4枚並んだ写真のうち左の2枚にはすでに自分の名前をタグとして付けてある。他の4枚は今回新たに顔として認識されたもので、右上の2つは自動で筆者の顔だと判断された。ただし、右から2番目は別の人なので誤認識である。下の2つのうちの右側は筆者だが、これは自動では認識されなかったので手動でタグ付けした(図2)。当然だが、サンプル数が増えれば認識率は上がる。

図1 Photo Taggerで顔写真にタグ付けを行う

図2 手動でタグを付ける。写真全体から顔の部分だけを検出しているのがわかる

Facebook以外にも、Face.comではTwitterと連携したアプリケーションも公開している。これはTwitterに投稿された写真から有名人の写ったものを自動検出し、celebrityfindr.comにリストアップするというものである。

前置きが長くなったが、Face.comは去る5月3日よりこの顔認識技術にアクセスするための「face.com API」を無償公開している。したがって開発者は、自身のアプリケーションの中でFace.comで提供される顔認識技術を自由に利用することができるようになった。このAPIはREST形式で呼び出せるシンプルなものであり、PHPとJavaScript(そして非公式でPython)のクライアントライブラリが提供されている。公式サービスと同様にFacebookやTwitterと連携させて利用するほか、オリジナルの名前空間を指定して利用することもできるようになっている。

face.com API

face.com APIはface.com developers siteで公開されている。前述の通りREST形式APIであり、以下のAPIメソッドを介して利用できる。

  • faces.detect - 写真から顔を検出する
  • faces.recognize - 顔認識を実施し、タグを含む顔の情報を取得する
  • faces.train - 顔のインデックスをデータベースに登録する(このプロセスを"トレーニング"と呼ぶ)
  • faces.status - インデックスのステータスを取得する
  • tags.get - 顔に付けられたタグを取得する
  • tags.add - 顔にタグを登録する
  • tags.save - 自動で検出されたタグを顔に登録する
  • tags.remove - 顔に登録されたタグを削除する
  • account.limits - サービスの利用状況を調べる(APIからサービスを利用できる回数(1時間あたり写真200枚)や使える名前空間の数(1000個)に制限があり、その利用状況を知ることができる)
  • account.users - 個別の名前空間内のユーザ数を調べる

このうちfaces.detectは他の写真の情報を利用しないため単体で利用できる。一方、faces.recognizeやfaces.trainなどについてはFace.comに登録された顔写真の情報にもアクセスするため、FacebookやTwitterのアカウントを利用するか、独自の名前空間の中で利用する必要がある。参照できる情報の範囲は、それぞれのアカウントがアクセスできる範囲か、同じ名前空間内のものに限られる。

手順としては、まずfaces.detectかfaces.recognizeで写真から顔認識を行う。これで顔の各パーツの座標や、性別、眼鏡の有無などの特徴が取得できる。faces.recognizeのレスポンスには、それに加えてFace.comからデータを同じ顔と思われる写真のタグ情報が含まれている。タグの追加や登録済みタグの取得/変更はtags.addなどのメソッドで行い、その結果はfaces.trainを使うことでFace.comのデータベースに登録できる。

次回は、JavaScriptからこれらのAPIを利用して顔認識を行う方法を紹介する。

22/61

インデックス

連載目次
第61回 ユニットテスト用モック作成ツール「EasyMock」によるメソッド呼び出し検証
第60回 ユニットテストのためのモックを簡単に作成できる「EasyMock」
第59回 スタンドアロンでのTymeleafテンプレートの利用
第58回 Java用テンプレートエンジン「Thymeleaf」の標準文法セットを利用する
第57回 XHTML/XML/HTML5をサポートしたテンプレートエンジン「Thymeleaf」
第56回 「renderSnake」をサーバサイドで利用する
第55回 直感的なHTMLコードの生成が可能な「renderSnake」
第54回 「PrimeFaces」でUIとサーバ側のManagedBeanを連携させる
第53回 収録数は100以上! JSF用軽量コンポーネントスイート「PrimeFaces」
第52回 Googleが開発した高速圧縮ライブラリ「Snappy」をJavaで使う
第51回 JSFコンポーネントライブラリ「OpenFaces」でグラフを表示する
第50回 Ajaxを利用したJSFコンポーネントライブラリ「OpenFaces」
第49回 Java用RIAフレームワーク「Vaadin」でのイベント処理
第48回 Java用RIAフレームワーク「Vaadin」を利用したWebアプリケーション開発
第47回 GWTベースのJava用RIAフレームワーク「Vaadin」
第46回 「StringSearch」による文字クラス/ミスマッチ文字を含む文字列検索
第45回 Javaライブラリ「StringSearch」による文字列検索
第44回 高速な文字列検索を実現するJavaライブラリ「StringSearch」
第43回 「AsyncHttpClient」でゼロコピー・アップロード/ダウンロードを実現する
第42回 AsyncHttpClientを用いたJavaプログラムによる非同期HTTP通信
第41回 Javaで非同期なHTTP通信を行うための「AsyncHttpClient」
第40回 AWT/SwingアプリをAjax Webアプリに変換する「AjaxSwing」
第39回 Java用IMライブラリ「Smack」で仲間リストの変更を検出する
第38回 Java用IMライブラリ「Smack」で仲間リストを表示する
第37回 XMPP対応IMアプリを手軽に作成できるJavaライブラリ「Smack」
第36回 AndroidでZXingを使ってバーコードを読み取るには
第35回 「ZXing」でQRコードに格納された情報を読み取る
第34回 バーコードの読み書きをサポートするJava/Android用ライブラリ「ZXing」
第33回 PDF Rendererを利用してSwingプログラムにPDFを取り込む
第32回 Javaプログラムに組み込んで使えるPDF描画ライブラリ「PDF Renderer」
第31回 Apache FOPをServletで利用する
第30回 JavaプログラムからApache FOPを利用する
第29回 XSL-FO文書からPDF文書を作成するための「Apache FOP」
第28回 iTextにおけるリストおよびテーブルの使い方
第27回 PDF生成ライブラリ「iText」における文書オブジェクトの構造
第26回 PDF文書を生成するJava用ライブラリ「iText」
第25回 face.com APIを利用して写真の顔認識を行う
第24回 face.com APIを利用して顔写真のタグ情報を更新/登録する
第23回 JavaScriptからFace.comの顔認識APIを利用する
第22回 Face.comが無料公開した顔認識APIとは
第21回 Aptana StudioおよびEclipseでZen-Codingを利用する
第20回 Zen-Codingをカスタマイズしてさらにコーディング効率を上げる
第19回 HTMLやCSSのコーディングを爆発的に効率化する「Zen-Coding」
第18回 qooxdooの低レベルAPIでHTML要素を操作する
第17回 「qooxdoo」でDOMを直接操作する
第16回 「qooxdoo」でWebアプリケーションをカスタマイズする
第15回 HTML/CSS/DOMを書かないWebアプリケーションフレームワーク「qooxdoo」
第14回 JsTestDriverによるJavaScriptのユニットテスト その2
第13回 JavaScript用のユニットテストフレームワーク「JsTestDriver」」
第12回 ODF文書を扱うためのJava API「ODFDOM」で表計算ドキュメントを作成する
第11回 JavaプログラムでODF文書を扱うための「ODFDOM」
第10回 RESTEasyのクライアントフレームワーク
第9回 JBoss製JAX-RS実装「RESTEasy」を試す
第8回 JaValidを用いてバリデータを自作する
第7回 Javaオブジェクトのバリデーションを可能にするフレームワーク「JaValid」
第6回 Ftpletを用いてApache FtpServerの動作をカスタマイズする
第5回 アプリケーションへの組込みも可能な「Apache FtpServer」
第4回 Web標準技術を活用したOSSのRIAプラットフォーム「Appcelerator Titanium」
第3回 Javaアプリケーション対応のクラウド環境「Stax Networks」 その3
第2回 Javaアプリケーション対応のクラウド環境「Stax Networks」 その2
第1回 Javaアプリケーション対応のクラウド環境「Stax Networks」

もっと見る

関連したタグ


ITセミナー

一覧
  • Java高速開発ツールの最先端…APサーバの再起動が不要に! 年間約5週間以上の工数を削減
    インフォメーションディベロプメント 照井氏

  • 流通・小売で最先端の取り組みを行う3社のデータ活用事例、ノウハウをご紹介
    【Session】ファミリーマート 坂井氏

注目特集

転職ノウハウ

あなたの仕事適性診断
あなたの仕事適性診断

4つの診断で、自分の適性を見つめなおそう!

Heroes File ~挑戦者たち~
Heroes File ~挑戦者たち~

働くこと・挑戦し続けることへの思いを綴ったインタビュー

はじめての転職診断
はじめての転職診断

あなたにピッタリのアドバイスを読むことができます。

転職Q&A
転職Q&A

転職に必要な情報が収集できます

ドS美人面接官 vs モテたいエンジニア
ドS美人面接官 vs モテたいエンジニア

入室しようとしたら、マサカリ投げられちゃいました!?

特別企画

一覧

    人気記事

    一覧

    イチオシ記事

    新着記事

    「無邪気の楽園」新たにアニメ化!西川貴史監督、Softgarage制作協力
    [00:00 3/27] ホビー
    【レポート】LINEのスタンプにも使える!! カシオのスマホアプリ「撮ってキャラスタジオ」をチェック
    [23:35 3/26] 家電
    ソフレ肯定派と否定派、その心理とは - 下心も関係しているの?
    [23:27 3/26] 恋愛・結婚
    残りの4匹も片付けてやるぜ…「カッ!」ヤムチャの絶望的フィギュア登場
    [23:25 3/26] ホビー
    【レポート】録音の聞き直しに超便利! カシオのiOS向けアプリ「キーワード頭出し ボイスレコーダー」とは?
    [23:18 3/26] 家電

    特別企画

    一覧

      求人情報