Developer's Blog

Amazon Rekognition の実力を試す

こんにちは、河岸です。今回は、2016 年末に発表された AWS の新製品、Amazon Rekognition を試し、その実力を探ります。

はじめに

まず、ご存じない方のために Amazon Rekognition とは何か。公式サイトの言葉を借りて説明すると、

Amazon Rekognition は、画像の分析をアプリケーションに簡単に追加できるようにするサービスです。Rekognition では、画像内の物体、シーン、および顔を検出できます。顔を検索および比較することもできます。Rekognition の API を使えば、深層学習に基づく高度な視覚検索やイメージ分析をアプリケーションにすばやく組み込むことができます

https://aws.amazon.com/jp/rekognition/ から引用

というフルマネージドなクラウドサービスです。ユーザーは SDK や WebAPI で画像をインプットして利用します。

今回はこの Rekognition の顔認識、顔検索機能にフォーカスし、簡易な顔認証システムを作ってみます。※実験開発はフェンリル名古屋支社のエンジニアが忙しい中、協力してくれました。みんなありがとう!

実現したいこと

  • ユーザーはクライアント端末から顔と名前を登録できる
  • クライアント端末のカメラに顔が映り込むと登録ユーザーから最も一致するユーザーを表示する

システム構成

クライアントは iOS アプリとし、 iOS の CIDetector でカメラに顔が映り込んでいるかを判定します。顔を認識した際にカメラ画像を S3 にアップロード。アップロード先のバケット名、オブジェクト名をパラメータにし、 Rekognition の API を実行します。Rekognition からマッチした顔一覧が返されるので、最も類似している(Similarity が高い)ユーザーを一致とします。

結果

見事、顔を認識し登録ユーザーの中から、一致するユーザーを抽出することができました。

ただ画像を登録する際にメガネをかけていると、メガネユーザー間での誤認識が発生しました。登録、認証の際にメガネを外すという運用ルールが必要そうです。DetectFaces API でメガネをかけているかを示す数値を得られるので、これでチェックできますね。

まとめ

Amazon Rekognition を使うことで簡単に顔認証を実現することができました。認識精度はメガネやマスク等に気をつければ、問題ないレベルと言えます。

WebAPI 経由での処理となるので、リアルタイムな処理が必要なシーンにおいては工夫が必要です。今回の実験では、クライエントアプリでの顔認識、Rekognition へのリクエスト、結果取得までに Wifi 環境で 2~3 秒かかりました。都度画像のアップロードが必要であるため通信時間と、Rekognition の処理時間がほとんどのようです。

ということで、使い所は検討する必要はありますが、短期間・低コストで顔認識を実現する上で Amazon Rekognition は有効な選択肢と言えるでしょう。

おまけ

2017年2月、Rekognition にアップデートがあり、DetectFaces API で検出した顔の年齢を推測できるようになりました。

そこで同様のサービスである IBM の Visual Recognition、Microsoft の Face API の中で、どのサービスがアラフォーの筆者の年齢を正確に推測できるか試してみました。

サービス 回答
Amazon Rekognition 20〜38歳
IBM Visual Recognition 18〜24歳
Microsoft Face API 34.7歳

 

結果、年齢当ては Microsoft の Face API が優秀でした。同様のサービスでも特性は様々ですね。

 

フェンリルの開発者アカウントでは、フェンリルプロダクトの最新開発情報などをつぶやいています。よろしければフォローしてください!

 

フェンリル採用チームの Twitter アカウントです。応募前のお問い合わせや、ちょっとした相談ごとなどお気軽にどうぞ!

Copyright © 2019 Fenrir Inc. All rights reserved.