Comment utiliser l'API Google Vision

Récemment, j'ai expliqué comment les ordinateurs peuvent voir, entendre, ressentir, sentir et goûter. L’API Google Vision est l’une des façons dont votre code peut "voir". L'API Google Vision connecte votre code aux capacités de reconnaissance d'images de Google. Vous pouvez considérer Google Image Search comme une sorte d'interface API / REST pour images.google.com, mais il fait bien plus que vous montrer des images similaires.

Google Vision peut détecter si vous êtes un chat ou un humain, ainsi que les parties de votre visage. Il essaie de détecter si vous êtes posé ou si vous faites quelque chose qui ne conviendrait pas à Google Safe Search, ou non. Il essaie même de détecter si vous êtes heureux ou triste.

Configuration de l'API Google Vision

Pour utiliser l'API Google Vision, vous devez vous inscrire à un compte Google Compute Engine. L'essai GCE est gratuit, mais vous aurez besoin d'une carte de crédit pour vous inscrire. De là, vous sélectionnez un projet (mais Mon premier projet est sélectionné si vous venez de vous inscrire). Ensuite, procurez-vous une clé API dans le menu de gauche.

Ici, j'utilise une simple clé API que je peux utiliser avec l'outil de ligne de commande Curl (si vous préférez, vous pouvez utiliser un autre outil capable d'appeler les API REST):

Enregistrez la clé qu'il génère dans un fichier texte ou un tampon quelque part (je me réfère à lui comme YOUR_KEYpour le moment) et activez l'API sur votre projet (accédez à cette URL et cliquez sur Activer l'API):

Sélectionnez votre projet sur l'écran suivant:

Vous êtes maintenant prêt à partir! Collez ce texte dans un fichier appelé google_vision.json:

{"requests": [{"image": {"source": {"imageUri": "//upload.wikimedia.org/wikipedia/commons/9/9b/Gustav_chocolate.jpg"}}, "features": [ {"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}]}]}

Cette requête JSON indique à l'API Google Vision quelle image analyser et quelles fonctionnalités de détection activer. Je viens de faire la plupart d'entre eux jusqu'à 50 résultats.

Maintenant, utilisez Curl:

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

Examen de la réponse de l'API Google Vision

* Connecté au port 443 de vision.googleapis.com (74.125.196.95) (# 0) * Connexion TLS 1.2 utilisant TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 * Certificat serveur: * .googleapis.com * Certificat serveur: Google Internet Authority G3 * Certificat serveur: GlobalSign> POST / v1 / images: annotate? key = YOUR_KEY HTTP / 1.1> Hôte: vision.googleapis.com> User-Agent: curl / 7.43.0> Accepter: * / *> Content-Type: application / json> Content-Length: 2252 > Attendez-vous à: 100-continuer> * Terminé en attente de 100-continuer} [2252 octets de données] * Nous sommes complètement téléchargés et très bien <HTTP / 1.1 200 OK <Content-Type: application / json; charset = UTF-8 <Vary: X-Origin <Vary: Referer <Date: mar, 24 avril 2018 18:26:10 GMT <Serveur: ESF <Cache-Control: privé <X-XSS-Protection: 1; mode = bloc <X-Frame-Options: SAMEORIGIN <Options de type de contenu X: 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] * Connexion # 0 à l'hôte vision.googleapis. com laissé intact

Vous devriez voir quelque chose comme ceci:

Si vous regardez dans les résultats, vous verrez ceci:

{"réponses": [{"labelAnnotations": [{"mid": "/ m / 01yrx", "description": "cat", "score": 0.99524164, "actualité": 0.99524164}, {"mid": "/ m / 035qhg", "description": "faune", "score": 0.93651986, "actualité": 0.93651986}, {"mid": "/ m / 04rky", "description": "mammifère", "score ": 0.92701304," actualité ": 0.92701304}, {" mid ":" / m / 07k6w8 "," description ":" petits à moyens chats "," score ": 0.92587274," actualité ": 0.92587274}, {" milieu ":" / m / 0307l ","description ":" chat comme mammifère "," score ": 0.9215815," actualité ": 0.9215815}, {" mid ":" / m / 09686 "," description ":" vertébré "," score ": 0.90370363," actualité ": 0.90370363}, {" mid ":" / m / 01l7qd "," description ":" moustaches "," score ": 0,86890864," actualité ": 0,86890864…description ":" moustaches "," score ": 0,86890864," actualité ": 0,86890864…description ":" moustaches "," score ": 0,86890864," actualité ": 0,86890864…

Google sait que vous lui avez fourni une image de chat. Il a même trouvé les moustaches!

Maintenant, je vais essayer un plus gros mammifère. Remplacez l'URL de la demande par ma photo de profil Twitter et réexécutez-la. Il y a une photo de moi en train de me faire baiser par un éléphant lors de mon voyage en Thaïlande en 2014.

Les résultats incluront les emplacements de mes traits du visage.

… "Landmarks": [{"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 n'est pas aussi doué pour juger les émotions que les traits du visage:

"rollAngle": 5.7688847, "panAngle": -3.3820703, "joyLikelihood": "UNLIKELY", "sorrowLikelihood": "VERY_UNLIKELY", "angerLikely": "UNLIKELY", "surpriseLikelihood": "VERY_UNLIKELY", "underExposée" VERY_UNLIKELY "," blurredLikELY ":" VERY_UNLIKELY "," headwearLikELY ":" VERY_UNLIKELY "

J'étais vraiment surpris, car je ne m'attendais pas au baiser (je visais juste un selfie avec l'éléphant). L'image peut montrer un peu de joie combiné avec "beurk" parce que les baisers à museau d'éléphant sont salissants et un peu visqueux.

Google Vision a également remarqué d'autres choses sur l'image et moi:

{"mid": "/ m / 0jyfg", "description": "lunettes", "score": 0.7390568, "actualité": 0.7390568}, {"mid": "/ m / 08g_yr", "description": " temple "," score ": 0.7100323," actualité ": 0.7100323}, {" mid ":" / m / 05mqq3 "," description ":" museau "," score ": 0.65698373," actualité ": 0.65698373}, { "mid": "/ m / 07j7r", "description": "arbre", "score": 0.6460454, "actualité": 0.6460454}, {"mid": "/ m / 019nj4", "description": "sourire "," score ": 0.60378826," actualité ": 0.60378826}, {" mid ":" / m / 01j3sz "," description ":" rire ","score": 0,51390797, "actualité": 0,51390797}]…

Google a reconnu le museau d'éléphant! Il a également remarqué que je souris et que je ris. Notez que les scores inférieurs indiquent une confiance plus faible, mais il est bon que l'API Google Vision l'ait remarqué.

… "SafeSearchAnnotation": {"adult": "VERY_UNLIKELY", "spoof": "POSSIBLE", "medical": "VERY_UNLIKELY", "violence": "UNLIKELY", "racé": "UNLIKELY"}…

Google ne pense pas que ce soit plus qu'un baiser platonique et se rend compte que je ne suis pas blessé par l'éléphant.

En dehors de cela, vous trouverez des éléments tels que des images correspondantes et des images similaires dans la réponse. Vous trouverez également des associations de sujets. Par exemple, j'ai tweeté une fois à propos d'un article «Xennials», et maintenant j'y suis associé!

Dans quelle mesure l'API Google Vision est-elle utile?

Que vous travailliez dans le secteur de la sécurité ou de la vente au détail, il peut être fondamentalement utile de savoir ce que quelque chose provient d'une image. Que vous essayiez de déterminer quelle race de chat vous avez ou qui est ce client ou si Google pense qu'un chroniqueur est influent sur un sujet, l'API Google Vision peut vous aider. Notez que les conditions de Google autorisent uniquement l'utilisation de cette API dans des applications informatiques personnelles. Que vous adoriez les données dans une application de recherche ou que vous vérifiiez si le contenu soumis par l'utilisateur est racé ou non, Google Vision peut être exactement ce dont vous avez besoin.

Bien que j'utilise la version de l'API qui utilise des URI publics, vous pouvez également publier des emplacements de fichiers binaires bruts ou Google Cloud Storage en utilisant différentes permutations.

Note de l'auteur: Merci à mon collègue de Lucidworks, Roy Kiesler , dont les recherches ont contribué à cet article.