Persistence

技術メモなど

顔認識APIについて調べました

Doll Face Detectorを開発するにあたり、顔認識&機械学習APIについて調べたことを書いていきます。

APIの選定条件

まず最低限必要な機能として、「静止画から顔を検出する」「登録した顔のデータから近いものを検索する」の2点が必要です。さらに、個人的なサービスなのでお金は掛けたくないので、 無料枠がどれだけあるかも重要なポイントです。あとは、「顔認識の精度」「機能の充実度」なども評価のポイントに成ります。

候補となったAPI

いくつか試したAPIを紹介します。

日本国内のサービス: PUX

pds.polestars.jp

まず日本国内のサービスで探すと、これくらしか見つかりませんでした。無料枠は月5000リクエスト、登録顔数10なので、本当に評価版として使える範囲の数になっています。提供されているAPIの機能自体も最低限という感じです。

項目 評価
無料枠の多さ
機能の充実度
顔認識の精度 ?(詳しく検証していない)

Microsoft機械学習サービス: Project Oxford

Microsoft Project Oxford Home

最近ベータ版が開始されたサービスで、一時話題になったHow Old do I Look?もこのプロジェクトの内の1つであるFaceAPIsのデモサイトです。現在ベータ版なので無料版しかないのですが、無料版は15アクセス/分という制限があります。まあそこまでアクセスはいかないだろうと思って、これを使うつもりで開発を始めたのですが、いざ作り始めると1回の処理で数回リクエストする必要があり、リクエストを減らすために自前のデータベースでAPI側のデータをキャッシュしたりしてるうちに、今度はAPIそのものが不安定になってきて(デモサイトでも同じ症状が出てました)、ベータ版の時点では実用に耐えないなということでやめました。

一応、APIアクセスについてはモジュール化して作っていたので、npmに公開しています。

www.npmjs.com

項目 評価
無料枠の多さ
機能の充実度
顔認識の精度

全部無料のサービス: Face++

www.faceplusplus.com

中国のサービスで全部無料・制限なし(相当なアクセス数になってくると要相談とありますが)って、ちょっと信頼できるのか心配だったんですが、背に腹は変えられぬってことでこれを使いました。

登録すると最初はDeveloperモードとなり顔登録数が100までという制限がありましたが、サービスURLを公開した後でProductionモードにアップグレードするリクエストを送ると、2〜3日でなんの通知もなくProductionモードに変更されていました。

また機能的にもかなり充実していて、データはすべてFace++側で管理することができます。データそのものはAPIで取得できるので、定期的に全件取得しておけば万が一サービスがなくなっても他のサービスに移行することはできるかなと思っています。

モジュールも準備できしだいアップ予定。

項目 評価
無料枠の多さ
機能の充実度
顔認識の精度

その他

他にもたくさんの同種のサービスがありました。APIを探すのにとても役に立つのがMashapeというサイトです。

www.mashape.com

ここに顔認識系の有名どころのサービスがまとめられています。

Popular Face Detection/Recognition APIs from Mashape

これらひと通りデモを試してみましたが、認識できる精度についてはほぼすべて同じでした。唯一ちょっと違ったのがMicrosoftのサービスです。ただ、どちらが優れているというわけではなく、どちらも認識できる画像/できない画像がありました。ちなみにこれはドール画像の話で、人間の顔認識に関してはどちらもかなりの精度で認識されます。