Как да използвам API на Google Vision

Наскоро разказах как компютрите могат да виждат, чуват, усещат, миришат и вкусват. Един от начините, по който кодът ви може да „види“, е с API на Google Vision. API на Google Vision свързва вашия код с възможностите на Google за разпознаване на изображения. Можете да мислите за Google Image Search като вид API / REST интерфейс към images.google.com, но той прави много повече от това да ви показва подобни изображения.

Google Vision може да открие дали сте котка или човек, както и частите на лицето ви. Той се опитва да открие дали сте позирани или правите нещо, което не би било добре за Google Safe Search - или не. Той дори се опитва да открие дали сте щастливи или тъжни.

Настройване на API на Google Vision

За да използвате API на Google Vision, трябва да се регистрирате за акаунт в Google Compute Engine. GCE е свободен да опитате, но за регистрация ще ви е необходима кредитна карта. Оттам избирате проект (но Моят първи проект е избран, ако току-що сте се регистрирали). След това вземете API ключ от менюто отляво.

Тук използвам прост API ключ, който мога да използвам с инструмента за команден ред Curl (ако предпочитате, можете да използвате различен инструмент, способен да извиква REST API):

Запазете ключа, който той генерира, в текстов файл или буфер някъде (аз го наричам YOUR_KEYза сега) и активирайте API на вашия проект (отидете на този URL и щракнете върху Активиране на API):

Изберете своя проект от следващия екран:

Сега сте готови! Залепете този текст във файл, наречен google_vision.json:

{"заявки": [{"image": {"source": {"imageUri": "//upload.wikimedia.org/wikipedia/commons/9/9b/Gustav_chocolate.jpg"}}, "функции": [ {"type": "TYPE_UNSPECIFIED", "maxResults": 50}, {"type": "LANDMARK_DETECTION", "maxResults": 50}, {"type": "FACE_DETECTION", "maxResults": 50}, {" тип ":" 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}]}]}

Тази JSON заявка казва на API на Google Vision кое изображение да се анализира и кои от неговите функции за откриване да се активират. Току-що направих повечето от тях до 50 резултата.

Сега използвайте Curl:

curl -v -s -H "Content-Type: application / json" //vision.googleapis.com/v1/images:annotate?key=YOUR_KEY --data-binary @ google_vision.json> резултати 

Разглеждайки отговора на API на Google Vision

* Свързан с vision.googleapis.com (74.125.196.95) порт 443 (# 0) * TLS 1.2 връзка чрез TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 * Сертификат на сървър: * .googleapis.com * Сертификат на сървър: Google Internet Authority G3 * Сертификат на сървър: 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 > Очаквайте: 100-продължение> * Готово за изчакване на 100-продължаване} [2252 байта данни] * Ние сме напълно качени и добре <HTTP / 1.1 200 OK <Content-Type: application / json; charset = UTF-8 <Vary: X-Origin <Vary: Referer <Дата: Вторник, 24 април 2018 18:26:10 GMT <Сървър: ESF <Управление на кеша: частно <X-XSS-Защита: 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" <Accept-Ranges: none <Варира: Origin, Accept-Encoding <Transfer-Encoding: chunked <{[905 bytes data] * Connection # 0 to host vision.googleapis. com остана непокътнат

Трябва да видите нещо подобно:

Ако погледнете резултатите, ще видите това:

{"отговори": [{"labelAnnotations": [{"mid": "/ m / 01yrx", "description": "cat", "score": 0.99524164, "актуалност": 0.99524164}, {"mid": "/ m / 035qhg", "description": "fauna", "score": 0.93651986, "актуалност": 0.93651986}, {"mid": "/ m / 04rky", "description": "бозайник", "резултат ": 0.92701304," актуалност ": 0.92701304}, {" mid ":" / m / 07k6w8 "," description ":" малки до средни котки "," резултат ": 0.92587274," актуалност ": 0.92587274}, {" средата ":" / m / 0307l ","описание ":" котка като бозайник "," резултат ": 0.9215815," актуалност ": 0.9215815}, {" mid ":" / m / 09686 "," description ":" гръбначен "," резултат ": 0.90370363," актуалност ": 0.90370363}, {" mid ":" / m / 01l7qd "," description ":" whiskers "," score ": 0.86890864," актуалност ": 0.86890864…описание ":" мустаци "," резултат ": 0.86890864," актуалност ": 0.86890864…описание ":" мустаци "," резултат ": 0.86890864," актуалност ": 0.86890864…

Google знае, че сте му предоставили снимка на котка. Дори намери мустаците!

Сега ще опитам по-голям бозайник. Заменете URL адреса в заявката с моята снимка на профила в Twitter и го стартирайте отново. На нея има снимка, на която ме сломи слон по време на пътуването ми до Тайланд през 2014 г.

Резултатите ще включват местоположения на чертите на лицето ми.

... "ориентири": [{"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 не е толкова добър в преценката на емоциите, колкото чертите на лицето:

"rollAngle": 5.7688847, "panAngle": -3.3820703, "joyLikelihood": "НЕПОКАЗАТЕЛНО", "sadrowLikelihood": "МНОГО_НЕПРИЛОЖИМО", "angerLikelihood": "НЕПОКАЗАТЕЛНО", "изненадаLikelihood": "VERY_UNLIKE" VERY_UNLIKELY "," bluredLikelihood ":" VERY_UNLIKELY "," headwearLikelihood ":" VERY_UNLIKELY "

Определено бях изненадан, защото не очаквах целувката (просто се стремях към селфи със слона). Картината може да покаже малко радост, съчетана с "юк", защото целувките със слонска муцуна са разхвърляни и малко лигави.

Google Vision забеляза и някои други неща за снимката и за мен:

{"mid": "/ m / 0jyfg", "description": "очила", "score": 0.7390568, "актуалност": 0.7390568}, {"mid": "/ m / 08g_yr", "description": " храм "," оценка ": 0,7100323," актуалност ": 0,7100323}, {" средата ":" / m / 05mqq3 "," описание ":" муцуна "," оценка ": 0,65698373," актуалност ": 0,65698373}, { "mid": "/ m / 07j7r", "description": "tree", "score": 0.6460454, "актуальност": 0.6460454}, {"mid": "/ m / 019nj4", "description": "усмивка "," резултат ": 0.60378826," актуалност ": 0.60378826}, {" mid ":" / m / 01j3sz "," description ":" смях ","резултат": 0,51390797, "актуалност": 0,51390797}] ...

Google разпозна муцуната на слона! Също така забеляза, че се усмихвам и че се смея. Обърнете внимание, че по-ниските резултати показват по-ниска увереност, но е добре, че API на Google Vision забеляза.

... "safeSearchAnnotation": {"за възрастни": "МНОГО_НЕПОЛОЖНО", "фалшифициране": "ВЪЗМОЖНО", "медицинско": "МНОГО_НЕВЪЗМОЖНО", "насилие": "НЕВЕРОЯТНО", "раси": "НЕВЕРОЯТНО"} ...

Google не вярва, че това е повече от платонична целувка и осъзнава, че слонът не ме уврежда.

Освен това в отговора ще намерите неща като съвпадащи изображения и подобни изображения. Ще намерите и асоциации по теми. Например, веднъж туитнах за статия „Xennials“ и сега съм свързан с нея!

Как е полезен API на Google Vision?

Независимо дали работите в сферата на сигурността или на дребно, възможността да разберете какво представлява нещо от изображението може да бъде фундаментално полезна. Независимо дали се опитвате да разберете коя порода котки имате или кой е този клиент или дали Google смята, че колумнист има влияние в дадена тема, API на Google Vision може да ви помогне. Обърнете внимание, че условията на Google позволяват този API да се използва само в приложения за лични компютри. Независимо дали обожавате данни в приложение за търсене или проверявате дали изпратеното от потребителя съдържание е нестабилно или не, Google Vision може да е точно това, от което се нуждаете.

Докато използвах версията на приложния програмен интерфейс (API), която използва публични URI, можете също да публикувате необработени местоположения на двоични файлове или Google Cloud Storage, използвайки различни пермутации.

Бележка на автора: Благодаря на моя колега от Lucidworks, Рой Кислер , чиито изследвания допринесоха за тази статия.