Verwendung der Google Vision-API

Kürzlich habe ich erläutert, wie Computer sehen, hören, fühlen, riechen und schmecken können. Ihr Code kann unter anderem mit der Google Vision-API „sehen“. Die Google Vision-API verbindet Ihren Code mit den Bilderkennungsfunktionen von Google. Sie können sich Google Image Search als eine Art API / REST-Schnittstelle zu images.google.com vorstellen, aber es kann viel mehr als nur ähnliche Bilder anzeigen.

Google Vision kann erkennen, ob Sie eine Katze oder ein Mensch sind, sowie die Teile Ihres Gesichts. Es wird versucht festzustellen, ob Sie gestellt sind oder etwas tun, das für die sichere Suche in Google nicht in Ordnung ist - oder nicht. Es versucht sogar zu erkennen, ob Sie glücklich oder traurig sind.

Einrichten der Google Vision-API

Um die Google Vision-API verwenden zu können, müssen Sie sich für ein Google Compute Engine-Konto anmelden. GCE kann kostenlos ausprobiert werden, Sie benötigen jedoch eine Kreditkarte, um sich anzumelden. Von dort aus wählen Sie ein Projekt aus (aber Mein erstes Projekt wird ausgewählt, wenn Sie sich gerade angemeldet haben). Dann holen Sie sich einen API-Schlüssel aus dem linken Menü.

Hier verwende ich einen einfachen API-Schlüssel, den ich mit dem Befehlszeilentool Curl verwenden kann (wenn Sie es vorziehen, können Sie ein anderes Tool verwenden, mit dem REST-APIs aufgerufen werden können):

Speichern Sie den generierten Schlüssel in einer Textdatei oder einem Puffer (ich beziehe mich wie YOUR_KEYbisher darauf) und aktivieren Sie die API in Ihrem Projekt (gehen Sie zu dieser URL und klicken Sie auf API aktivieren):

Wählen Sie Ihr Projekt im nächsten Bildschirm aus:

Jetzt können Sie loslegen! Kleben Sie diesen Text in eine Datei namens google_vision.json:

{"Anfragen": [{"Bild": {"Quelle": {"BildUri": "//upload.wikimedia.org/wikipedia/commons/9/9b/Gustav_chocolate.jpg"}}, "Funktionen": [ {"type": "TYPE_UNSPECIFIED", "maxResults": 50}, {"type": "LANDMARK_DETECTION", "maxResults": 50}, {"type": "FACE_DETECTION", "maxResults": 50}, {" Typ ":" LOGO_DETECTION "," maxResults ": 50}, {" Typ ":" LABEL_DETECTION "," maxResults ": 50}, {" Typ ":" TEXT_DETECTION ","maxResults": 50}, {"type": "SAFE_SEARCH_DETECTION", "maxResults": 50}, {"type": "IMAGE_PROPERTIES", "maxResults": 50}, {"type": "CROP_HINTS", "maxResults" ": 50}, {" type ":" WEB_DETECTION "," maxResults ": 50}]}]}{"type": "WEB_DETECTION", "maxResults": 50}]}]}{"type": "WEB_DETECTION", "maxResults": 50}]}]}

Diese JSON-Anforderung teilt der Google Vision-API mit, welches Bild analysiert und welche Erkennungsfunktionen aktiviert werden sollen. Ich habe gerade die meisten von ihnen mit bis zu 50 Ergebnissen gemacht.

Verwenden Sie jetzt Curl:

curl -v -s -H "Inhaltstyp: application / json" //vision.googleapis.com/v1/images:annotate?key=YOUR_KEY --data-binary @ google_vision.json> Ergebnisse 

Anzeigen der Antwort von Google Vision API

* Verbunden mit vision.googleapis.com (74.125.196.95), Port 443 (# 0) * TLS 1.2-Verbindung über TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 * Serverzertifikat: * .googleapis.com * Serverzertifikat: Google Internet Authority G3 * Serverzertifikat: GlobalSign> POST / v1 / images: annotate? key = YOUR_KEY HTTP / 1.1> Host: vision.googleapis.com> User-Agent: curl / 7.43.0> Akzeptieren: * / *> Inhaltstyp: application / json> Inhaltslänge: 2252 > Erwarten: 100-Fortsetzen> * Warten auf 100-Fortsetzen} [2252 Byte Daten] * Wir sind vollständig hochgeladen und in Ordnung <HTTP / 1.1 200 OK <Inhaltstyp: application / json; Zeichensatz = UTF-8 <Variiert: X-Origin <Variiert: Referer <Datum: Di, 24. April 2018 18:26:10 GMT <Server: ESF <Cache-Kontrolle: privat <X-XSS-Schutz: 1; mode = block <X-Frame-Optionen: SAMEORIGIN <X-Content-Type-Optionen: nosniff <Alt-Svc: hq = ": 443"; ma = 2592000; quic = 51303433; quic = 51303432; quic = 51303431; quic = 51303339; quic = 51303335, quic = ": 443"; ma = 2592000; v = "43,42,41,39,35" <Accept-Ranges: none <Variieren: Origin, Accept-Encoding <Transfer-Encoding: Chunked <{[905 Byte Daten] * Verbindung # 0 zum Host vision.googleapis. com intakt gelassen

Sie sollten so etwas sehen:

Wenn Sie sich die Ergebnisse ansehen, sehen Sie Folgendes:

{"Antworten": [{"labelAnnotations": [{"mid": "/ m / 01yrx", "description": "cat", "score": 0.99524164, "topicality": 0.99524164}, {"mid": "/ m / 035qhg", "Beschreibung": "Fauna", "Punktzahl": 0,93651986, "Aktualität": 0,93651986}, {"Mitte": "/ m / 04rky", "Beschreibung": "Säugetier", "Punktzahl" ": 0,92701304," Aktualität ": 0,92701304}, {" Mitte ":" / m / 07k6w8 "," Beschreibung ":" kleine bis mittelgroße Katzen "," Punktzahl ": 0,92587274," Aktualität ": 0,92587274}, {" mid ":" / m / 0307l ","Beschreibung ":" Katze wie Säugetier "," Punktzahl ": 0,9215815," Aktualität ": 0,9215815}, {" Mitte ":" / m / 09686 "," Beschreibung ":" Wirbeltier "," Punktzahl ": 0,90370363," Aktualität " ": 0.90370363}, {" mid ":" / m / 01l7qd "," description ":" whiskers "," score ": 0.86890864," topicality ": 0.86890864…Beschreibung ":" Whisker "," Score ": 0,86890864," Aktualität ": 0,86890864…Beschreibung ":" Whisker "," Score ": 0,86890864," Aktualität ": 0,86890864…

Google weiß, dass Sie ihm ein Katzenbild geliefert haben. Es hat sogar die Schnurrhaare gefunden!

Jetzt werde ich ein größeres Säugetier versuchen. Ersetzen Sie die URL in der Anfrage durch mein Twitter-Profilbild und führen Sie sie erneut aus. Es hat ein Bild von mir, wie ich auf meiner Thailand-Reise 2014 von einem Elefanten geknutscht werde.

Die Ergebnisse enthalten Positionen meiner Gesichtszüge.

… "Orientierungspunkte": [{"Typ": "LEFT_EYE", "Position": {"x": 114.420876, "y": 252.82072, "z": -0.00017215312}}, {"Typ": "RIGHT_EYE", "Position": {"x": 193.82027, "y": 259.787, "z": -4.495486}}, {"Typ": "LEFT_OF_LEFT_EYEBROW", "Position": {"x": 95.38249, "y": 234.60289, "z": 11.487803}},…

Google kann Emotionen nicht so gut beurteilen wie Gesichtszüge:

"rollAngle": 5.7688847, "panAngle": -3.3820703, "joyLikelihood": "UNLIKELY", "sorrowLikelihood": "VERY_UNLIKELY", "angerLikelihood": "UNLIKELY", "überraschendLikelihood" VERY_UNLIKELY "," blurredLikelihood ":" VERY_UNLIKELY "," headwearLikelihood ":" VERY_UNLIKELY "

Ich war definitiv überrascht, weil ich den Kuss nicht erwartet hatte (ich wollte nur ein Selfie mit dem Elefanten machen). Das Bild zeigt vielleicht ein bisschen Freude in Kombination mit "Yuck", weil Küsse mit Elefantenschnauze chaotisch und ein bisschen schleimig sind.

Google Vision hat auch einige andere Dinge an dem Bild und mir bemerkt:

{"Mitte": "/ m / 0jyfg", "Beschreibung": "Brille", "Punktzahl": 0,7390568, "Aktualität": 0,7390568}, {"Mitte": "/ m / 08g_yr", "Beschreibung": " Tempel "," Punktzahl ": 0,7100323," Aktualität ": 0,7100323}, {" Mitte ":" / m / 05mqq3 "," Beschreibung ":" Schnauze "," Punktzahl ": 0,65698373," Aktualität ": 0,65698373}, { "mid": "/ m / 07j7r", "description": "tree", "score": 0.6460454, "topicality": 0.6460454}, {"mid": "/ m / 019nj4", "description": "smile "," Punktzahl ": 0,60378826," Aktualität ": 0,60378826}, {" Mitte ":" / m / 01j3sz "," Beschreibung ":" Lachen ","Punktzahl": 0,51390797, "Aktualität": 0,51390797}]…

Google hat die Elefantenschnauze erkannt! Es bemerkte auch, dass ich lächle und lache. Beachten Sie, dass die niedrigeren Werte ein geringeres Vertrauen anzeigen. Es ist jedoch gut, dass die Google Vision-API dies bemerkt hat.

… "SafeSearchAnnotation": {"Erwachsener": "SEHR_UNLIKELY", "Parodie": "MÖGLICH", "medizinisch": "SEHR_UNLIKELY", "Gewalt": "UNMÖGLICH", "rassig": "UNGLAUBLICH"}…

Google glaubt nicht, dass dies mehr als ein platonischer Kuss ist und erkennt, dass der Elefant mich nicht verletzt.

Abgesehen davon finden Sie in der Antwort Dinge wie übereinstimmende Bilder und ähnliche Bilder. Dort finden Sie auch Themenassoziationen. Ich habe zum Beispiel einmal über einen Artikel über „Xennials“ getwittert und bin jetzt damit verbunden!

Wie ist die Google Vision-API nützlich?

Unabhängig davon, ob Sie im Sicherheits- oder Einzelhandelsbereich arbeiten, kann es von grundlegender Bedeutung sein, herauszufinden, was aus einem Bild stammt. Unabhängig davon, ob Sie herausfinden möchten, welche Katzenrasse Sie haben oder wer dieser Kunde ist oder ob Google der Meinung ist, dass ein Kolumnist Einfluss auf ein Thema hat, kann die Google Vision-API helfen. Beachten Sie, dass die Bedingungen von Google nur die Verwendung dieser API in Personal Computing-Anwendungen zulassen. Unabhängig davon, ob Sie Daten in einer Suchanwendung lieben oder prüfen, ob vom Benutzer eingereichte Inhalte rassig sind oder nicht, ist Google Vision möglicherweise genau das Richtige für Sie.

Während ich die Version der API verwendet habe, die öffentliche URIs verwendet, können Sie auch binäre Binär- oder Google Cloud Storage-Dateispeicherorte mit unterschiedlichen Permutationen veröffentlichen.

Anmerkung des Autors: Dank an meinen Kollegen bei Lucidworks, Roy Kiesler , dessen Forschung zu diesem Artikel beigetragen hat.