[PYTHON] Lassen Sie uns mit Azure Face Emotionen erkennen

Ich habe es kürzlich benutzt, also werde ich ein wenig schreiben. Da dies mein erster Beitrag ist, kann es viele Fehler und fehlende Teile geben. Ich würde es begrüßen, wenn Sie mir freundlicherweise beibringen könnten: girl_tone1:

Azure Face hatte einen starken Eindruck von Gesichtserkennung Ich fand es interessant, Emotionen erkennen zu können, also benutzte ich es zur Erkennung von Emotionen.

Azure Face

Was Sie tun können: Gesichtsüberprüfung, Gesichtserkennung, Emotionserkennung Es scheint, dass es andere Möglichkeiten gibt, nach ähnlichen Gesichtern zu suchen und nach demselben Gesicht zu gruppieren. In diesem Artikel verwenden wir Gesichtserkennung und Emotionserkennung.

1. Erstellen Sie Variablen für Azure-Endpunkte und -Schlüssel

Sie können es verwenden, indem Sie Folgendes schreiben: ok_woman_tone1:

KEY = 'your_key'
ENDPOINT = 'your_endpoint'
face_client = FaceClient(ENDPOINT, CognitiveServicesCredentials(KEY))

2. Rufen Sie die Gesichtserkennungsmethode auf

params = ['age','emotion']
result = face_client.face.detect_with_stream(  
             image
             , return_face_id=True
             , return_face_landmarks=False
             , return_face_attributes=params 
         )

Grundsätzlich habe ich nur return_face_attributes von False mit der Standardeinstellung geändert. Bild: Diesmal wird ein Bildstrom übergeben return_face_id: Wenn True festgelegt ist, wird faceID zurückgegeben. return_face_landmarks: Wenn auf True gesetzt, wird es zurückgegeben. Gesicht Wahrzeichen return_face_attributes Gibt die im Parameter übergebenen Attributinformationen zurück.

Dieses Mal habe ich Alter und Emotionen an return_face_attributes weitergegeben Es gibt das Alter und die Gefühle des Ziels zurück.

UI-ähnlich

Ich möchte in der Lage sein, ein Bild durch Drücken einer Taste auf der Kamera aufzunehmen → Emotionserkennung → Ergebnis anzeigen…: upside_down: Ich werde es mit Kivy machen.

Erstellen Sie eine einfache Kivy-Datei

[Emotion.py]

# -*- coding: utf-8 -*-
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder

Builder.load_string("""
<MainWidget>:

""")

class MainWidget(BoxLayout):
    pass
class EmotionApp(App):
    title = "E.A."
    def build(self):
        return MainWidget()

if __name__ == "__main__":
    EmotionApp().run()

Bildschirm ↓ E.A1.png

Schwarz

2. Bringen Sie die Kamera und die Tasten an.

[Emotion.py]

(Abkürzung)

Builder.load_string("""
<MainWidget>:
    orientation: 'vertical'
    Camera:
        id: camera
        resolution: (640, 480)
        play: True
    Button:
        text: 'Capture'
        size_hint_y: None
        height: '48dp'
        on_press: root.capture()
""")

class MainWidget(BoxLayout):
    def capture(self):
        print('captured!')
(Abkürzung)

↓ Bildschirm (Da es sehr grob verarbeitet wurde, so dass Gesicht und Hintergrund nicht reflektiert werden, dient es nur als Referenz ...) 無題.png

Geben Sie die Methode zur Gesichtserkennung ein

[Emotion.py]

KEY = 'your_key'
ENDPOINT = 'your_endpoint'
face_client = FaceClient(ENDPOINT, CognitiveServicesCredentials(KEY))   

   (Abkürzung)
    def capture(self):
        texture = self.ids['camera'].texture
        nparr = np.fromstring(texture.pixels, dtype=np.uint8)
        reshaped = np.reshape(nparr, (480,640,4))
        ret,buf = cv2.imencode('.jpg', reshaped)
        stream = io.BytesIO(buf)

        params = ['age','emotion','hair']
        result = face_client.face.detect_with_stream(  
                     stream
                     , return_face_id=True
                     , return_face_landmarks=False
                     , return_face_attributes=params 
                 )
   (Abkürzung)

Popup zur Anzeige der Ergebnisse

[Emotion.py]

   (Abkürzung)
    Layout = BoxLayout(orientation='vertical')
       faceatts = result[0].face_attributes
       Layout.add_widget(Label(text=("age: "+ str(int(faceatts.age)))))
       Layout.add_widget(Label(text="emotion: "))      
       Layout.add_widget(Label(text="anger: " + str(faceatts.emotion.anger)))
       Layout.add_widget(Label(text="contempt: " + str(faceatts.emotion.contempt)))
       Layout.add_widget(Label(text="disgust: " + str(faceatts.emotion.disgust)))
       Layout.add_widget(Label(text="fear: " + str(faceatts.emotion.fear)))
       Layout.add_widget(Label(text="happiness: " + str(faceatts.emotion.happiness)))
       Layout.add_widget(Label(text="neutral: " + str(faceatts.emotion.neutral)))
       Layout.add_widget( Label(text="sadness: " + str(faceatts.emotion.sadness)))
       Layout.add_widget(Label(text="surprise: " + str(faceatts.emotion.surprise)))

       popupWindow = Popup(title="Results", content=Layout, size_hint=(None,None),size=(400,400)) 
       popupWindow.open()
     (Abkürzung)

erledigt!

Ich werde es versuchen. 無題2.png Drück den Knopf! 無題3.png Oh ~ Ich konnte sagen, dass ich richtig lachte! Ich werde jünger ... (lacht): entspannt: Schließlich wollte ich mich ein bisschen mehr an das Aussehen halten und lernen, wie es funktioniert: Roboter: Danke fürs Lesen!

# -*- coding: utf-8 -*-
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
import cv2
import numpy as np
import io
from azure.cognitiveservices.vision.face import FaceClient
from msrest.authentication import CognitiveServicesCredentials
from kivy.uix.label import Label
from kivy.uix.popup import Popup
KEY = 'your_key'
ENDPOINT =  'your_end_point'
face_client = FaceClient(ENDPOINT, CognitiveServicesCredentials(KEY))
Builder.load_string("""
<MainWidget>:
    orientation: 'vertical'
    Camera:
        id: camera
        resolution: (640, 480)
        play: True
    Button:
        text: 'Capture'
        size_hint_y: None
        height: '48dp'
        on_press: root.capture()
""")

class MainWidget(BoxLayout):
    def capture(self):
        texture = self.ids['camera'].texture
        nparr = np.fromstring(texture.pixels, dtype=np.uint8)
        reshaped = np.reshape(nparr, (480,640,4))
        ret,buf = cv2.imencode('.jpg', reshaped)
        stream = io.BytesIO(buf)
        params = ['age','emotion']
        result = face_client.face.detect_with_stream(  
                    stream
                    , return_face_id=True
                    , return_face_landmarks=False
                    , return_face_attributes=params 
            )
        Layout = BoxLayout(orientation='vertical')
        faceatts = result[0].face_attributes
        Layout.add_widget(Label(text=("age: "+ str(int(faceatts.age)))))
        Layout.add_widget(Label(text="emotion: "))      
        Layout.add_widget(Label(text="anger: " + str(faceatts.emotion.anger)))
        Layout.add_widget(Label(text="contempt: " + str(faceatts.emotion.contempt)))
        Layout.add_widget(Label(text="disgust: " + str(faceatts.emotion.disgust)))
        Layout.add_widget(Label(text="fear: " + str(faceatts.emotion.fear)))
        Layout.add_widget(Label(text="happiness: " + str(faceatts.emotion.happiness)))
        Layout.add_widget(Label(text="neutral: " + str(faceatts.emotion.neutral)))
        Layout.add_widget( Label(text="sadness: " + str(faceatts.emotion.sadness)))
        Layout.add_widget(Label(text="surprise: " + str(faceatts.emotion.surprise)))

        popupWindow = Popup(title="Results", content=Layout, size_hint=(None,None),size=(400,400)) 
        popupWindow.open()
        
class EmotionApp(App):
    title = "E.A."
    def build(self):
        return MainWidget()

if __name__ == "__main__":
    EmotionApp().run()


Recommended Posts

Lassen Sie uns mit Azure Face Emotionen erkennen
Gesichtserkennung mit Edison
Versuchen wir nun die Gesichtserkennung mit Chainer (Lernphase)
Spielen wir mit der 4. Dimension der 4. Dimension
Spielen wir mit Amedas Daten - Teil 1
Gesichtserkennung mit OpenCV von Python
Gesichtserkennung durch Amazon Rekognition
Machen wir Othello mit wxPython
Gesichtserkennung mit Python + dlib
Spielen wir mit Amedas Daten - Teil 4
Schreiben wir Python mitinema4d.
Gesichtserkennung mit Python + OpenCV
Lassen Sie uns rote Objekte mit Python erkennen
Lassen Sie uns R-CNN mit Sklearn-theano machen
Gesichtserkennung / Schneiden mit OpenCV
Spielen wir mit Amedas Daten - Teil 3
Versuchen Sie die Gesichtserkennung mit Python
Gesichtserkennung mit Haar Cascades
Spielen wir mit Amedas Daten - Teil 2
Anime-Gesichtserkennung mit OpenCV