備忘録:Face++をPythonで実装
メイドロボットましろちゃん(https://twitter.com/A_says_)にイベント会場に来た人の顔を識別して会った回数が多い場合リアクションを変える機能を実装したいということでFace++で顔識別をやってみました.
Face++ - Face++ AI Open Platform
手順
- facesetを作成(create)
- 顔が含まれている画像をPOSTして,顔を検出(detect)してもらってface_tokenを発行
- face_tokenとラベル(user id)を紐づける(setuserid)
- face_tokenをfacesetに追加(add)
facesetは画像中の顔の固有番号face_tokenのストレージ(face_tokenは発行後72時間で消えるので記録しておく必要がある)
これを持っている画像の枚数分繰り返す.
あとは画像とfacesetをPOSTするとラベルと確率が帰ってくる
プログラム
画像データはこれを使いました.
CBCL FACE RECOGNITION DATABASE
このなかのtraining_originals
faceset作成 faceset_tokenの取得
create_url = 'https://api-us.faceplusplus.com/facepp/v3/faceset/create' payload = {'api_key': API_KEY, 'api_secret': API_SECRET } res = requests.post(create_url, data=payload) faceset_token = res.json()['faceset_token']
顔検出 face_tokenの取得
detect_url = 'https://api-us.faceplusplus.com/facepp/v3/detect' payload = {'api_key': API_KEY, 'api_secret': API_SECRET, 'image_base64': face_image } res = requests.post(detect_url, data=payload) face_token = res.json()['faces'][0]['face_token']
ラベル設定 useridの設定
set_url = 'https://api-us.faceplusplus.com/facepp/v3/face/setuserid' payload = {'api_key': API_KEY, 'api_secret': API_SECRET, 'face_token': face_token, 'user_id': face_id } res = requests.post(set_url, data=payload)
face_idは好きなやつでOK "John"とか"Tom"とか
face_tokenをfacesetに追加
add_url = 'https://api-us.faceplusplus.com/facepp/v3/faceset/addface' payload = {'api_key': API_KEY, 'api_secret': API_SECRET, 'faceset_token': faceset_token, 'face_tokens': face_token } res = requests.post(add_url, data=payload)
画像のラベル識別
search_url = 'https://api-us.faceplusplus.com/facepp/v3/search' payload = {'api_key': API_KEY, 'api_secret': API_SECRET, 'image_base64': face_image, 'faceset_token': faceset_token } res = requests.post(search_url, data=payload) return res.json()['results'][0]['confidence'], res.json()['results'][0]['user_id']
とりあえず備忘録なので簡単に,,,