[PYTHON] Pfeffer-Tutorial (7): Bilderkennung

Inhalt dieses Tutorials

In diesem Tutorial werden die Spezifikationen und das Verhalten der Bilderkennung durch Pepper anhand von Beispielen erläutert.

  1. Bildbezogene Spezifikationen
  2. So überprüfen Sie das Bild mit Choregraphe
  3. Grundlegende Gesichtsbehandlung
  4. Lernen und Diskriminierung im Gesicht
  5. Bildlernen und Diskriminierung

** Für die Bilderkennung gibt es keine Betriebsbestätigungsmethode für virtuelle Roboter, und eine tatsächliche Pepper-Maschine ist erforderlich. ** Ich möchte, dass Sie mit der eigentlichen Pfeffermaschine im Aldebaran Atelier Akihabara experimentieren. (Reservierungs-URL: http://pepper.doorkeeper.jp/events)

Verschiedene Sensorspezifikationen

Die Spezifikationen für die Bildverarbeitung von Pepper lauten wie folgt.

  1. 2D-Kamera x 2 (Stirn ** [A] **, Mund ** [B] **) ... Ausgabe 1920 x 1080, 15 fps
  2. 3D-Kamera (Infrarotbestrahlung: ** [C] **, Infrarotdetektion: ** [D] **) ... ASUS Xtion 3D-Sensor, Ausgang 320 × 240, 20 fps

cameras.png

Pepper verwendet diese Kameras, um Personen und Objekte zu erkennen.

So überprüfen Sie das Bild mit Choregraphe

Sie können die Informationen des von Peppers Kamera aufgenommenen Bildes in Choregraphe überprüfen.

Bestätigung durch das Videomonitorfeld

Verwenden Sie das Videomonitorfeld für Vorgänge im Zusammenhang mit Pepper-Bildern. Das Videomonitorfenster befindet sich normalerweise im selben Bereich wie die Pose-Bibliothek und kann durch Auswahl der Registerkarte Videomonitor angezeigt werden. Wenn Sie es nicht finden können, wählen Sie [Videomonitor] aus dem Menü [Ansicht].

video-monitor.png

Das Videomonitorfenster bietet die Möglichkeit, Bilder von Peppers Kamera anzuzeigen sowie die unten beschriebene visuelle Erkennungsdatenbank zu verwalten.

  1. Kamerabild ... Sie können den Inhalt der Pepper-Kamera überprüfen
  2. Wiedergabe / Pause-Taste ... Wiedergabe, um das aktuelle Kamerabild in Echtzeit anzuzeigen. Sie können dies mit einer Pause beenden
  3. Schaltfläche für den Lernmodus ... Wechseln Sie in den Bildlernmodus. Die Verwendung wird im Tutorial zum Lernen von Bildern erläutert
  4. Schaltfläche "Importieren" ... Importiert die visuelle Erkennungsdatenbank aus einer lokalen Datei in Choregraphe
  5. Schaltfläche Exportieren ... Exportiert die visuelle Erkennungsdatenbank von Choregraphe in eine lokale Datei
  6. Schaltfläche Löschen ... Löscht die aktuelle visuelle Erkennungsdatenbank
  7. Senden-Schaltfläche ... Sendet die visuelle Erkennungsdatenbank, die in der aktuellen Choregraphe enthalten ist, an Pepper

Bestätigung durch Monitor

Sie können auch die mit Choregraphe installierte Monitor-Anwendung verwenden. Die Monitor-Anwendung wird wie folgt gestartet.

  1. Starten Sie die ** Monitor ** -Anwendung, die mit Choregraphe installiert ist. monitor-icon.png

  2. Klicken Sie im Startmenü der Monitor-Anwendung auf ** Kamera ** monitor-top.png

  3. Ein Dialogfeld, in dem Sie aufgefordert werden, eine Verbindung zum Pepper herzustellen, wird geöffnet. Wählen Sie daher den verwendeten Pepper aus. connect-dialog.png

  4. Das Monitorfenster wird geöffnet. Klicken Sie auf die Schaltfläche ** Wiedergabe **. monitor-window.png

  5. Sie können das von Peppers Kamera aufgenommene Bild überprüfen monitor-window-playing.png Sie können die Wiedergabe mit der Taste ** Pause ** stoppen

  6. Zusätzlich zu Bildern können Sie Informationen zur Bilderkennung überprüfen. Durch Aktivieren von ** Gesichtserkennung [A] ** können Sie den Status von Peppers ** Gesichtserkennung [B] ** überprüfen. monitor-face.png

  7. Wenn Sie den Inhalt der 3D-Kamera überprüfen möchten, ** Wählen Sie [3D-Sensormonitor] aus dem Menü [Plugin laden] ** monitor-menu.png

  8. Sie können die Tiefenkarte überprüfen, indem Sie wie bei einer 2D-Kamera auf die Schaltfläche ** Wiedergabe ** klicken. monitor-depthmap.png Sie können die Wiedergabe mit der Taste ** Pause ** stoppen

Mit dieser Monitor-Anwendung können Sie den Inhalt des von Pepper erkannten Bilds detailliert überprüfen.

Grundlegende Gesichtserkennung

Gesichtserkennung

Wenn Sie das standardmäßig bereitgestellte Feld Gesichtserkennung verwenden, können Sie die Anzahl der Gesichter ermitteln, die derzeit von Pepper erkannt werden. Hier werde ich versuchen, die Say Text-Felder, die ich mehrmals verwendet habe, so zu kombinieren, dass ** Pepper die Anzahl der erkannten Gesichter spricht **.

Versuchen Sie zu machen

  1. Vorbereitung der zu verwendenden Box
  1. Schließen Sie die Boxen an face-detection-flow.png

Durch Verbinden von numberOfFaces (orange, Typ: Nummer) im Feld Gesichtserkennung mit onStart (blau, Typ: Zeichenfolge) im Feld Sagen von Text können Sie Pepper dazu bringen, den Wert von numberOfFaces zu sprechen, der vom Feld Gesichtserkennung ausgegeben wird. Ich werde. facedetection-saytext.png

Der Antrag ist jetzt vollständig. Wenn ein Gesicht erkannt wird, gibt das Feld Gesichtserkennung numberOfFaces aus, und Pepper spricht als Antwort auf diese Ausgabe.

Funktionsprüfung

Stellen Sie eine Verbindung zu Pepper her und versuchen Sie zu spielen. Wenn Sie Pepper Ihr Gesicht zeigen, spricht Pepper über die Anzahl der sichtbaren Gesichter wie "Ichi" und "Ni".

In der Roboteransicht können Sie auch die Position des von Pepper erkannten Gesichts ermitteln.

robotview-face.png

Wenn Pepper beispielsweise wie oben gezeigt ein Gesicht erkennt, wird in der Roboteransicht eine Gesichtsmarkierung angezeigt. Dies zeigt die Position des Gesichts, die Pepper kennt.

(Ergänzung) Anpassung des Say-Textfelds

Dieses Beispiel ist so einfach wie das Aussprechen von Zahlen wie "ichi" und "ni". Es reicht aus, die Bewegung der Gesichtserkennungsbox zu sehen, aber es ist eine Anwendung, die schwer zu sagen ist, was Sie tun.

Wenn hier beispielsweise die Anzahl der erkannten Gesichter 1 beträgt, ändern wir sie so, dass "Es ist eine Person vor mir" ** angezeigt wird.

Das Feld "Text sagen" ist ein Python-Feld, das die sprechende API ** ALTextToSpeech API ** verwendet. Wenn Sie die Zeichenfolge bearbeiten können, die aus dem Feld "Text sagen" an ALTextToSpeech übergeben wurde, können Sie Ihre Aussagen ändern.

Dieses Mal werde ich versuchen, die Zeichenfolge im Feld "Text sagen" zu bedienen. Durch Doppelklicken auf das Feld "Text sagen" wird der Python-Code geöffnet. Suchen Sie daher in diesem Code nach der Funktion "onInput_onStart (self, p)". Sie können sehen, dass es eine Linie wie diese gibt:

            sentence = "\RSPD="+ str( self.getParameter("Speed (%)") ) + "\ "
            sentence += "\VCT="+ str( self.getParameter("Voice shaping (%)") ) + "\ "
            sentence += str(p)
            sentence +=  "\RST\ "
            id = self.tts.post.say(str(sentence))
            self.ids.append(id)
            self.tts.wait(id, 0)

p enthält den in das Feld Say Text eingegebenen Wert und erstellt die Zeichenfolge, die der ALTextToSpeech-API unter satz + = str (p) gegeben werden soll. Wenn Sie diesen Teil in "Satz + =" da ist eine Person vor mir "+ str (p) +" da ist eine Person "" usw. ändern, ist anstelle von "eins" "eine Person vor mir". "(" Eine Person "spricht" eine Person ").

Gesichtserkennung

Ähnlich wie bei der Stimme ermöglicht es Pepper, die Richtung des Gesichts zu verfolgen. Im Audiobeispiel haben wir nur den Winkel des Halses verschoben, aber hier verwenden wir das Feld Face Tracker, um ** in Richtung des Gesichts ** zu bewegen.

Versuchen Sie zu machen

  1. Vorbereitung der zu verwendenden Boxen (Standard-Box-Bibliothek)
  1. Schließen Sie die Boxen an face-tracker-flow.png

Sie können Ihr Gesicht verfolgen, indem Sie das Feld Face Tracker starten.

  1. Stellen Sie die Parameter ein Setzen Sie die Mode-Variable des Face Tracker-Parameters auf ** Move **. face-tracker-params.png

Der Antrag ist jetzt vollständig. Die Face Tracker-Box verfügt über eine große Funktion, die "das Gesicht identifiziert und sich in diese Richtung bewegt", sodass der Ablauf so einfach sein kann.

Funktionsprüfung

Stellen Sie eine Verbindung zu Pepper her und versuchen Sie zu spielen. Wenn sich ein Mensch in der Nähe befindet, versucht er, das erkannte Gesicht zu verfolgen, indem er seinen Hals beugt. Während er sich jedoch allmählich mit dem Gesicht nach vorne wegbewegt, bewegt sich Pepper zum Gesicht. Wenn Sie per Kabel mit Pepper verbunden sind, achten Sie darauf, dass Sie es nicht in eine unerwartete Richtung bewegen.

Bevor ich mich daran gewöhne, habe ich ein wenig Angst, verfolgt zu werden, während ich Pepper anstarrte, aber irgendwann denke ich vielleicht, dass meine oberen Augen süß sind ...!

Gesichtslernen und Diskriminierung

Im vorherigen Beispiel habe ich einfach "Gesichter" gezählt und verfolgt. Schauen wir uns hier an, wie man lernt, sich daran zu erinnern, wer das Gesicht ist.

Das Gesicht lernen

Sie können Pepper mit einem Gesicht lernen lassen, indem Sie das Feld Gesicht lernen verwenden. Hier werden wir versuchen **, uns das Gesicht zu merken, das Pepper 5 Sekunden nach der Wiedergabe mit dem Namen "Taro" ** gesehen hat.

Versuchen Sie zu machen

  1. Vorbereitung der zu verwendenden Boxen (Standard-Box-Bibliothek)
  1. Schließen Sie die Boxen an learn-face-flow-1.png

  2. Legen Sie die Zeichenfolge fest learn-face-flow-2.png

Mit Learn Face können Sie jetzt eine Anwendung implementieren, in der Peppers Gesicht als "Taro" gelernt wird.

Funktionsprüfung

Stellen Sie nach dem Herstellen einer Verbindung zu Pepper und dem Spielen sicher, dass sich Ihr Gesicht in Reichweite der Kamera von Pepper befindet. Fünf Sekunden nach der Wiedergabe werden Peppers Augen grün **, wenn das Gesicht normal gelernt werden kann, und ** rot **, wenn es fehlschlägt.

Sie können die gelernten Gesichtsdaten löschen, indem Sie ** Alle Gesichter verlernen ** ausführen.

####Info.png [Referenz] Learn Face Inhalt Sie können sehen, wie "5 Sekunden warten" und "Augen grün werden" im Feld "Gesicht lernen" durch Doppelklicken auf das Feld "Gesicht lernen" realisiert werden. inside-learn-face.png Sie können sehen, dass das Feld "Gesicht lernen" ein Flussdiagrammfeld ist und als Sammlung einfacherer Felder wie "Warten" dargestellt wird. Wenn Sie auf diese Weise in die Box schauen, können Sie sie als Referenz verwenden, wenn Sie über die Verwendung der Box nachdenken.

Gesichtsdiskriminierung

Nachdem Sie das Gesicht anhand der Trainingsdaten gelernt haben, ** bestimmen Sie, wer das Gesicht ist, das Pepper gerade erkennt, und lassen Sie ihn den Namen sprechen **.

Versuchen Sie zu machen

  1. Vorbereitung der zu verwendenden Box
  1. Schließen Sie die Boxen an face-reco-flow.png Es ist sehr einfach, es gibt nur die Ausgabe (blau, Zeichenfolge) der Face Reco. Box an das Say Text-Feld.

Funktionsprüfung

Verbinde dich mit Pepper und spiele. Wenn Sie Pepper Ihr Gesicht zeigen und den Namen sagen, den Sie gelernt haben, wie z. B. "Taro", sind Sie erfolgreich. Lernen Sie Gesicht mehrere Gesichter, um zu sehen, ob Pfeffer richtig identifiziert werden kann.

Bildlernen und Diskriminierung

Choregraphe hat eine Funktion zum Bedienen der visuellen Erkennungsdatenbank, mit der Pepper etwas anderes als das menschliche Gesicht lernen kann.

Bilder lernen

Verwenden Sie das Videomonitorfeld von Choregraphe, um Bilder zu lernen. Hier lernen wir ** NAO ** im Atelier.

  1. Stellen Sie mit dem Objekt auf dem Videomonitor eine Verbindung zu Pepper her und klicken Sie auf die Schaltfläche ** Lernen ** nao-start-recog.png

  2. Klicken Sie mit der linken Maustaste auf ** Objektgrenze ** nao-recog-point-1.png

  3. Erstellen Sie, indem Sie mit der linken Maustaste auf den Scheitelpunkt klicken, als ob Sie eine gerade Linie zeichnen würden nao-recog-point-2.png

  4. Stellen Sie die Scheitelpunkte so ein, dass sie das Objekt umgeben, und klicken Sie schließlich mit der linken Maustaste auf den Startpunkt. nao-recog-point-3.png

  5. Der Bereich des Objekts wird identifiziert und ein Dialogfeld zur Eingabe von Informationen wird geöffnet. Geben Sie die entsprechenden Informationen ein. nao-recog-finished.png

Geben Sie hier NAO ein. recog-register.png

  1. Klicken Sie auf die Schaltfläche ** Aktuelle visuelle Erkennungsdatenbank an Roboter senden **, um die in der visuellen Erkennungsdatenbank von Choregraphe registrierten Informationen an Pepper zu senden. send-recog-db.png

Sie haben Pepper jetzt mit der Zeichenfolge "NAO" den Bildfunktionen von NAO zugeordnet.

Bildunterscheidung

Wie bei der Gesichtsdiskriminierung werden wir versuchen, Sie anhand des Inhalts der geschulten Datenbank zur visuellen Erkennung über das, was Sie sehen, sprechen zu lassen.

Versuchen Sie zu machen

Mit der Vision Reco. Box können Sie das, was Pepper gerade betrachtet, mit der visuellen Erkennungsdatenbank abgleichen, um den Namen des Objekts zu erhalten.

  1. Vorbereitung der zu verwendenden Box
  1. Verbinden Sie die Boxen (1) vision-reco-flow-1.png Geben Sie dem Feld "Text sagen" zunächst die Ausgabe "onPictureLabel" (blau, Zeichenfolge) des Felds "Vision Reco."

  2. Verbinde die Kästen (2) In diesem Beispiel sind die Ausgänge ** onPictureLabel ** und ** onStop ** der Vision Reco. Box verbunden, um den Betrieb der Vision Reco. Box während des Gesprächs nach der Erkennung zu stoppen (der Grund wird später beschrieben). vision-reco-flow-2.png Verbinden Sie nach dem Sprechen den ** onStopped-Ausgang ** des Say Text-Felds mit dem ** onStart-Eingang ** des Vision Reco. Box, um den Betrieb des Vision Reco. Box fortzusetzen. vision-reco-flow-3.png

####Info.png [Tipps] Vision Reco. Expliziter Stopp der Box Wenn die Vision Reco. Box ein Bild erkennt, gibt es es regelmäßig aus, auch wenn sich an der erkannten Situation nichts ändert. In der Anforderung aus dem Feld "Text sagen" an die ALTextToSpeech-API, die wir zuvor gesehen haben, wird die neu eingegebene Zeichenfolge nicht verworfen und akkumuliert, damit sie als nächstes verarbeitet werden kann. Es ist wie geworden.

Wenn daher nur die Verbindung in 2. verwendet wird, werden Sie nicht nur weiterhin "NAO", "NAO" und "NAO" sprechen, während Sie NAO anzeigen, sondern dies wird auch für eine Weile fortgesetzt, selbst wenn Sie NAO aus Peppers Ansicht entfernen. Es wird sein. Um solche Probleme zu vermeiden, wird die Vision Reco. Box vorübergehend gestoppt, nachdem die Vision Reco. Box das Erkennungsergebnis ausgegeben hat, und nach Abschluss der Say Text Box wird die Vision Reco. Operation neu gestartet. ..

Funktionsprüfung

Versuchen Sie, eine Verbindung zu Pepper herzustellen und die von Ihnen erstellte Anwendung abzuspielen. Von "NAO" zu sprechen, wenn NAO gezeigt wird, ist ein Erfolg.

Wie Sie sehen können, verfügt Pepper über verschiedene Funktionen zur Bilderkennung. Durch Steuern von Pepper mit den von den Augen erhaltenen Informationen kann der Kontrollbereich erweitert werden. Bitte probieren Sie es aus.

Recommended Posts

Pfeffer-Tutorial (7): Bilderkennung
Bilderkennung
Grundlagen der CNN 1-Bilderkennung
Deep Learning Bilderkennung 1 Theorie
Pfeffer-Tutorial (5): Verwenden eines Tablets
Anwendung der CNN2-Bilderkennung
Bilderkennung mit Keras + OpenCV
Python x Tensoflow x Gesichtserkennung
Deep Learning Bilderkennung 2 Modellimplementierung
Aufbau und Grundlagen der Bilderkennungsumgebung
Bilderkennung von Früchten mit VGG16
Python: Grundlagen der Bilderkennung mit CNN
Kategorieschätzung mit der Bilderkennungs-API von docomo
Python: Anwendung der Bilderkennung mit CNN
Bilderkennungsmodell mit Deep Learning im Jahr 2016
Bilderkennung mit CNN Pferden und Hirschen
Deep Learning Bilderkennung 3 nach der Modellerstellung
Ich habe mit Jupyter eine einfache Bilderkennung versucht