Reconocimiento de objetos y emociones humanas con el Kit Firebase ML

Reconocimiento de objetos y emociones humanas con el Kit Firebase ML


Si siguió las E / S de Google (o al menos miró las notas clave), es posible que haya notado el anuncio de un nuevo producto como parte de la plataforma Firebase llamada ML Kit.


ML Kit proporciona una API con la que puede agregar potentes funciones de aprendizaje automático a las aplicaciones (tanto Android como iOS), ya sea que sea un desarrollador experimentado de aprendizaje automático o simplemente un principiante en este campo.


Aunque este producto no se ha convertido en el foco de atención en la conferencia (gracias, Google Duplex), ciertamente hay muchas formas útiles de usarlo en el desarrollo de Android.


¡Entonces juguemos con él y creemos una pequeña aplicación que se parezca a Google Lens (casi)!


Aquí hay algunas capturas de pantalla de la aplicación. En ellos puedes ver un intento de identificar objetos en la imagen.


Reconocimiento de auriculares 1


Reconocimiento de auriculares 2


Bastante exacto, ¿eh?
También puede usar esta API para definir las emociones humanas, como la felicidad, la tristeza, la ira, etc., que es aún más genial.


¡Deja de hablar, muéstrame el código!


Hay 5 API en el Kit ML:


  1. Reconocimiento de texto (ya hemos publicado un artículo sobre la aplicación que utiliza esta funcionalidad)
  2. Detección de rostros (tal artículo está en nuestro blog)
  3. Escaneo de código de barras
  4. Identificación de objetos en la imagen (el que vamos a usar)
  5. Reconocimiento de caracteres

En este artículo, utilizaremos la API de identificación de objetos en la imagen. Usando esta API, obtenemos una lista de objetos que fueron reconocidos en la imagen: personas, cosas, lugares, actividades, etc.


Además, hay 2 tipos de esta API. La primera es la API integrada en su dispositivo que funciona, lo cual es lógico, en el propio dispositivo. Es gratis y puede reconocer más de 400 objetos diferentes en imágenes.


El segundo es la API de la nube , que se ejecuta en Google Cloud y reconoce más de 10,000 objetos diferentes. Se paga, pero las primeras 1000 solicitudes por mes son gratuitas.


En este artículo, veremos el primer tipo de API, como es gratis (pero el principio de pago es similar a gratis).


Empecemos


  • Conecte Firebase a su proyecto y agregue la firebase-ml-vision
    Cómo conectar firebase, puedes verlo en un buen tutorial de Google. También debe agregar las dependencias apropiadas para usar esta API:

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

  • Incruste la función de cámara en la aplicación
    Vision API necesita una imagen para recibir datos, por lo tanto, cree una aplicación que le permita descargar imágenes de la galería o cree una aplicación que use una cámara para tomar una imagen y analizarla al instante.
    Si no desea utilizar la API de cámara estándar, simplemente puede usar la biblioteca conveniente y simple para esta funcionalidad.


  • Use un mapa de bits para acceder a la API de Vision
    La biblioteca mencionada anteriormente proporciona directamente el mapa de bits de la imagen, que se puede utilizar para acceder a la 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() } } 

En el fragmento de código anterior, primero creamos una FirebaseVisionImage partir del mapa de bits.


Luego creamos una instancia de FirebaseVisionLabelDetector que pasa por FirebaseVisionImage y encuentra los FirebaseVisionLabels (objetos) específicos que reconoce en la imagen provista.


Finalmente, pasamos la imagen al método detectInImage() y dejamos que el detector analice la imagen.


Podemos configurar a los oyentes para que manejen análisis exitosos y no exitosos. Allí tendremos acceso a la lista de objetos identificados en la imagen y a la excepción que haya surgido, respectivamente.


Para cada objeto reconocido, puede obtener su nombre, precisión de reconocimiento e identificación de entidad .


Como se mencionó anteriormente, esta API también se puede utilizar para definir las emociones humanas en una imagen, que se puede ver en las capturas de pantalla a continuación:


Emociones humanas


Reconocimiento de emociones 1


Reconocimiento de emociones 2


El código para la API en la nube es muy similar al código que escribimos para la API del dispositivo . Solo el tipo de detector ( FirebaseVisionCloudLabelDetector vs FirebaseVisionLabelDetector ) y el tipo de objetos identificados ( FirebaseVisionCloudLabel vs FirebaseVisionLabels ) son FirebaseVisionLabels :


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

Además de los cambios en el código, también debe configurar la facturación (pago) para su proyecto y habilitar la API de Google Vision en su Google Cloud Console.


Tenga en cuenta que la API le permite realizar solo 1000 consultas gratuitas por mes, por lo que no necesita pagar si solo quiere jugar con ella.


La aplicación que se muestra en las capturas de pantalla se puede encontrar en el repositorio de GitHub .

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


All Articles