ユーザーローカル

表情推定(感情認識)AI

APIの利用

POST送信

APIエンドポイント

https://ai-api.userlocal.jp/face

回数制限について

原則1時間あたり100回までです。 API制限を引き上げたい方はお問い合わせ下さい。

送信パラメータ

パラメータ名 内容
image_data jpegかpngフォーマットの画像データ(multipart)

サンプルコード


#!/usr/bin/env ruby

# 依存ライブラリのインストールが必要です
# $ gem install rest-client

require 'rest-client'
require 'json'

url = 'https://ai-api.userlocal.jp/face'

image = File.new('path/to/image')

params = {
  image_data: image,
  multipart: true
}

RestClient.post(url, params) do |response, _, _|
  data = JSON.parse(response.body)
  data['result'].each.with_index(1) do |d, i|
    puts <<~EOS
    年齢: #{d['age']}
    感情: #{d['emotion']}
    性別: #{d['gender']}
    顔の向き: #{d['head_pose']}
    顔の位置: #{d['location']}
    #{d}

    EOS
  end
end

      

#!/usr/bin/env python
# coding: utf-8

# 依存ライブラリのインストールが必要です
# $ pip install requests

import requests
import json

image_path = '/path/to/image'
image =  open(image_path, 'rb').read()
url = "https://ai-api.userlocal.jp/face"
res = requests.post(url, files={"image_data": image})
data = json.loads(res.content)
result = data['result']
for r in result:
    print(f"""
    年齢: {r['age']}
    感情: {r['emotion']}
    性別: {r['gender']}
    顔の向き: {r['head_pose']}
    顔の位置: {r['location']}
    """)
      

<?php

$target="https://ai-api.userlocal.jp/face";

# http://php.net/manual/en/curlfile.construct.php

// Create a CURLFile object / procedural method
$cfile = curl_file_create('path/to/image','image/jpeg'); // try adding

// Assign POST data
$imgdata = array('image_data' => $cfile);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $target);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // stop verifying certificate
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true); // enable posting
curl_setopt($curl, CURLOPT_POSTFIELDS, $imgdata); // post images
//curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); // if any redirection after upload
$r = curl_exec($curl);
curl_close($curl);
$data = json_decode($r, true);
foreach ($data['result'] as $i => $d){
  echo "年齢 ${d['age']}\n";
  echo "性別 ${d['gender']}\n";
  echo "感情 ${d['emotion']}\n";
};
?>

      

レスポンス

返却されるJSONの例(正常)


{
  "status": "ok",
  "result": [
    {
      "age": 20.58,
      "gender": "Female",
      "emotion": "neutral",
      "emotion_detail": {
        "anger": 0.08,
        "happy": 0.14,
        "neutral": 0.69,
        "sad": 0.03,
        "surprise": 0.03
      },
      "head_pose": {
        "pitch": 0.23,
        "roll": 4.15,
        "yaw": 23.06
      },
      "location": {
        "height": 455,
        "width": 358,
        "x1": 334,
        "x2": 692,
        "y1": 143,
        "y2": 598
      }
    }
  ],
}
  

返却されるJSONの構造

フィールド 形式 内容
status String 成功時"ok"。失敗時"error"。
詳細は別表を参照。
gender String 性別。
男性: "Male", 女性: "Female"
result Array<Dict> 認識した顔それぞれの詳細情報を含む。
age Number 推定される年齢。 ex) 22.29
location Dict 顔の検出位置情報。
location:x1 Number 顔の検出範囲の左上の点のx座標。
location:y1 Number 顔の検出範囲の左上の点のy座標。
location:x2 Number 顔の検出範囲の右下の点のx座標。
location:y2 Number 顔の検出範囲の右下の点のy座標。
location:width Number 検出範囲の幅。
location:height Number 検出範囲の高さ。
emotion String 顔から推論された感情
emotion String 顔から推論された感情
emotion_detail Dict それぞれの表情の度合い
emotion_detail:anger Number 怒っている表情をしている度合い
emotion_detail:happy Number 喜んでいる表情をしている度合い
emotion_detail:neutral Number 通常の表情をしている度合い
emotion_detail:sad Number 悲しんでいる表情をしている度合い
emotion_detail:suprise Number 驚いている表情をしている度合い
head_pose Dict 顔の姿勢
head_pose:pitch Number 顔のy軸方向の回転。縦への傾きの量
head_pose:yaw Number 顔のz軸方向の回転。首を回転させている量
head_pose:roll Number 顔のx軸に対する回転。横への傾きの量

エラー出力

status code error type error message detail 説明
400 Bad Request image_data is required. image_dataパラメータが必要です。
400 Bad Request File is not image. アップロードされたファイルが画像でないときに発生するエラーです。
400 Bad Request File format must be PNG or JPEG. アップロードされたファイルのフォーマットはJPEGかPNGである必要があります。
429 Too many request too many request 1時間に100回以上のリクエストをすると発生するエラーです。
500 Internal server error Internal server error サーバー内部でエラーが発生した場合のエラーです。

エラー出力の例


{
  status: "error",
  error_type: "Bad Request",
  error_message_detail: "File is not image"
}