先ほどぶりです。たてしきと申します。
本人確認しようってやつの続きです(雑)
お品書き
・学生証と顔認証で本人確認してみる [1] 〜MS Azure、Face APIの利用準備をしよう〜
・学生証と顔認証で本人確認してみる [2] 〜Face APIにユーザーを覚えさせよう〜 ←いまここ!
・学生証と顔認証で本人確認してみる [3] 〜Node-REDを使ってシステムを構築しよう〜 New!
・学生証と顔認証で本人確認してみる [4] 〜実際に使ってみよう〜 (仮) (執筆中)
学習のお時間
AIを使う上で欠かせないものといえば、やっぱり学習ですよね。
というわけでFace APIを学習させていきましょう。
Face APIの準備
1. PersonGroupを作成する
"PersonGroup"、つまり人物のグループを作ってその中に"PersonGroup Person"、つまりユーザーを、その中に顔情報を記録していくわけです。
Cognitive Services APIs Reference - PersonGroup - Createより、グループを作成します。緑色のやつです。
Hostに関しては前回の通り。
Query parameters - personGroupIdにはPersonGroupの名前を入力します。英小文字、数字ぐらいしか使えないみたいです(例ではauthlist
)。
Headersもいつも通りに入力してください。
今度はbodyを編集します。
nameの欄には表示される名前を入力します。ほとんど使いませんが。(例では大学の学生リスト
)
userDataは今回はまだ使わないので消してあげてください。
recognitionModelはrecognition_04
に変更してあげてください。最新版のほうがいいです。
「Send」を押すと作成できます。
2. Personを追加する
ユーザーを作成します。黄色のやつです。
Cognitive Services APIs Reference - PersonGroup Person - Createから作成します。
Query parameters - personGroupIdには先ほど作成したグループのID(ここではauthlist
)を入力します。
body部分のuserDataはまたしてもいらないので消してあげてください。
nameにユーザーの名前(ここではTestuser01
)を入力します。
「Send」を押すと、返り値にpersonId
というものが入ってます。
{
"personId": "aa0dadea-a031-45c9-a759-1a5a3fe93cfe"
}
これがユーザーを識別するUUIDになるのでどこかに保存しておきます。
3. PersistedFaceを登録する
顔写真を登録します。オレンジ色っぽいやつです。今回は班のメンバーの写真を登録しました。
もちろん枚数が多い方が精度が高くなりますが、実用化するわけでもないので僕の写真はとりあえず100枚準備しました。
Cognitive Services APIs Reference - PersonGroup Person - Add Faceからも登録できますが、圧倒的に時間がかかります。
というわけで、サクッとPythonでコードでも書いて自動化しましょう。
import requests, glob, os, time
resourceId = "tsukuru-system-faceapi" # リソースID
personGroup = "authlist" # さっき作ったグループID
personId = "aa0dadea-a031-45c9-a759-1a5a3fe93cfe" # さっきのpersonId
detectionModel = "detection_03" # 最新モデル
subKey = "********************" # サブスクキー
accessCount = 0 # アクセス制限用カウンタ
def main():
imageList = glob.glob(".\\images\\"+personId+"\\image_*.jpg") # 保存フォルダから画像を選択 (環境によって書き換えてください)
for image in imageList:
print("Reading "+os.path.basename(image)+" ... ", end="") # デバッグ
binData = open(image, "rb").read() # バイナリで読み込む
print("OK. Uploading ... ", end="") # デバッグ
response = requests.post(
"https://"+resourceId+".cognitiveservices.azure.com/face/v1.0/persongroups/"+personGroup+"/persons/"+personId+"/personFaces?detectionModel="+detectionModel,
headers={"Content-Type": "application/octet-stream", "Ocp-Apim-Subscription-Key": subKey},
data=binData
) # 顔情報を登録する
op = str(response.status_code)+" OK" if (response.status_code == requests.codes.ok) else str(response.status_code)+" Failed"
print(op) # デバッグ
print(response.json) # デバッグ
accessCount += 1 # アクセスカウント (アクセス制限対策)
if accessCount >= 20:
time.sleep(60) # 1分待機
accessCount = 0 # カウンタをリセット
if __name__ == "__main__":
main()
py main.py
で実行です。あとは登録が終わるまで待つ。
4. トレーニングする
いよいよ学習させます。Cognitive Services APIs Reference - PersonGroup - Trainから指示します。
Query parameters - personGroupIdにはグループのID(ここではauthlist
)を入力します。
「202 Accepted」となれば学習が開始されてます。
Cognitive Services APIs Reference - PersonGroup - Get Training Statusから学習状況を確認できます。
100枚程度なら1秒程度で学習できました。おそろしく速い学習、オレでなきゃ見逃しちゃうね
お疲れさまでした
学習まで完了しました。次はNode-REDを用いつつ、顔認証テストとシステム構築を行っていきます。
前: 学生証と顔認証で本人確認してみる [1] 〜MS Azure、Face APIの利用準備をしよう〜
次: 学生証と顔認証で本人確認してみる [3] 〜Node-REDを使ってシステムを構築しよう〜 (仮) (執筆中)