Probieren Sie schnell die Microsoft Face API in Python aus

Am Anfang

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. ..

Lassen Sie uns die API verfügbar machen

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".

Choose Face API.jpg

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.

Face API.jpg

Schreiben wir den Code

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.

Ergebnis

Nozomi.jpg

Ryan.jpg

Sogar mehrere Personen können dies tun. (Obwohl die Genauigkeit von Geschlecht und Alter zweifelhaft ist) Students.jpg

Zusammenfassung

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

Probieren Sie schnell die Microsoft Face API in Python aus
Implementieren Sie die REST-API schnell in Python
Versuchen Sie es mit der Wunderlist-API in Python
Versuchen Sie, die Kraken-API mit Python zu verwenden
Evernote-API in Python
Versuchen Sie gRPC in Python
C-API in Python 3
Probieren Sie 9 Slices in Python aus
Versuchen Sie es mit der BitFlyer Ligntning API in Python
Versuchen Sie, die ChatWork-API und die Qiita-API in Python zu verwenden
Versuchen Sie, die DropBox Core-API mit Python zu verwenden
Hit Mastodons API in Python
Versuchen Sie LINE Notify mit Python
Lassen Sie uns Yuma in Python 3 implementieren
Zusammenfassung der Gesichtserkennung in Python
Blender Python API in Houdini (Python 3)
Versuchen Sie die Gesichtserkennung mit Python
Versuchen Sie, mit Python schnell und einfach auf die Twitter-API zuzugreifen
Abrufen der arXiv-API in Python
Klicken Sie in Python auf die Sesami-API
Versuchen Sie es mit der Pleasant-API (Python / FastAPI).
Versuchen Sie es mit LevelDB mit Python (plyvel)
Versuchen wir es mit Fizz Buzz mit Python
Versuchen Sie, Trace in Python zu berechnen
Versuchen Sie den Zugriff auf das SPS-Register in Python
Erstellen Sie Google Mail in Python ohne Verwendung der API
Klicken Sie auf die Web-API in Python
Versuchen Sie die Gesichtserkennung mit Python + OpenCV
Versuchen Sie es mit der Aktions-API von Python argparse
Greifen Sie mit Python auf die Twitter-API zu
Versuchen Sie es mit LeapMotion mit Python
Versuchen Sie Python
Mausbedienung mit Windows-API in Python
Versuchen Sie, sich mit Python bei qiita anzumelden
Versuchen Sie, mit Binärdaten in Python zu arbeiten
Versuchen Sie, ein SYN-Paket in Python zu senden
Versuchen Sie, eine einfache Animation in Python zu zeichnen
Probieren Sie die Microsoft Cognitive Services Face-API aus
Holen Sie sich Google Fit API-Daten in Python
Holen Sie sich Youtube-Daten in Python mithilfe der Youtube-Daten-API
[Python] Erstellen Sie schnell eine API mit Flask
Serverlose Gesichtserkennungs-API mit Python
Versuchen Sie, Ihr Tagebuch mit Python zu durchsuchen
Probieren Sie eine funktionale Programmierpipe in Python aus
Versuchen Sie etwas wie Python für-else in Ruby
Versuchen Sie, die Spotify-API in Django zu aktivieren.
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Erste Schritte zum Testen von Google CloudVision in Python
Python 3.3 mit Anaconda
Versuchen Sie, Oni Mai Tsuji Miserable mit Python zu implementieren
Geokodierung in Python
SendKeys in Python
Berechnen wir das statistische Problem mit Python
3,14 π Tag, versuchen Sie also, in Python auszugeben
Erhalten Sie einen Websocket der kabu station ® API in Python
Versuchen Sie automatisch, Enum in Python 3.6 automatisch zu bewerten