顔認識API「ReKognition」を触ってみた
最近、MicroSoftの年齢推定のWebサイト『How-Old.net』が話題になっています。
そこで顔認識のWebAPI『ReKognition』を使って、似たようなモノを簡易的に作ってみようと思い、APIのサンプルを動かしてみました。
直接画像をアップロードする場合(curlを使ってファイルをアップロード)
<?php $ch = curl_init(); $path = '@C:/xampp/htdocs/example/dataset/test.jpg'; // Windows環境でローカルファイルを指定 $data = array('api_key' => '取得したAPI Key', 'api_secret' => '取得したAPI secret', 'jobs' => 'face_part_aggressive', 'uploaded_file' => $path ); curl_setopt($ch, CURLOPT_URL, 'http://rekognition.com/func/api/'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); if(curl_exec($ch) == false){ echo curl_error($ch); // 実行失敗時にエラー内容を表示 } curl_close($ch); ?>
パラメータで画像のURLを指定
(送られたURLを使って、「ReKognition」のサーバ側で画像を取得)
<?php require_once('HttpClient.class.php'); $data = array('api_key' => '取得したAPI Key', 'api_secret' => '取得したAPI secret', 'jobs' => 'face_part_aggressive', 'urls' => 'http://localhost/example/dataset/test.jpg', // 認識対象の画像URL ); $fate_detection = new HttpClient('rekognition.com'); $fate_detection->setDebug(true); $response = $fate_detection->get("/func/api/", $data); // リクエストを送信して、レスポンス(JSON)を取得 echo $fate_detection->getContent(); ?>
実行結果
{"url":"POST","face_detection":[{"boundingbox":{"tl":{"x":971.88,"y":441},"size":{"width":317.4,"height":317.4}},"confidence":1,"eye_left":{"x":1061.8,"y":565.1},"eye_right":{"x":1183.1,"y":560.8},"nose":{"x":1117.8,"y":626},"mouth l":{"x":1087.3,"y":681.6},"mouth_l":{"x":1087.3,"y":681.6},"mouth r":{"x":1179.5,"y":677.7},"mouth_r":{"x":1179.5,"y":677.7},"pose":{"roll":-2.15,"yaw":-16.55,"pitch":-2.73},"quality":{"brn":0.41,"shn":0.3}}],"ori_img_size":{"width":2528,"height":1856},"usage":{"quota":19963,"status":"Succeed.","api_id":"9WCxtBtyqwdx7DPd"}}
公式のサンプルをコピペして実行しただけですが、Windows環境でのcurlのファイルパスの指定方法がよく分からず「Couldn't open file 'xxx'」が出て苦労しました。
(結果そのまんまだったわけですが...)
WebAPIなのでJavaScriptからAjaxでリクエストを投げて、同様の処理ができると思うので次はJavaScriptで書いてみた後、How-Old.netの簡易版を作ってみようと思います。