Azure Face APIとAmazon Rekognitionで性別判定を比べてみた
どうも、くずきです。
ユーザーの画像から性別を判定する方法は何かないかと思い、Amazon Rekognition
とAzure Face API
を試してみたのでメモっときます。
結論を先に言うと本番環境ではAmazon Rekognition
を使って性別判定して、数十万ユーザーの識別をしているけど、結構満足いく結果になってる。
Azure Face APIとは
Microsoft
が提供している画像認識のAPI。
詳しくは今回省くが、こんな感じで、性別/年齢/表情/眼鏡の有無などを判定できる。
今回選んだ理由としては、以下の記事の方が素晴らしい検証を行なっていて、識別率が高いという部分で選んだ。
検証用のコードはPHP
を利用している。
ここにコード書いてあるのでこれ使えばすぐできる。
(HTTP/Request2
の導入が多少めんどくさかったけど・・。)
Amazon Rekognitionとは
AWS
が提供している画像認識のAPI。
こっちも詳しくは書かないけど、同じように性別/年齢/表情/眼鏡の有無などを判定できる。
違いとしては目が開いているとか、眼鏡ではなくサングラスも判定できるとかあるけど、大きい違いは
- 年齢がRangeになっている
- 色々なパラメーターにConfidence(信頼度)がついている
年齢はRangeになって使いづらい感が否めないけど、性別判定にConfidence
がついてるのはかなり使える。
SNSの画像を利用して比べてみた
今回は、945枚のSNS
の画像を使った。
実際本番で使う画像で試したかったため、顔写真がわかりやすく乗っているような写真ではなく、ランダムで取って来ている画像のため人じゃない場合もある。
また、複数の人が写ってる画像の場合も今回は対象外にしてある。
正解画像
画像の種類 | 枚数 |
---|---|
男性の画像 | 163枚 |
女性の画像 | 230枚 |
上記以外または複数の人の画像 | 552枚 |
大体がその他画像という(泣き)。
正答
種類 | 男性 | 女性 | その他 |
---|---|---|---|
Rekognition | 112(68%) | 174(75%) | 512(92%) |
Face API | 75(46%) | 121(52%) | 522(94%) |
結果から見るとRekognition
のほうがとてもよく、Face API
はちゃんと正面向いてる場合は精度は高く使いやすいんだけど、目が見えづらかったり、口が見えてないと検出率が極端に悪い。Instagram
やTwitter
系のSNS
だと、Facebook
とは違い、しゃれてる画像や、少し離れた画像でとる人が多くこういう結果になったのだと思う。
例えば、こういう画像
(Rekognitionは認識)
(Face APIは認識せず)
こういう、これはさすがに分かるだろ〜っていうのがFace API
だと結構認識してくれなくて、、、最終的に候補からはずれてしまった。
誤答
正解が男性の場合
種類 | 女性 | その他 |
---|---|---|
Rekognition | 13 | 38 |
Face API | 5 | 83 |
正解が女性の場合
種類 | 男性 | その他 |
---|---|---|
Rekognition | 5 | 51 |
Face API | 3 | 106 |
その他が多くなるということ、検出率が低いということなんですが、
少しばかりの差ではあるが、精度に関してはFace API
のほうがたかそうだ。
まとめ
SNS
の種類にもよるけど、正面の写真ではなかったり、少し遠くから取ってるような画像が多いものに関してはRekognition
が有効ということがわかった。
おまけ
顎に手を当てれば女性になれるのかもしれない。