10分で顔認証アプリを作ってみた - 第１章

#完成品

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">10分で顔認証のアプリを作ってみた <a href="https://t.co/q8aVLPzLxa">https://t.co/q8aVLPzLxa</a></p>&mdash; Yasunaka Cho (@YasunakaC) <a href="https://twitter.com/YasunakaC/status/1090793405922209792?ref_src=twsrc%5Etfw">January 31, 2019</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

**ダイアグラム**
![ダイアグラム](https://qiita-image-store.s3.amazonaws.com/0/352271/480e91fd-82b2-6f30-d6bc-4bc219a7c59a.png)


#ミッション
１年前までは初対面の人からは「大学生ですか？」とか言われて実年齢より５歳以上若く見られてチヤホヤされていました。ただ、つい先日の飲み会で初めて会った女性から「３５歳ですか？」と聞かれて実年齢より５歳年上に見られてしまい、かなりショックを受けました。。

そこで本当は何歳に見えるかをAIに判断してもらえばいいのでは？と思い、このプロジェクトを始めました。どの AI に判断してもらえば良いのか検討がつかなかったので、AI 関連の API が一覧で確認できるRakuten RapidAPI という ​8,000以上の​APIが揃うサービスがあるので、これを使ってプロジェクトを進めてみます。


#新規登録
まずは[Rakuten RapidAPIのポータルページ](https://re.tc/8casxjff)にアクセスします。まずは画面右上の「新規登録」をクリックしアカウントを作成します。

![新規登録](https://qiita-image-store.s3.amazonaws.com/0/352271/2d7fbe76-baef-31fe-05d5-b806d7421f79.png)



#API の検索
このポータルページでは各種 API をキーワードで検索したり、カテゴリ分けされたコレクションなるものが用意されています。今回は自分の年齢判断をしてもらいたいので、「[画像処理・​顔認識​API​ランキング](https://api.rakuten.net/collection/top-image-recognition-apis)」と呼ばれるコレクションから、いくつか API をピックアップして試してみました。

![画像処理・​顔認識​API​ランキング](https://qiita-image-store.s3.amazonaws.com/0/352271/9126435e-a380-89f0-ab3b-0d24c3de46eb.png)


この中からまずは一番最初に表示される [Microsoft Computer Vision](https://re.tc/l7qmj4j2) なる API を試してみましょう。

#API のテスト
このテストではこの筆者の顔が AI の観点から何歳と導き出すか試してみました。もっと記事映えするアイドル的な画像を使え！という声もあったのですが、職場の制約上ご容赦願ください（汗）ちなみに僕の年齢は 31歳です。


<img src="https://qiita-image-store.s3.amazonaws.com/0/352271/d24d8398-8b40-cbc9-1d27-1a58f8b97df5.png" width=50%>


**１、APIのサブスクリプション**
API によっては利用にあたりサブスクリプションが必要になるものもあります。詳細は [料金プラン] (https://api.rakuten.net/microsoft-azure/api/microsoft-computer-vision/pricing)タブをクリックして確認します。RapidAPI上で提供しているAPIは元のAPIと同じ料金になっています。今回はMicrosoft Computer Vision のフリープランを利用してみましょう。サブスクリプションついては対象のプランを選択の上、クレジットカードの情報を入力して、 [登録] ボタンをクリックしましょう。

<img width="803" alt="プラン購読" src="https://qiita-image-store.s3.amazonaws.com/0/352271/94849e7d-067f-4572-7454-0b21dfb58176.png">

**２、エンドポイントの呼び出し**
続いてRakuten RapidAPI ではブラウザ上でテスト呼び出してみましょう。年齢判定テストには画像ファイルを Microsoft のサーバーへアップした上で解析をしてくれる Analyze Image[File] なるエンドポイントを利用します。

<img width="340" alt="エンドポイント" src="https://qiita-image-store.s3.amazonaws.com/0/352271/d456267b-a07a-ccfe-6464-77684ec2ed17.png">


**３、APIのテスト**
Rakuten RapidAPI の利用に必要な X-RapidAPI-Key に関してはログインと同時に自動転記されれます。ここでは、上記の画像ファイルを選択し、[テスト] ボタンをクリックします。(ちなみに画像ファイルがない場合は、Analyze Image[URL] というエンドポイントを使ってネット上の画像ファイルの URL を指定して解析することも可能です。)

![APIテスト](https://qiita-image-store.s3.amazonaws.com/0/352271/1ab68176-ebf9-5d9b-42cb-9bc9f6ae4989.png)


**４、APIで解析してもらった結果**
返却された JSON データが成形されブラウザ上に表示されます。どうやら Microsoft の AI はこの顔を 29 歳。35 歳と言われたあの日から少し立ち直れそうです。このエンドポイントでは、年齢判定に加えて、写真がどのようなものか、写真の人物の性別等も判定していました。

<img width="547" alt="テスト結果" src="https://qiita-image-store.s3.amazonaws.com/0/352271/8105e82e-e943-1cdc-232c-e1fd70741824.png">

Rakuten RapidAPI ではこの API に限らず多くの API 同じ要領で使うことができます。そして中には X-RapidAPI-Key に加え、プロバイダが提供するアクセスキーが必要となるものもあるけど、APIを一元管理できて色々と使い勝手がよさそうです。


#終わりに
同プラットフォーム上には画像解析の API だけで 10 個以上もあり、どの API が自社アプリに適切か簡単に比較できるのは非常に便利だと思われる。画像解析エンジン自体は欧米で開発されたものが多く、アジア人はどうも若く年齢が推測されることが多いようです。エンジンの学習が進み精度が向上するまでの間は僕のように様々な AI に慰めてもらう楽しみもあるかもしれないと今回実験していて感じました。

顔認証APIの[トップ１０のリスト](https://re.tc/dydhdrtu)もあるので、ぜひ併せて読んでみてください。


#次回予告
次回はPython、 Flask、そしてRapidAPIを使って、顔の画像から年齢を推測するアプリを１０分で作る方法を公開します。またソースコードも公開するので、ぜひご期待ください！記事に対してのフィードバックを、コメントでもらえたら嬉しいです。