Cara menggunakan Google Vision API

Baru-baru ini, saya membahas bagaimana komputer dapat melihat, mendengar, merasakan, mencium, dan rasa. Salah satu cara kod anda "melihat" adalah dengan Google Vision API. Google Vision API menghubungkan kod anda dengan kemampuan pengecaman gambar Google. Anda boleh menganggap Carian Imej Google sebagai sejenis antara muka API / REST ke images.google.com, tetapi ia lebih banyak daripada menunjukkan gambar yang serupa kepada anda.

Google Vision dapat mengesan sama ada anda kucing atau manusia, serta bahagian wajah anda. Ia cuba mengesan sama ada anda berpose atau melakukan sesuatu yang tidak sesuai untuk Carian Selamat Google — atau tidak. Ia juga cuba mengesan sama ada anda gembira atau sedih.

Menyiapkan Google Vision API

Untuk menggunakan Google Vision API, anda harus mendaftar untuk Akaun Google Compute Engine. GCE bebas untuk mencuba tetapi anda memerlukan kad kredit untuk mendaftar. Dari sana anda memilih projek (tetapi Projek Pertama Saya dipilih sekiranya anda baru mendaftar). Kemudian dapatkan kunci API dari menu sebelah kiri.

Di sini, saya menggunakan kunci API sederhana yang boleh saya gunakan dengan alat baris perintah Curl (jika anda mahu, anda boleh menggunakan alat lain yang dapat memanggil REST API):

Simpan kunci yang dihasilkannya ke fail teks atau penyangga di suatu tempat (saya merujuknya seperti YOUR_KEYsekarang) dan aktifkan API pada projek anda (pergi ke URL ini dan klik Aktifkan API):

Pilih projek anda dari skrin seterusnya:

Sekarang anda sudah bersedia untuk pergi! Masukkan teks ini dalam fail bernama google_vision.json:

{"request": [{"image": {"source": {"imageUri": "//upload.wikimedia.org/wikipedia/commons/9/9b/Gustav_chocolate.jpg"}}, "ciri": [ {"type": "TYPE_UNSPECIFIED", "maxResults": 50}, {"type": "LANDMARK_DETECTION", "maxResults": 50}, {"type": "FACE_DETECTION", "maxResults": 50}, {" taip ":" 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}]}]}

Permintaan JSON ini memberitahu Google Vision API gambar mana yang akan dihuraikan dan ciri pengesanannya yang mana yang hendak diaktifkan. Sebilangan besar hasil saya berjaya hingga 50.

Sekarang gunakan Curl:

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

Melihat respons Google Vision API

* Disambungkan ke port vision.googleapis.com (74.125.196.95) 443 (# 0) * Sambungan TLS 1.2 menggunakan TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 * Sijil pelayan: * .googleapis.com * Sijil pelayan: Google Internet Authority G3 * Sijil pelayan: GlobalSign> POST / v1 / images: annotate? key = YOUR_KEY HTTP / 1.1> Host: vision.googleapis.com> Ejen Pengguna: curl / 7.43.0> Terima: * / *> Jenis Kandungan: aplikasi / json> Panjang Kandungan: 2252 > Jangkakan: 100-lanjutkan> * Selesai menunggu 100-lanjutan} [2252 byte data] * Kami dimuat naik sepenuhnya dan baik-baik saja <HTTP / 1.1 200 OK <Content-Type: application / json; charset = UTF-8 <Vary: X-Origin <Vary: Referer <Tarikh: Sel, 24 Apr 2018 18:26:10 GMT <Pelayan: ESF <Cache-Control: private <X-XSS-Protection: 1; mod = blok <X-Frame-Pilihan: 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" <Accept-Ranges: none <Vary: Origin, Accept-Encoding <Transfer-Encoding: chunked <{[905 bytes data] * Sambungan # 0 untuk menjadi tuan rumah vision.googleapis. com dibiarkan utuh

Anda mesti melihat sesuatu seperti ini:

Sekiranya anda melihat hasilnya, anda akan melihat ini:

{"respons": [{"labelAnnotations": [{"mid": "/ m / 01yrx", "description": "cat", "score": 0.99524164, "topicality": 0.99524164}, {"pertengahan": "/ m / 035qhg", "deskripsi": "fauna", "skor": 0.93651986, "topikaliti": 0.93651986}, {"pertengahan": "/ m / 04rky", "keterangan": "mamalia", "skor ": 0.92701304," topicality ": 0.92701304}, {" mid ":" / m / 07k6w8 "," description ":" kucing kecil hingga sederhana "," skor ": 0.92587274," topikaliti ": 0.92587274}, {" pertengahan ":" / m / 0307l ","keterangan ":" kucing seperti mamalia "," skor ": 0.9215815," topikaliti ": 0.9215815}, {" pertengahan ":" / m / 09686 "," keterangan ":" vertebrata "," skor ": 0.90370363," topikaliti ": 0.90370363}, {" mid ":" / m / 01l7qd "," description ":" whiskers "," skor ": 0.86890864," topikaliti ": 0.86890864…keterangan ":" misai "," skor ": 0.86890864," topikaliti ": 0.86890864…keterangan ":" misai "," skor ": 0.86890864," topikaliti ": 0.86890864…

Google tahu anda telah memberikannya gambar kucing. Ia juga menemui misai!

Sekarang, saya akan mencuba mamalia yang lebih besar. Ganti URL dalam permintaan dengan gambar profil Twitter saya dan jalankan lagi. Ia mempunyai gambaran bahawa saya digosok oleh seekor gajah dalam perjalanan saya ke Thailand pada tahun 2014.

Hasilnya akan merangkumi lokasi ciri wajah saya.

… "Mercu tanda": [{"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", "posisi": {"x": 95.38249, "y": 234.60289, "z": 11.487803}},…

Google tidak begitu hebat dalam menilai emosi seperti ciri wajah:

"rollAngle:" SANGAT_UNLIKELY "," kaburLikelihood ":" SANGAT_UNLIKELY "," headwearLikelihood ":" SANGAT_UNLIKELY "

Saya pasti terkejut, kerana saya tidak mengharapkan ciuman (saya hanya bertujuan untuk berselfie dengan gajah). Gambar itu mungkin menunjukkan sedikit kegembiraan yang digabungkan dengan "yuck" kerana ciuman gajah-moncong tidak kemas dan sedikit berlendir.

Google Vision juga melihat beberapa perkara lain mengenai gambar dan saya:

{"mid": "/ m / 0jyfg", "description": "gelas", "skor": 0.7390568, "topikaliti": 0.7390568}, {"pertengahan": "/ m / 08g_yr", "keterangan": " kuil "," skor ": 0.7100323," topikaliti ": 0.7100323}, {" pertengahan ":" / m / 05mqq3 "," keterangan ":" moncong "," skor ": 0.65698373," topikaliti ": 0.65698373}, { "mid": "/ m / 07j7r", "description": "tree", "score": 0.6460454, "topicality": 0.6460454}, {"mid": "/ m / 019nj4", "deskripsi": "senyum "," skor ": 0.60378826," topikaliti ": 0.60378826}, {" pertengahan ":" / m / 01j3sz "," keterangan ":" ketawa ","skor": 0.51390797, "topikaliti": 0.51390797}]…

Google mengenali moncong gajah! Ia juga menyedari bahawa saya tersenyum dan saya ketawa. Perhatikan bahawa skor yang lebih rendah menunjukkan keyakinan yang lebih rendah, tetapi ada baiknya API Google Vision memperhatikan.

… "SafeSearchAnnotation": {"adult": "VERY_UNLIKELY", "spoof": "POSSIBLE", "medical": "SANGAT_UNLIKELY", "kekerasan": "UNLIKELY", "racy": "UNLIKELY"}…

Google tidak percaya bahawa ini lebih daripada sekadar ciuman platonik dan menyedari bahawa saya tidak dicederakan oleh gajah.

Selain daripada ini, anda akan menemui perkara seperti gambar yang sepadan dan gambar yang serupa dalam tindak balas. Anda juga akan menemui persatuan topik. Contohnya, saya pernah tweet sekali mengenai artikel "Xennials", dan sekarang saya dikaitkan dengannya!

Bagaimana API Google Vision berguna?

Sama ada anda bekerja dalam bidang keselamatan atau runcit, dapat mengetahui apa yang ada dari imej dapat sangat membantu. Sama ada anda cuba mengetahui jenis kucing yang anda miliki atau siapa pelanggan ini atau adakah Google menganggap kolumnis berpengaruh dalam topik, Google Vision API dapat membantu. Perhatikan bahawa syarat Google hanya membenarkan API ini digunakan dalam aplikasi pengkomputeran peribadi. Masih sama ada anda memuja data dalam aplikasi carian atau memeriksa sama ada kandungan yang dihantar pengguna kurang ajar atau tidak, Google Vision mungkin hanya yang anda perlukan.

Walaupun saya menggunakan versi API yang menggunakan URI awam, anda juga boleh menyiarkan lokasi fail binari mentah atau Penyimpanan Awan Google menggunakan permutasi yang berbeza.

Catatan pengarang: Terima kasih kepada rakan saya di Lucidworks, Roy Kiesler , yang penyelidikannya menyumbang kepada artikel ini.