Kako koristiti Google Vision API

Nedavno sam opisao kako računala mogu vidjeti, čuti, osjetiti, mirisati i okusiti. Jedan od načina na koji vaš kôd može "vidjeti" je pomoću Google Vision API-ja. Google Vision API povezuje vaš kôd s Googleovim mogućnostima prepoznavanja slika. O Google pretraživanju slika možete razmišljati kao o nekakvom API / REST sučelju images.google.com, ali čini mnogo više od pokazivanja sličnih slika.

Google Vision može otkriti jeste li mačka ili čovjek, kao i dijelove vašeg lica. Pokušava otkriti jeste li postavljeni ili radite nešto što za Google sigurno pretraživanje ne bi bilo u redu - ili ne. Pokušava otkriti jeste li sretni ili tužni.

Postavljanje API-ja Google Vision

Da biste koristili Google Vision API, morate se prijaviti za račun Google Compute Engine. GCE možete besplatno isprobati, ali za prijavu će vam trebati kreditna kartica. Odatle odabirete projekt (ali Moj prvi projekt odabire se ako ste se upravo prijavili). Zatim si nabavite API ključ s lijevog izbornika.

Ovdje koristim jednostavni API ključ koji mogu koristiti s alatom naredbenog retka Curl (ako želite, možete koristiti drugi alat koji može pozvati REST API-je):

Spremite ključ koji generira negdje u tekstualnu datoteku ili međuspremnik (pozivam se na njega kao YOUR_KEYza sada) i omogućite API na svom projektu (idite na ovaj URL i kliknite Omogući API):

Odaberite svoj projekt sa sljedećeg zaslona:

Sad ste spremni! Zalijepite ovaj tekst u datoteku koja se zove google_vision.json:

{"zahtjevi": [{"slika": {"izvor": {"slikaUri": "//upload.wikimedia.org/wikipedia/commons/9/9b/Gustav_chocolate.jpg"}}, "značajke": [ {"type": "TYPE_UNSPECIFIED", "maxResults": 50}, {"type": "LANDMARK_DETECTION", "maxResults": 50}, {"type": "FACE_DETECTION", "maxResults": 50}, {" type ":" LOGO_DETECTION "," maxResults ": 50}, {" type ":" LABEL_DETECTION "," maxResults ": 50}, {" type ":" 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}]}]}

Ovaj JSON zahtjev govori Google Vision API-ju koju sliku treba raščlaniti i koje značajke otkrivanja omogućiti. Upravo sam učinio većinu od njih do 50 rezultata.

Sada upotrijebite Curl:

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

Gledajući odgovor Google Vision API-ja

* Povezano s vizijom.googleapis.com (74.125.196.95) port 443 (# 0) * TLS 1.2 veza pomoću TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 * Potvrda poslužitelja: * .googleapis.com * Potvrda poslužitelja: Google Internet Authority G3 * Potvrda poslužitelja: GlobalSign> POST / v1 / images: annotate? key = YOUR_KEY HTTP / 1.1> Host: vision.googleapis.com> User-Agent: curl / 7.43.0> Accept: * / *> Content-Type: application / json> Content-Length: 2252 > Očekujte: 100-nastavak> * Gotovo, čeka se 100-nastavak} [podaci od 2252 bajta] * Potpuno smo preneseni i u redu <HTTP / 1.1 200 OK <Content-Type: application / json; charset = UTF-8 <Vary: X-Origin <Vary: Referer <Datum: Utorak, 24. travnja 2018. 18:26:10 GMT <Poslužitelj: ESF <Kontrola predmemorije: privatno <X-XSS-Zaštita: 1; mode = block <X-Frame-Options: SAMEORIGIN <X-Content-Type-Options: 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" <Rasponi prihvaćanja: nema <Vary: Izvor, Prihvatanje-kodiranje <Prijenos-kodiranje: komadano <{[905 bajtova podataka] * Veza # 0 na host vision.googleapis. com ostao netaknut

Trebali biste vidjeti nešto poput ovoga:

Ako pogledate rezultate, vidjet ćete ovo:

{"odgovori": [{"labelAnnotations": [{"mid": "/ m / 01yrx", "description": "cat", "score": 0.99524164, "aktuelnost": 0.99524164}, {"mid": "/ m / 035qhg", "description": "fauna", "score": 0.93651986, "aktuelnost": 0.93651986}, {"mid": "/ m / 04rky", "description": "sisavac", "score ": 0.92701304," aktualnost ": 0.92701304}, {" sredina ":" / m / 07k6w8 "," opis ":" male do srednje veličine mačaka "," rezultat ": 0.92587274," aktualnost ": 0.92587274}, {" sredina ":" / m / 0307l ","opis ":" mačka poput sisavca "," rezultat ": 0,9215815," aktualnost ": 0,9215815}, {" sredina ":" / m / 09686 "," opis ":" kralježnjak "," rezultat ": 0,90370363," aktualnost ": 0.90370363}, {" mid ":" / m / 01l7qd "," description ":" brkovi "," score ": 0.86890864," aktuelnost ": 0.86890864…opis ":" brkovi "," rezultat ": 0,86890864," aktualnost ": 0,86890864…opis ":" brkovi "," rezultat ": 0,86890864," aktualnost ": 0,86890864…

Google zna da ste mu dali sliku mačke. Pronašao je čak i brkove!

Sad ću probati većeg sisavca. Zamijenite URL u zahtjevu mojom slikom profila na Twitteru i pokrenite ga ponovo. Na slici je kako me slon prigladio na putovanju na Tajland 2014. godine.

Rezultati će uključivati ​​lokacije mojih crta lica.

… "Orijentiri": [{"type": "LEFT_EYE", "position": {"x": 114.420876, "y": 252.82072, "z": -0.00017215312}}, {"type": "RIGHT_EYE", "position": {"x": 193.82027, "y": 259.787, "z": -4.495486}}, {"type": "LEFT_OF_LEFT_EYEBROW", "position": {"x": 95.38249, "y": 234.60289, "z": 11.487803}},…

Google nije tako sjajan u prosuđivanju osjećaja kao u crtama lica:

"rollAngle": 5.7688847, "panAngle": -3.3820703, "joyLikelihood": "NEVEROVATNO", "sadrowLikelihood": "VRLOUNOLIKNO", "angerLikelihood": "UNLIKELY", "iznenađenjeLikelihood": "VERY_LLIKE" VRLO_UNLIKELNO "," bluredLikelihood ":" VRLO_UNLIKELNO "," headwearLikelilyhood ":" VRLO_NEKOLIKO "

Definitivno sam se iznenadio, jer nisam očekivao poljubac (samo sam ciljao na selfi sa slonom). Slika može pokazati malo radosti u kombinaciji s "fuj", jer su poljupci sa slonovskom njuškom neuredni i pomalo ljigavi.

Google Vision također je primijetio neke druge stvari u vezi sa slikom i sa mnom:

{"mid": "/ m / 0jyfg", "description": "naočale", "score": 0.7390568, "aktuelnost": 0.7390568}, {"mid": "/ m / 08g_yr", "description": " hram "," rezultat ": 0,7100323," aktualnost ": 0,7100323}, {" sredina ":" / m / 05mqq3 "," opis ":" njuška "," ocjena ": 0,65698373," aktualnost ": 0,65698373}, { "mid": "/ m / 07j7r", "description": "tree", "score": 0.6460454, "aktuelnost": 0.6460454}, {"mid": "/ m / 019nj4", "description": "smile "," score ": 0,60378826," aktuelnost ": 0,60378826}, {" mid ":" / m / 01j3sz "," description ":" smijeh ","rezultat": 0,51390797, "aktualnost": 0,51390797}] ...

Google je prepoznao slonovu njušku! Također je primijetio da se smiješim i da se smijem. Imajte na umu da niži rezultati ukazuju na nižu pouzdanost, ali dobro je što je primijetio Google Vision API.

… "SafeSearchAnnotation": {"za odrasle": "VRLO_UNLIKELNO", "lažno": "MOGUĆE", "medicinsko": "VRLO_UNOLIKO", "nasilje": "NEVJEROJATNO", "racy": "NEVJEROJATNO"} ...

Google ne vjeruje da je ovo više od platonskog poljupca i shvaća da mi slon ne nanosi štetu.

Osim toga, u odgovoru ćete pronaći stvari poput podudaranja slika i sličnih slika. Pronaći ćete i asocijacije na teme. Na primjer, jednom sam tvitnuo o članku "Xennials" i sad sam povezan s njim!

U čemu je koristan API Google Vision?

Bez obzira radite li u osiguranju ili u maloprodaji, sposobnost dokučenja što je nešto na slici može vam biti od velike pomoći. Bez obzira pokušavate li otkriti koju pasminu mačaka imate ili tko je taj kupac ili Google misli da kolumnist utječe na temu, Google Vision API može vam pomoći. Imajte na umu da Googleovi uvjeti dopuštaju upotrebu ovog API-ja samo u aplikacijama za osobno računanje. Bez obzira da li obožavate podatke u aplikaciji za pretraživanje ili provjeravate je li sadržaj koji su poslali korisnici rijetki ili ne, Google Vision može biti upravo ono što vam treba.

Iako sam koristio verziju API-ja koja koristi javne URI-je, također možete objavljivati ​​sirove binarne ili datoteke Google Cloud Storage datoteka koristeći različite permutacije.

Napomena autora: Zahvaljujem kolegi iz tvrtke Lucidworks, Royu Kiesleru , čija su istraživanja doprinijela ovom članku.