Reconnaissance d'objets et d'émotions humaines à l'aide du kit Firebase ML

Reconnaissance d'objets et d'émotions humaines à l'aide du kit Firebase ML


Si vous avez suivi Google I / O (ou du moins regardé Keynotes), vous avez peut-être remarqué l'annonce d'un nouveau produit dans le cadre de la plate-forme Firebase appelée ML Kit.


ML Kit fournit une API avec laquelle vous pouvez ajouter de puissantes fonctions d'apprentissage automatique aux applications (Android et iOS), que vous soyez un développeur expérimenté en apprentissage automatique ou simplement un débutant dans ce domaine.


Bien que ce produit n'ait pas retenu l'attention lors de la conférence (merci, Google Duplex), il existe certainement de nombreuses façons utiles de l'utiliser dans le développement Android.


Jouons donc avec lui et créons une petite application qui ressemblera (presque) à Google Lens!


Voici quelques captures d'écran de l'application. Sur eux, vous pouvez voir une tentative d'identification des objets dans l'image.


Reconnaissance des écouteurs 1


Reconnaissance des écouteurs 2


Assez précis, hein?
Vous pouvez également utiliser cette API pour définir des émotions humaines telles que le bonheur, la tristesse, la colère, etc., ce qui est encore plus cool.


Arrête de parler, montre moi le code !!!!!


Il y a 5 API dans le kit ML:


  1. Reconnaissance de texte (nous avons déjà publié un article sur l'application utilisant cette fonctionnalité)
  2. Détection des visages ( un tel article est sur notre blog)
  3. Numérisation de codes à barres
  4. Identification des objets dans l'image (celle que nous allons utiliser)
  5. Reconnaissance des caractères

Dans cet article, nous utiliserons l'API d'identification d'objet sur l'image. En utilisant cette API, nous obtenons une liste d'objets qui ont été reconnus dans l'image: personnes, choses, lieux, activités, etc.


De plus, il existe 2 types de cette API. Le premier est l' API intégrée à votre appareil qui fonctionne, ce qui est logique, sur l'appareil lui-même. Il est gratuit et peut reconnaître plus de 400 objets différents dans les images.


La seconde est l' API cloud , qui s'exécute sur Google Cloud et reconnaît plus de 10 000 objets différents. Il est payé, mais les 1000 premières demandes par mois sont gratuites.


Dans cet article, nous examinerons le premier type d'API, comme c'est gratuit (mais le principe du payant est similaire à gratuit).


Commençons.


  • Connectez Firebase à votre projet et ajoutez la firebase-ml-vision
    Comment connecter Firebase, vous pouvez le voir dans un bon tutoriel de Google. Vous devez également ajouter les dépendances appropriées pour utiliser cette API:

 implementation 'com.google.firebase:firebase-ml-vision:15.0.0' implementation 'com.google.firebase:firebase-ml-vision-image-label-model:15.0.0' 

  • Intégrer la fonction appareil photo dans l'application
    L'API Vision a besoin d'une image pour recevoir des données, alors créez une application qui vous permet de télécharger des images de la galerie ou créez une application qui utilise une caméra pour prendre une image et l'analyser instantanément.
    Si vous ne souhaitez pas utiliser l'API de caméra standard, vous pouvez simplement utiliser la bibliothèque pratique et simple pour cette fonctionnalité.


  • Utiliser un bitmap pour accéder à l'API Vision
    La bibliothèque mentionnée ci-dessus fournit directement l'image bitmap, qui peut être utilisée pour accéder à l'API.



 fab_take_photo.setOnClickListener { // cameraView is a custom View which provides camera preview cameraView.captureImage { cameraKitImage -> // Get the Bitmap from the captured shot and use it to make the API call getLabelsFromDevice(cameraKitImage.bitmap) } } private fun getLabelsFromDevice(bitmap: Bitmap) { val image : FirebaseVisionImage = FirebaseVisionImage.fromBitmap(bitmap) val detector : FirebaseVisionLabelDetector = FirebaseVision.getInstance().visionLabelDetector detector.detectInImage(image) .addOnSuccessListener { // Task completed successfully for(firebaseVision : FirebaseVisionLabel in it){ // Logging through the list of labels returned from the API and Log them Log.d(TAG,"Item Name ${firebaseVision.confidence}") Log.d(TAG,"Confidence ${firebaseVision.confidence}") } } .addOnFailureListener { // Task failed with an exception Toast.makeText(baseContext,"Sorry, something went wrong!",Toast.LENGTH_SHORT).show() } } 

Dans l'extrait de code ci-dessus, nous créons d'abord un FirebaseVisionImage partir du bitmap.


Ensuite, nous créons une instance de FirebaseVisionLabelDetector qui passe par FirebaseVisionImage et trouve les FirebaseVisionLabels (objets) spécifiques qu'il reconnaît dans l'image fournie.


Enfin, nous passons l'image à la méthode detectInImage() et laissons le détecteur analyser l'image.


Nous pouvons configurer les auditeurs pour gérer une analyse réussie et pour une échec. Là, nous aurons accès à la liste des objets identifiés dans l'image et à l'exception qui s'est produite, respectivement.


Pour chaque objet reconnu, vous pouvez obtenir son nom, sa précision de reconnaissance et son identifiant d'entité .


Comme mentionné précédemment, cette API peut également être utilisée pour définir les émotions humaines dans une image, ce qui peut être vu dans les captures d'écran ci-dessous:


Émotions humaines


Reconnaissance des émotions 1


Reconnaissance des émotions 2


Le code de l' API cloud est très similaire au code que nous avons écrit pour l'API de l'appareil . Seuls le type de détecteur ( FirebaseVisionCloudLabelDetector vs FirebaseVisionLabelDetector ) et le type d'objets identifiés ( FirebaseVisionCloudLabel vs FirebaseVisionLabels ) sont FirebaseVisionLabels :


 private fun getLabelsFromDevice(bitmap: Bitmap) { ... val detector : FirebaseVisionCloudLabelDetector = FirebaseVision.getInstance().visionCloudLabelDetector detector.detectInImage(image) .addOnSuccessListener { for(firebaseVision : FirebaseVisionCloudLabel in it){ ... } } .addOnFailureListener { ... } } 

Outre les modifications du code, vous devez également configurer la facturation (paiement) pour votre projet et activer l' API Google Vision dans votre Google Cloud Console.


Veuillez noter que l'API vous permet d'effectuer seulement 1000 requêtes gratuites par mois, vous n'avez donc pas besoin de payer si vous voulez simplement jouer avec.


L'application présentée dans les captures d'écran se trouve sur le référentiel GitHub .

Source: https://habr.com/ru/post/fr420085/


All Articles