いよいよAIを使ってみることに挑戦です。今回も教えてくれるのは、日本マイクロソフトテクニカルエバンジェリスト大田昌幸(おおたまさゆき)先生。APIを使って、初めて「AIを使う」体験をしてみます。使うのは、Microsoftが公開している「Face API」。これを使えば、写真から年齢と性別が認識できるようになるそうです。
第1回:AIってなぁに?
第2回:Amazon、Google、IBM、Microsoftが公開する「AIを使うための手段」一覧
第3回(今回):30分でAIが使えるようになる 写真から年齢と性別を認識する「Face API」を試してみた
第4回(予定):Emotion APIを使って、感情を認識してみよう!
APIを使う前に、まず「Postman」をダウンロードします。Postmanは、APIを試したいときに便利なツール。REST API Call用のプログラムを自分で書かなくて済むし、試したあとに各言語用のサンプルプログラムを自動生成してくれるのでとても便利です。インストールしたPostmanを起動したら準備は完了です。
「Face API」の公式ページを見ると、「API Reference」と書かれたボタンがあります。これをクリックすると、APIを使うための仕様や操作方法などが書かれたページに行きます。そのページで少しスクロールしたところに「APIを使うために必要な作業」が全て書かれています。ここに書かれているRequest URL、ヘッダー情報(Request headers)、ボディ情報(Request body)などをPostmanに入れていきます。
まず、「Request URL」の「https://westus.api.cognitive.microsoft.com/face/v1.0/detect」を、PostmanのURL記入用の場所にコピー&ペーストします。このとき、「[?returnFaceId][&returnFaceLandmarks][&returnFaceAttributes]」この部分はコピーしなくて大丈夫です。[]で囲われている部分はそのあとに続く記述例なので、必要になったときに入れましょう。その部分の詳細は、「Request parameters」のカ所に書かれているのでのちほど見ていきます。
POST MethodなのでPOSTを指定し、URLを入れて実行すると以下のような画面になります。
「Request parameters」の「returnFaceId」は、検出された顔のIDを返すというものです。デフォルト値はtrueになっていて、写真に何人か映っていた場合1人1人の顔にIDを振ります。例えば、ある写真に複数人映っていた場合、右に映っている女性はID「001」、左に映っている男性はID「002」といった形でIDが振られ、そのIDが返ってきます。これを利用すると、「同じ人かどうか」が判断できるようになりますが、今回は使いません。
「returnFaceLandmarks」は、写真の中のどこに顔があるか、目や口の位置はどこかといった「位置情報」を返してくれます。ただ、こちらも今回は使いません。
今回使うのは「returnFaceAttributes」。returnFaceAttributesは、指定された1つ以上の顔属性(年齢・性別・髪型・表情など)を分析するパラメーターで、例えば年齢と性別を認識したければ「returnFaceAttributes=age,gender」のように記載すると年齢と性別が返ってきます。Postmanで先ほど記載したRequest URLの後ろに「?」を付け、そのあとに「returnFaceAttributes=age,gender」と書きます。
https://westus.api.cognitive.microsoft.com/face/v1.0/detect?returnFaceAttributes=age,gender
returnFaceAttributesでは、年齢と性別以外にも、髪型「headPose」、笑顔「smile」、髭「facialHair」、眼鏡「glasses」がサポートされており、年齢・性別と同様に「returnFaceAttributes=」のあと「headPose」「smile」とカンマで区切って並べれば、それぞれほしいデータが返ってきます。
続いて、「Request headers」のリファレンスを見ます。「Ocp-Apim-Subscription-Key」は、APIにアクセスするためのサブスクリプションキーを作って入力してくださいという項目です。サブスクリプションキーとは、利用に応じて料金を払うためのキー。ガッツリ使うのであれば(2万件以上が目安)有償版が必要になりますが、とりあえずは無償版でOKです。
無償版のサブスクリプションキーを作りたい場合には、まず、Cognitive Servicesのページ右上にある「Get started for free」ボタンをクリックして、GitHubのアカウントなどでログインします(GitHubアカウントの場合、E-mailが公開されている必要があるみたいです)。有料版を使いたい人は、AzureとCognitive Servicesのアカウントを作ります。
ログインが完了すると、メールアドレスの右側に「unverified」という記載があります。その右側に「Send email verification」というボタンがあるのでそれをクリックします。すると登録メールアドレス宛にメールが来るので、リンクを踏んで「Get started for free」をクリック。「Face - Preview」の項目のチェックボックスと利用規約にチェックを入れて「Subscribe」を押します。キーの一覧(「Key 1:XXXXXXXXXXXXXXXXXXXXXXXXXXX」など)が出てくるので、その隣にあるCopyをクリックします。
キーを作ったら、PostmanのHeadersの「Ocp-Apim-Subscription-Key」と書かれている横の欄にペーストします。「Content-Type」には、送信するBodyのデータがJSON形式なので「application/json」と入れます。ここまでの操作をするとこんな画面になるはずです。
最後にPostmanの「Body」をクリックし、ラジオボタンで「raw」を選び、認識したい画像のURLをJSON形式で入れます。今回はこの写真(/news/articles/1702/15/l_tomomi_3000profile00.jpg)を使ってみます。「Send」を押すと、写真のどこに顔があるのかと、その顔の年齢と性別情報が返ってきます。
Face APIは一番シンプルです。Computer Vision APIの場合は、写真に何が映っているのかという情報を全部返してくれます。例えば、海が映っている、犬が建物の前でご飯を食べているといった情報も返してくれるのがComputer Vision APIです。そのためFace APIをまず触ってみて、慣れてきたらComputer Vison APIを触れるといった順序で勉強していくといいかもしれません。
ちなみに、PostmanはAPIコール用のコードを自動生成してくれるので、ハッカソンなどチームメンバーとの言語が違うときにも便利。codeをクリックして、プルダウンメニューから言語を選ぶと、Postmanが自動でその言語のコードに書き変えてくれます。コピペすれば動くのでとてもありがたい機能です。
ということで、30分ではじめてのAI、使えるようになりました! 次回は感情認識を行う「Emotion API」に挑戦します。
【次回予告】感情認識APIを使って、年齢・性別を認識してみよう!
(太田智美)
小学3年生より国立音楽大学附属小学校に編入。小・中・高とピアノを専攻し、大学では音楽学と音楽教育(教員免許取得)を専攻し卒業。その後、慶應義塾大学大学院メディアデザイン研究科に入学。人と人とのコミュニケーションで発生するイベントに対して偶然性の音楽を生成するアルゴリズム「おところりん」を生み出し修了した。
大学院を修了後、2011年にアイティメディアに入社。営業配属を経て、2012年より@IT統括部に所属し、技術者コミュニティ支援やイベント運営・記事執筆などに携わり、2014年4月から2016年3月までねとらぼ編集部に所属。2016年4月よりITmedia ニュースに配属。プライベートでは2014年11月から、ロボット「Pepper」と生活を共にし、ロボットパートナーとして活動している。2016年4月21日にヒトとロボットの音楽ユニット「mirai capsule」を結成。
スタートアップでのWeb開発経験を経て、2011年に日本マイクロソフトに入社。現在はソリューション開発企業向けのテクニカル エバンジェリストとして活動。東京工業大学や慶應義塾大学にて非常勤講師の経験も持つ。AzureなどのMicrosoft製品に加えて、社外の技術も加えた新規ソリューション開発を企業とともに企画・実現する活動に取り組んでいる。
今回説明に出てきたヘッダーとかBodyとかの用語が分からない人は、「HTTPの教科書」を読んでみるといいです。
Copyright © ITmedia, Inc. All Rights Reserved.
Special
PR