今回は画像の美人度を判定できる
APIを用いて顔の美人度の
点数を判定していきたいと思います。
解説動画はこちら
今回使用したのが
Face++ というアプリのAPIです。
これは顔の美人度を判定して
返すことができるので
これを見ていきたいと思います。
なお利用にはAPIキーを取得する必要があるので
先に登録をしておかないと動かせません。
やってみたい方は
こちらのリンクからゲットしておいて下さい。
Face++の登録先
さてサンプルプログラムを見ていきましょう。
先にキーを文字列で指定しておきます。
サンプルプログラムはこちら
apiキーの部分はご自身ので差し替えて下さい。
あらかじめ画像を用意しておく必要があるので
ノートブックの配下のフォルダに
pngファイルを格納して下さい。
キーなどが揃っていればAPIは動きますが
画像によっては失敗することもあります。
成功したものだけ結果に残します。
結果を見るには次のコードで行います。
さて、誰がどんな点数になったでしょうか
点数に関しては動画の方をご覧ください。
上位と下位で判定してみましたが
納得感のある点数が出るのでは
ないでしょうか?!?!?!
自分の顔画像とかも送ってみれば
客観的に判断できるかもしれませんね。
興味がある方は
使ってみて下さい。
今日はここまでです
それでは
APIを用いて顔の美人度の
点数を判定していきたいと思います。
解説動画はこちら
今回使用したのが
Face++ というアプリのAPIです。
これは顔の美人度を判定して
返すことができるので
これを見ていきたいと思います。
なお利用にはAPIキーを取得する必要があるので
先に登録をしておかないと動かせません。
やってみたい方は
こちらのリンクからゲットしておいて下さい。
Face++の登録先
さてサンプルプログラムを見ていきましょう。
先にキーを文字列で指定しておきます。
api_key = "先にAPIキーとかをゲットしてね" api_secret = "先にAPIキーとかをゲットしてね"
サンプルプログラムはこちら
import requests import base64 from collections import defaultdict from pathlib import Path import pickle import time endpoint = 'https://api-us.faceplusplus.com' face_dict1 = defaultdict(str) # 画像のフォルダを指定する src1 = sorted(Path('img/1/').glob('*.png')) # APIをつついて結果を取得する for i, file in enumerate(src1): img_file = base64.encodestring(open(file, 'rb').read()) response = requests.post( endpoint + '/facepp/v3/detect', { 'Content-Type': 'multipart/form-data', 'api_key': api_key, 'api_secret': api_secret, 'image_base64': img_file, 'return_attributes': 'gender,age,headpose,facequality,eyestatus,emotion,ethnicity,beauty,mouthstatus' } ) time.sleep(1.9) try: result = response.json() face_dict1[file.name[:-4]] = result print(i,file.name[:-4],'OK') except: print(i,file)
apiキーの部分はご自身ので差し替えて下さい。
あらかじめ画像を用意しておく必要があるので
ノートブックの配下のフォルダに
pngファイルを格納して下さい。
キーなどが揃っていればAPIは動きますが
画像によっては失敗することもあります。
成功したものだけ結果に残します。
結果を見るには次のコードで行います。
import matplotlib.pyplot as plt import numpy as np from PIL import Image %matplotlib inline result_1 = {} for k,v in face_dict1.items(): result_1[k] = v['faces'][0]['attributes']['beauty']['female_score'] for k,v in sorted(result_1.items(),reverse=True,key=lambda x:x[1]): im = Image.open("img/1/{0}.png".format(k)) img_resize = im.resize((500, int(500*(im.height/im.width)))) plt.imshow(np.asarray(img_resize)) plt.text(0.4, 0.4, v, size=30) plt.axis("off") plt.show()
さて、誰がどんな点数になったでしょうか
点数に関しては動画の方をご覧ください。
上位と下位で判定してみましたが
納得感のある点数が出るのでは
ないでしょうか?!?!?!
自分の顔画像とかも送ってみれば
客観的に判断できるかもしれませんね。
興味がある方は
使ってみて下さい。
今日はここまでです
それでは
コメントする