Hallo. Dies ist ein Beitrag nach langer Zeit. In letzter Zeit haben Google und Microsoft ziemlich gute APIs für maschinelles Lernen bereitgestellt. Bis jetzt kann das, was ich mit OpenCV und dem Neural Network Framework erstellt habe, einfach durch Aufrufen der API verwendet werden. Daher denke ich, dass der Schwellenwert für diejenigen, die ihn für eine Weile verwenden möchten, erheblich gesenkt wurde. .. Dieses Mal möchte ich die Face-API von Microsoft ausprobieren. Es scheint, dass es sich jetzt um Gesichtserkennung handelt, aber dies ist eine ziemlich hervorragende API, mit der ähnliche Gesichter sowie die Position von Augen und Nase sowie Alter und Geschlecht gesucht und gruppiert werden können. Wie alt sehe ich aus?, das vor einiger Zeit populär war, sollte dieselbe API verwenden. Wahrscheinlich ist es besser, als den Algorithmus selbst mit OpenCV usw. zu schreiben. ..
Gehen wir zunächst zur Microsoft-Seite und rufen die Face-API auf. https://www.microsoft.com/cognitive-services/en-us/face-api Klicken Sie unten auf der Seite auf Auf Azure kaufen, um sich für ein Azure-Konto zu registrieren. Wählen Sie nach der Registrierung die API aus, die Sie verwenden möchten. Wählen Sie hier Kostenlos "30.000 Transaktionen pro Monat".
Wenn Sie den Schlüssel sicher erhalten, wird er wie folgt auf Ihrer Seite angezeigt. Drücken Sie die "Show" -Taste, um die Taste anzuzeigen. Sie benötigen diesen Schlüssel später, kopieren Sie ihn also und speichern Sie ihn.
Diesmal ist es eine Testversion, daher schreibe ich den Code schnell in Python.
import httplib, urllib, base64
import cv2
import numpy as np
import json
import sys
headers = {
# Request headers
'Content-Type': 'application/octet-stream',
'Ocp-Apim-Subscription-Key': '[Input your key]',
}
params = urllib.urlencode({
# Request parameters
'analyzesFaceLandmarks': 'false',
'analyzesAge': 'true',
'analyzesGender': 'true',
'analyzesHeadPose': 'false',
})
def display_expression(data,img):
font = cv2.FONT_HERSHEY_PLAIN
font_size = 2
data = json.loads(data)
for face in data:
f_rec = face['faceRectangle']
width = f_rec['width']
height = f_rec['height']
left = f_rec['left']
top = f_rec['top']
cv2.rectangle(img,(left,top),(left+width,top+height),(0,200,0),2)
f_attr = face['attributes']
gender = f_attr['gender']
age = f_attr['age']
cv2.putText(img, gender, (left, 30+top+height), font, font_size, (0, 200, 0), 2)
cv2.putText(img, str(age), (left, 60+top+height), font, font_size, (0, 200, 0), 2)
if __name__ == '__main__':
if len(sys.argv) < 1:
quit()
file_path = sys.argv[0]
conn = httplib.HTTPSConnection('api.projectoxford.ai')
conn.request("POST", "/face/v0/detections?%s" % params, open(file_path, 'rb'), headers)
response = conn.getresponse()
data = response.read()
print(data)
img = cv2.imread(file_path)
display_expression(data, img)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
conn.close()
** Codeerklärung ** Geben Sie den zuvor erhaltenen Schlüssel unter [Geben Sie Ihren Schlüssel ein] ein.
'Ocp-Apim-Subscription-Key': '[Input your key]',
Sie können die zu erfassenden Informationen ändern, indem Sie die an die Anforderung gesendeten Parameter deaktivieren / aktivieren.
# Request parameters
'analyzesFaceLandmarks': 'false',
'analyzesAge': 'true',
'analyzesGender': 'true',
'analyzesHeadPose': 'false',
Der Anzeigeteil verwendet OpenCV.
Sogar mehrere Personen können dies tun. (Obwohl die Genauigkeit von Geschlecht und Alter zweifelhaft ist)
Wir konnten die Position des Gesichts ziemlich genau erkennen, aber es scheint immer noch Zweifel an Geschlecht und Alter zu geben. (Besonders bei asiatischen Gesichtern habe ich den Eindruck, dass die Genauigkeit schlecht ist) Es gibt viele andere APIs für Audio und Video in der Microsoft-API, daher möchte ich auch andere verwenden. Wenn Sie es jedoch wirklich nutzen möchten, müssen Sie zu einem kostenpflichtigen Tarif wechseln. ..
In Zukunft war ich der Meinung, dass die anfängliche Überprüfung und Prüfung viel einfacher erfolgen kann, indem die APIs von Google und Microsoft für Projekte im Zusammenhang mit maschinellem Lernen und Bildverarbeitung aufgerufen werden. Wir freuen uns auch auf die Entstehung interessanter Webdienste und IoT, die diese nutzen. Ich habe kürzlich einen Raspberry Pi3 bekommen und möchte bald selbst ein interessantes IoT machen!
Recommended Posts