顔認識APIについて調べました
Doll Face Detectorを開発するにあたり、顔認識&機械学習APIについて調べたことを書いていきます。
APIの選定条件
まず最低限必要な機能として、「静止画から顔を検出する」「登録した顔のデータから近いものを検索する」の2点が必要です。さらに、個人的なサービスなのでお金は掛けたくないので、 無料枠がどれだけあるかも重要なポイントです。あとは、「顔認識の精度」「機能の充実度」なども評価のポイントに成ります。
候補となったAPI
いくつか試したAPIを紹介します。
日本国内のサービス: PUX
まず日本国内のサービスで探すと、これくらしか見つかりませんでした。無料枠は月5000リクエスト、登録顔数10なので、本当に評価版として使える範囲の数になっています。提供されているAPIの機能自体も最低限という感じです。
項目 | 評価 |
---|---|
無料枠の多さ | △ |
機能の充実度 | △ |
顔認識の精度 | ?(詳しく検証していない) |
Microsoftの機械学習サービス: Project Oxford
最近ベータ版が開始されたサービスで、一時話題になったHow Old do I Look?もこのプロジェクトの内の1つであるFaceAPIsのデモサイトです。現在ベータ版なので無料版しかないのですが、無料版は15アクセス/分という制限があります。まあそこまでアクセスはいかないだろうと思って、これを使うつもりで開発を始めたのですが、いざ作り始めると1回の処理で数回リクエストする必要があり、リクエストを減らすために自前のデータベースでAPI側のデータをキャッシュしたりしてるうちに、今度はAPIそのものが不安定になってきて(デモサイトでも同じ症状が出てました)、ベータ版の時点では実用に耐えないなということでやめました。
一応、APIアクセスについてはモジュール化して作っていたので、npmに公開しています。
項目 | 評価 |
---|---|
無料枠の多さ | △ |
機能の充実度 | △ |
顔認識の精度 | ◯ |
全部無料のサービス: Face++
中国のサービスで全部無料・制限なし(相当なアクセス数になってくると要相談とありますが)って、ちょっと信頼できるのか心配だったんですが、背に腹は変えられぬってことでこれを使いました。
登録すると最初はDeveloperモードとなり顔登録数が100までという制限がありましたが、サービスURLを公開した後でProductionモードにアップグレードするリクエストを送ると、2〜3日でなんの通知もなくProductionモードに変更されていました。
また機能的にもかなり充実していて、データはすべてFace++側で管理することができます。データそのものはAPIで取得できるので、定期的に全件取得しておけば万が一サービスがなくなっても他のサービスに移行することはできるかなと思っています。
モジュールも準備できしだいアップ予定。
項目 | 評価 |
---|---|
無料枠の多さ | ◯ |
機能の充実度 | ◯ |
顔認識の精度 | ◯ |
その他
他にもたくさんの同種のサービスがありました。APIを探すのにとても役に立つのがMashapeというサイトです。
ここに顔認識系の有名どころのサービスがまとめられています。
Popular Face Detection/Recognition APIs from Mashape
これらひと通りデモを試してみましたが、認識できる精度についてはほぼすべて同じでした。唯一ちょっと違ったのがMicrosoftのサービスです。ただ、どちらが優れているというわけではなく、どちらも認識できる画像/できない画像がありました。ちなみにこれはドール画像の話で、人間の顔認識に関してはどちらもかなりの精度で認識されます。