Comment utiliser les services Google Cloud Machine Learning pour Android 1

Comment utiliser les services Google Cloud Machine Learning pour Android

Les nouvelles de nos jours regorgent de mots à la mode tels que l’automatisation, l’intelligence artificielle et l’apprentissage automatique. C’est probablement pourquoi de plus en plus d’utilisateurs de smartphones commencent à rechercher des applications plus intelligentes. En tant que développeur d’applications Android régulier, cependant, vous n’avez probablement pas les ressources nécessaires pour créer de telles applications à partir de zéro.

Heureusement, Google a récemment lancé un Cloud Machine Learning plate-forme, qui offre des réseaux de neurones qui ont été pré-formés pour effectuer une variété de tâches. La plupart de ses modèles sont non seulement très précis, mais s’améliorent constamment. Et devine quoi? Vous pouvez les utiliser en effectuant simplement quelques appels d’API REST!

Dans ce didacticiel, je vais vous présenter la plateforme Cloud Machine Learning et vous montrer comment l’utiliser pour créer une application Android intelligente capable de reconnaître des objets du monde réel et de les nommer dans plusieurs langues.

Conditions préalables

Pour tirer le meilleur parti de ce tutoriel, tout ce dont vous avez besoin est:

1. Acquérir une clé API

Pour pouvoir utiliser les services d’apprentissage automatique de Google dans votre application Android, vous avez besoin d’une clé API. Vous pouvez en obtenir un en créant un nouveau projet dans Google Cloud Platform console.

Commencez par vous connecter à la console et appuyez sur le Créer un nouveau projet bouton. Dans la boîte de dialogue qui apparaît, donnez un nom significatif au projet.

Créer un nouveau projet

Une fois le projet créé, accédez à Gestionnaire d’API> Tableau de bord et appuyez sur le Activer l’API bouton.

Dans l’écran suivant, sous le Google Cloud Machine Learning en-tête, vous pourrez voir toutes les différentes API d’apprentissage automatique disponibles. Dans ce didacticiel, nous n’utiliserons que le Vision et Traduction Apis.

Bibliothèque d'apprentissage automatique

Pour activer l’API Vision, cliquez sur son lien et appuyez sur le bouton Activer bouton.

Activer l'API Vision

De même, pour activer l’API Translation, cliquez sur son lien et appuyez sur le bouton Activer bouton.

Vous n’aurez besoin que d’une seule clé pour utiliser les deux API. Pour l’obtenir, rendez-vous au Identifiants onglet, appuyez sur Créer des identifiants et sélectionnez Clé API.

Sélectionnez la clé API

Vous devriez maintenant voir une fenêtre contextuelle contenant votre clé API secrète.

2. Créer un nouveau projet Android

Lancez Android Studio et créez un nouveau projet avec une activité vide. Je vous suggère de choisir au moins le niveau d’API 19 pour le SDK minimum pris en charge.

Bien que ce ne soit pas obligatoire, il est toujours judicieux d’utiliser une bibliothèque réseau robuste pour communiquer avec la plate-forme Google Cloud Machine Learning. Dans ce didacticiel, nous utiliserons une de ces bibliothèques appelée Carburant. Ajoutez-le en tant que compile dépendance dans le app modules build.gradle fichier:

presse Synchroniser maintenant pour mettre à jour votre projet.

Ensuite, notre application aura besoin du INTERNET l’autorisation de communiquer avec les serveurs de Google. Par conséquent, ajoutez la ligne suivante dans le fichier manifeste du projet:

Enfin, ajoutez votre clé API au values ​​/ strings.xml fichier:

3. Utilisation de l’API Vision

L’API Vision vous aide à créer des applications qui peuvent voir et donner un sens à l’environnement de l’utilisateur. La détection des visages, la détection des émotions, la reconnaissance optique des caractères et l’annotation d’images font partie de ses nombreuses fonctionnalités. Pour l’instant, nous allons nous concentrer uniquement sur la puissante fonction d’annotation d’image, également appelée détection d’étiquettes, qui, à mon avis, est très utile.

Comme vous pouvez vous y attendre, l’API attend une image comme l’une de ses entrées. Par conséquent, créons maintenant un écran où l’utilisateur peut prendre des photos à l’aide de l’appareil photo de l’appareil.

Étape 1: créer une mise en page

La disposition de notre écran doit avoir un Button widget sur lequel l’utilisateur peut appuyer pour prendre une photo, un ImageView widget pour afficher l’image, et un TextView widget pour afficher les étiquettes, ou annotations, générées par l’API. En conséquence, ajoutez le code suivant au fichier XML de mise en page de votre activité:

Notez que nous avons associé un onClick gestionnaire avec le bouton. Nous le définirons à l’étape suivante.

Étape 2: créer une intention

En créant une nouvelle intention avec le ACTION_IMAGE_CAPTURE action et en la passant au startActivityForResult() méthode, vous pouvez demander à l’application appareil photo par défaut de l’appareil de l’utilisateur de prendre des photos et de les transmettre à votre application. Par conséquent, ajoutez le code suivant à votre Activity classe:

Pour recevoir les images capturées par l’application de caméra par défaut, vous devez remplacer le onActivityResult() méthode de votre Activity classe. À l’intérieur de la méthode, vous aurez accès à un Bundle objet contenant toutes les données d’image. Vous pouvez rendre les données d’image en les convertissant simplement en un Bitmap et en le passant au ImageView widget.

Si vous exécutez l’application maintenant et prenez une photo, vous verrez que la taille de l’image est assez petite. C’est très bien, cependant: l’API Cloud Vision est très précise, même avec des miniatures d’image.

Étape 3: codez l’image

L’API Vision ne peut pas utiliser Bitmap objets directement. Au lieu de cela, il attend une chaîne codée en Base64 de données d’image compressées.

Pour compresser les données d’image, vous pouvez utiliser le compress() méthode de la Bitmap classe. En tant qu’arguments, la méthode attend le format de compression à utiliser, la qualité de sortie souhaitée et un ByteArrayOutputStream objet. Le code suivant compresse le bitmap à l’aide du format JPEG et s’assure également que la qualité de l’image résultante est suffisamment élevée:

Vous pouvez maintenant générer la chaîne Base64 en utilisant le encodeToString() méthode de la Base64 classe.

Étape 4: Traitez l’image

Après tout ce dur travail, vous disposez de tout ce dont vous avez besoin pour interagir avec l’API Vision. Commencez par créer une chaîne contenant à la fois l’URL de l’API et votre clé API:

Pour envoyer des données à l’API, vous devez créer une requête HTTP POST. Le corps de la demande doit être un document JSON contenant les données d’image encodées en Base64. Pour la détection d’étiquettes, le document doit également avoir un features tableau contenant la valeur LABEL_DETECTION. Voici le format du document JSON:

Bien qu’il soit possible de coder manuellement le document JSON, sa création par programme est moins sujette aux erreurs. Le code suivant vous montre comment le faire en utilisant le JSONObject et JSONArray Des classes:

À ce stade, nous pouvons utiliser le post() méthode de la Fuel classe pour effectuer la requête HTTP POST. Comme seul argument, la méthode attend l’URL de l’API. Vous devez également inclure le content-length et content-type en-têtes dans la requête. Pour ce faire, utilisez le header() méthode. De même, pour ajouter le document JSON au corps de la requête POST, utilisez le post() méthode.

Enfin, en appelant le responseString() méthode et en passant une nouvelle instance de Handler classe, vous pouvez obtenir de manière asynchrone la réponse de la requête sous forme de chaîne. En conséquence, ajoutez le code suivant:

Lorsque vous utilisez la fonction de détection d’étiquettes, l’API Vision renvoie un document JSON contenant des étiquettes. En plus de chaque étiquette, vous obtenez également un score précisant la précision de l’étiquette. Le document ressemble à ceci:

Pour l’instant, parcourons en boucle tous les objets du labelAnnotations tableau et ajoutez la valeur de chaque description clé de la TextView widget de notre mise en page. Voici comment vous pouvez faire cela dans le success() méthode de la Handler classe:

Vous pouvez maintenant exécuter l’application, prendre une photo de n’importe quel objet à proximité et voir les étiquettes que l’API Vision génère pour lui.

Étiquettes générées pour un ordinateur portable

4. Utilisation de l’API Translation

L’API Cloud Translation, comme son nom l’indique, peut traduire du texte vers et depuis plus de 100 langues. En l’utilisant efficacement, vous pouvez créer des applications intelligentes capables de communiquer avec vos utilisateurs dans leur propre langue.

À l’étape précédente, vous avez vu que les étiquettes générées par notre application sont en anglais. Ajoutons-y maintenant un bouton pour traduire ces étiquettes en allemand.

Étape 1: mettre à jour la mise en page

Ajouter un Button widget vers la fin de la mise en page de votre activité en utilisant le code suivant:

Notez que ce bouton a également un onClick gestionnaire d’événements qui doit être défini dans votre Activity classe.

Étape 2: Traduire les étiquettes

L’utilisation de l’API Translation est beaucoup plus simple que celle de l’API Vision, principalement parce que vous n’avez pas besoin de créer un document JSON pour définir votre demande. Au lieu de cela, vous pouvez simplement lui passer des paramètres dans une chaîne de requête.

Créer le translateToGerman() et, à l’intérieur, créez une chaîne contenant l’URL de l’API de traduction.

Pour ajouter des champs à la chaîne de requête de l’URL ci-dessus, nous pouvons utiliser un List de Pair objets. Les champs suivants sont importants:

  • key, en spécifiant votre clé API secrète
  • source, en spécifiant la langue à partir de laquelle vous souhaitez traduire
  • target, en spécifiant la langue dans laquelle vous souhaitez traduire
  • q, en spécifiant le texte que vous souhaitez traduire

Le code suivant vous montre comment configurer l’API pour traduire de l’anglais vers l’allemand:

Parce que la chaîne de requête peut contenir plusieurs q champs, nous en ajouterons un pour chaque étiquette présente dans notre mise en page TextView widget. Voici comment:

Enfin, vous pouvez appeler le get() méthode de la Fuel classe pour envoyer une requête HTTP GET à l’API Translation. Cette fois aussi, vous pouvez utiliser le responseString() pour obtenir la réponse de manière asynchrone sous forme de chaîne.

La réponse de l’API Translation est un document JSON contenant un tableau de traductions. Il a le format suivant:

Pour l’instant, à l’intérieur du success() méthode de la Handler classe, parcourons simplement le translations tableau du document JSON ci-dessus et mettez à jour le contenu du TextView widget utilisant les valeurs associées au translatedText clés.

Si vous exécutez l’application maintenant, générez des étiquettes pour une image et appuyez sur le deuxième bouton, vous devriez pouvoir voir les étiquettes en allemand.

Étiquettes en allemand

Conclusion

Dans ce didacticiel, vous avez appris à utiliser les API Cloud Vision et Cloud Translation, qui font partie de la plateforme Google Cloud Machine Learning, dans une application Android. Il existe de nombreuses autres API de ce type proposées par la plate-forme. Vous pouvez en savoir plus à leur sujet en vous référant au documentation officielle.

Pendant que vous êtes ici, consultez certains de nos autres didacticiels sur la façon d’utiliser l’apprentissage automatique et les services cloud dans vos applications Android!

Soutenez notre effort ❤️

Si vous avez apprécié cet article, pensez à laisser un pourboire pour nous aider à continuer à publier du contenu de qualité.

Paiement sécurisé sur PayPal
Moyens I/O Staff est une équipe de rédacteurs spécialisés, passionnés par la technologie, l’innovation et les usages numériques. Forts d’une expertise pointue en IA, applications mobiles, gaming et tendances digitales, nous produisons un contenu rigoureux, vérifié et utile. Notre mission : vous offrir une information fiable et claire pour mieux naviguer dans le monde numérique en constante évolution. Découvrez les avis de nos lecteurs sur Trustpilot.