顔認識APIについての個人的まとめ2017年秋版

機械学習を勉強するにあたり座学だけでなくやっぱり実践したほうがいい、ということでAPIについていじり始めようかと検討しています。
DeepLearningでもよく事例に出てくる画像解析、特に顔認識についていろいろやっていこうかなと考えているため、今回は顔認識APIを軸にいろいろ検討して行きます。

記事をいくつかに分けて書いていこうかと思います(全てをゼロ円で検証できないので。。。)今回は調査ベースのまとめをやります(次回からは実際コード書いて検証ですかね)

# 私が調べて見て見つけた顔認識が使えるAPI

- Google Cloud Vision API
    - Google社開発のAPI。
    - https://cloud.google.com/vision/?hl=ja
    - 顔検出、感情推定、顔の向きを抽出可能。
    - 年齢推定・性別推定は不可能っぽい。

- Amazon Rekognition
    - Amazon製の顔認識API。
    - https://aws.amazon.com/jp/rekognition/
    - 顔検出、感情推定、顔の向き、年齢推定・性別推定が可能。
    - メガネ・サングラスも認識できるらしい。。。
    - 費用については別セクションで比較するが、これを見る限りリージョンごとに違うっぽく描かれているが同じ。<BR>https://aws.amazon.com/jp/rekognition/pricing/

- Microsoft Face API
    - Microsoft製のAPI。
    - https://azure.microsoft.com/ja-jp/services/cognitive-services/face/
    - How old?というWebサイトで使われている技術。
        - https://how-old.net/
    - 顔検出、感情推定、顔の向き、年齢推定・性別推定が可能。
    - 日本のリージョンでは使えないらしい。。<BR>https://azure.microsoft.com/ja-jp/pricing/details/cognitive-services/face-api/


- Face++
    - 中国製のAPI。
    - https://www.faceplusplus.com/
    - 顔検出・年齢推定・性別推定が可能。
    - 感情については喜び度合いだけは取れる感じ。
    - 顔の向きは取れず。
    - まさかの人種まで判定。
    - 全部無料！！


- IBM Visual Recognition
    - IBM社開発のAPI。 <BR>https://www.ibm.com/watson/jp-ja/developercloud/visual-recognition.html
    - 顔検出・年齢推定・性別推定が可能。
    - 感情や顔の向きは判定不可。
    - 有名人かどうかも判定するらしい。。
 
- detectFace()
    - インクリメント社製API。
    - http://detectface.com/
    - 顔検出だけ可能。
    - 感情・顔の向き検出・年齢推定・性別推定が可能。
    - APIとして利用するぶんには無料   

# 費用感

Face++とdetectFace()は無料です。(detectFaceの場合はSDKとしてソフトに組み込みたいときは有料らしい)

Google Cloud Vision APIは月ごとに課金されます。最初の1000ユニット(API1000回呼び出し)は無料です。次の1001ユニット目以降はお金が発生します。厳密に言うと1001ユニット目- 5000000ユニット目までは1000ユニット1.5ドル。 5000001ユニット目からは1000ユニット0.6ドルです。

Amazon Rekognitionについては、最初の 12 か月間、毎月最大 5,000 の画像を無料で使用可能。また、最大 1,000 の顔を無料で保存可能。その枠を越えた場合は、1000ユニット単位で料金が課金されます。<BR><img width="803" alt="スクリーンショット 2017-10-31 23.59.10.png" src="https://qiita-image-store.s3.amazonaws.com/0/14989/8c3b0bb7-5ada-ac45-1781-0ffd509e7048.png">

FaceAPIについては、料金形態は以下のようになります。特徴的なのは、FreeとStandardってあって1分あたりに呼び出せるAPI数に制限があるかないかが違っています。
<img width="1102" alt="スクリーンショット 2017-11-01 0.01.18.png" src="https://qiita-image-store.s3.amazonaws.com/0/14989/372ed1cc-65a2-8c7d-855b-5715bb619ff4.png">

IBM Visual Recognitionについてはプランが3つほどあって・・・Premiumとかなると「時価」的な扱いみたいです。
https://www.ibm.com/watson/services/visual-recognition/#pricing-block

以下に一月に呼び出したAPI数に準じて料金がどう変わるかを表にしました。(金額の単位はドルです。)こうして見るとAmazonのほうが総じて安いように見えますが・・・。

| ユニット数      | Google Cloud Vision | Amazon Rekognition |Face API(Standard)| IBM Visual Recognition(Standard)|
|:-------------|--------------:|------------------:|------------------:|------------------:|
| 500          |              0| 1|1.5|2|
| 5300         |            7.5| 6|9.0|21.2|
| 16500        |          24.0 |17|25.5|66|
| 250000       |          373.5|250|375.0|1000|
| 2000000      |         2998.5|1800|2600|8000|
| 10000000     |       10498.5 |8200|9150|40000|







# これから・・・
とりあえず文献だけあさって得られた知見をまとめました。ただし、文献だけだときちんとした形に応用できないので次はいくつかのAPIについて実際に使って検証してみようかと考えています。

# 参考文献

## Amazon Rekognition
https://qiita.com/OMOIKANESAN/items/c5d1dfe5c00105739dcf
https://aws.amazon.com/jp/rekognition/faqs/
https://capsulecloud.io/blog/aws/4372
https://aws.amazon.com/jp/blogs/news/amazon-rekognition-update-estimated-age-range-for-faces/

## Watson Visual Recognition
https://speakerdeck.com/taijihagino/watson-visual-recognition-to-node-red-de-yan-ren-shi-apuriwojian-dan-nizuo-cheng-suru