El aprendizaje automático (Machine Learning, ML) está revolucionando la forma en que interactuamos con la tecnología. En este módulo, aprenderás cómo integrar modelos de aprendizaje automático en tus aplicaciones Android utilizando herramientas y bibliotecas como TensorFlow Lite y ML Kit de Firebase.
Contenidos
- Introducción al aprendizaje automático en Android
- Configuración del entorno
- Uso de TensorFlow Lite
- Uso de ML Kit de Firebase
- Ejemplo práctico: Clasificación de imágenes
- Ejercicios prácticos
- Introducción al aprendizaje automático en Android
El aprendizaje automático permite a las aplicaciones aprender y mejorar a partir de la experiencia sin ser programadas explícitamente para ello. En Android, puedes utilizar modelos preentrenados o entrenar tus propios modelos para tareas específicas.
Conceptos clave
- Modelo de aprendizaje automático: Un algoritmo que ha sido entrenado en un conjunto de datos para realizar una tarea específica.
- TensorFlow Lite: Una biblioteca de TensorFlow optimizada para dispositivos móviles y embebidos.
- ML Kit de Firebase: Un kit de herramientas de aprendizaje automático que facilita la implementación de modelos en aplicaciones móviles.
- Configuración del entorno
Antes de comenzar, asegúrate de tener Android Studio instalado y configurado. También necesitarás agregar las dependencias necesarias para TensorFlow Lite y ML Kit en tu proyecto.
Dependencias
Agrega las siguientes dependencias en tu archivo build.gradle
:
dependencies { implementation 'org.tensorflow:tensorflow-lite:2.5.0' implementation 'com.google.firebase:firebase-ml-vision:24.0.3' implementation 'com.google.firebase:firebase-ml-model-interpreter:22.0.4' }
- Uso de TensorFlow Lite
TensorFlow Lite es una versión ligera de TensorFlow diseñada para dispositivos móviles. Puedes usar modelos preentrenados o convertir tus propios modelos de TensorFlow para usarlos con TensorFlow Lite.
Pasos para usar TensorFlow Lite
- Obtener un modelo preentrenado: Puedes descargar modelos preentrenados desde TensorFlow Hub.
- Convertir el modelo: Si tienes un modelo de TensorFlow, conviértelo a TensorFlow Lite usando el convertidor de TensorFlow Lite.
- Integrar el modelo en tu aplicación: Coloca el archivo
.tflite
en el directorioassets
de tu proyecto y carga el modelo en tu aplicación.
Ejemplo de código
import org.tensorflow.lite.Interpreter; public class MainActivity extends AppCompatActivity { private Interpreter tflite; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { tflite = new Interpreter(loadModelFile()); } catch (Exception e) { e.printStackTrace(); } } private MappedByteBuffer loadModelFile() throws IOException { AssetFileDescriptor fileDescriptor = this.getAssets().openFd("model.tflite"); FileInputStream inputStream = new FileInputStream(fileDescriptor.getFileDescriptor()); FileChannel fileChannel = inputStream.getChannel(); long startOffset = fileDescriptor.getStartOffset(); long declaredLength = fileDescriptor.getDeclaredLength(); return fileChannel.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength); } }
- Uso de ML Kit de Firebase
ML Kit de Firebase proporciona una serie de APIs de aprendizaje automático listas para usar, como la detección de texto, la identificación de rostros y la clasificación de imágenes.
Configuración de Firebase
- Agregar Firebase a tu proyecto: Sigue las instrucciones en la documentación de Firebase para agregar Firebase a tu proyecto.
- Habilitar ML Kit: En la consola de Firebase, habilita los servicios de ML Kit que deseas utilizar.
Ejemplo de código
import com.google.firebase.ml.vision.FirebaseVision; import com.google.firebase.ml.vision.common.FirebaseVisionImage; import com.google.firebase.ml.vision.label.FirebaseVisionImageLabeler; import com.google.firebase.ml.vision.label.FirebaseVisionImageLabeling; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FirebaseVisionImage image = FirebaseVisionImage.fromBitmap(bitmap); FirebaseVisionImageLabeler labeler = FirebaseVision.getInstance().getOnDeviceImageLabeler(); labeler.processImage(image) .addOnSuccessListener(labels -> { for (FirebaseVisionImageLabel label : labels) { String text = label.getText(); float confidence = label.getConfidence(); Log.d("MLKit", "Label: " + text + ", Confidence: " + confidence); } }) .addOnFailureListener(e -> { e.printStackTrace(); }); } }
- Ejemplo práctico: Clasificación de imágenes
Vamos a crear una aplicación que clasifique imágenes utilizando TensorFlow Lite. La aplicación tomará una foto y clasificará el contenido de la imagen.
Pasos
- Configurar el proyecto: Crea un nuevo proyecto en Android Studio y agrega las dependencias necesarias.
- Obtener un modelo preentrenado: Descarga un modelo de clasificación de imágenes desde TensorFlow Hub.
- Integrar el modelo en la aplicación: Coloca el archivo
.tflite
en el directorioassets
y carga el modelo en tu aplicación. - Capturar una imagen: Usa la cámara del dispositivo para capturar una imagen.
- Clasificar la imagen: Usa TensorFlow Lite para clasificar la imagen y mostrar los resultados.
Código de ejemplo
import android.content.Intent; import android.graphics.Bitmap; import android.provider.MediaStore; import android.widget.ImageView; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private static final int REQUEST_IMAGE_CAPTURE = 1; private Interpreter tflite; private ImageView imageView; private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = findViewById(R.id.imageView); textView = findViewById(R.id.textView); try { tflite = new Interpreter(loadModelFile()); } catch (Exception e) { e.printStackTrace(); } findViewById(R.id.button).setOnClickListener(v -> { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (takePictureIntent.resolveActivity(getPackageManager()) != null) { startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { Bundle extras = data.getExtras(); Bitmap imageBitmap = (Bitmap) extras.get("data"); imageView.setImageBitmap(imageBitmap); classifyImage(imageBitmap); } } private void classifyImage(Bitmap bitmap) { // Preprocesar la imagen y ejecutar el modelo // Mostrar los resultados en textView } private MappedByteBuffer loadModelFile() throws IOException { AssetFileDescriptor fileDescriptor = this.getAssets().openFd("model.tflite"); FileInputStream inputStream = new FileInputStream(fileDescriptor.getFileDescriptor()); FileChannel fileChannel = inputStream.getChannel(); long startOffset = fileDescriptor.getStartOffset(); long declaredLength = fileDescriptor.getDeclaredLength(); return fileChannel.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength); } }
- Ejercicios prácticos
Ejercicio 1: Clasificación de imágenes con TensorFlow Lite
- Objetivo: Crear una aplicación que clasifique imágenes utilizando un modelo preentrenado de TensorFlow Lite.
- Instrucciones:
- Configura un nuevo proyecto en Android Studio.
- Descarga un modelo de clasificación de imágenes desde TensorFlow Hub.
- Integra el modelo en tu aplicación.
- Captura una imagen usando la cámara del dispositivo.
- Clasifica la imagen y muestra los resultados.
Ejercicio 2: Detección de texto con ML Kit
- Objetivo: Crear una aplicación que detecte texto en imágenes utilizando ML Kit de Firebase.
- Instrucciones:
- Configura un nuevo proyecto en Android Studio y agrega Firebase.
- Habilita la API de detección de texto en la consola de Firebase.
- Captura una imagen usando la cámara del dispositivo.
- Usa ML Kit para detectar texto en la imagen y muestra los resultados.
Conclusión
En este módulo, has aprendido cómo integrar modelos de aprendizaje automático en tus aplicaciones Android utilizando TensorFlow Lite y ML Kit de Firebase. Has visto ejemplos prácticos de clasificación de imágenes y detección de texto, y has realizado ejercicios para reforzar los conceptos aprendidos. Con estas habilidades, puedes crear aplicaciones más inteligentes y ofrecer experiencias más ricas a tus usuarios.
Curso de Android Studio
Módulo 1: Introducción a Android Studio
- Introducción a Android Studio
- Configuración de Android Studio
- Entendiendo la interfaz de Android Studio
- Creando tu primer proyecto Android
Módulo 2: Desarrollo básico de Android
- Entendiendo la estructura del proyecto Android
- Introducción a los diseños XML
- Componentes básicos de la interfaz de usuario
- Introducción a las actividades
- Ejecutando tu aplicación en un emulador
Módulo 3: Desarrollo intermedio de Android
- Introducción a los Intents
- Trabajando con Fragmentos
- Manejo de la entrada del usuario
- Usando RecyclerView
- Redes en Android
Módulo 4: Desarrollo avanzado de Android
- Persistencia de datos con SQLite
- Usando Room para la gestión de bases de datos
- Componentes avanzados de la interfaz de usuario
- Vistas personalizadas y Canvas
- Trabajando con tareas en segundo plano
Módulo 5: Desarrollo profesional de Android
- Implementando la arquitectura MVVM
- Inyección de dependencias con Dagger
- Pruebas unitarias y pruebas de interfaz de usuario
- Publicando tu aplicación en Google Play
- Optimización del rendimiento