Introducció
L'aprenentatge automàtic (Machine Learning, ML) està revolucionant la manera com les aplicacions interactuen amb els usuaris, proporcionant funcionalitats avançades com el reconeixement d'imatges, la predicció de comportaments i la personalització de continguts. En aquest tema, aprendrem com integrar models d'aprenentatge automàtic en aplicacions Android utilitzant ML Kit de Firebase i TensorFlow Lite.
Objectius
- Comprendre els conceptes bàsics de l'aprenentatge automàtic.
- Aprendre a utilitzar ML Kit de Firebase per a tasques comunes de ML.
- Integrar models personalitzats amb TensorFlow Lite en una aplicació Android.
Conceptes Bàsics de l'Aprenentatge Automàtic
Què és l'Aprenentatge Automàtic?
L'aprenentatge automàtic és una branca de la intel·ligència artificial que permet als sistemes aprendre i millorar a partir de l'experiència sense ser explícitament programats. Els models de ML es construeixen a partir de dades i s'utilitzen per fer prediccions o decisions basades en noves dades.
Tipus de Models de ML
- Supervisat: El model aprèn a partir de dades etiquetades.
- No supervisat: El model aprèn a partir de dades no etiquetades.
- Semi-supervisat: Combina dades etiquetades i no etiquetades.
- Aprenentatge per reforç: El model aprèn a partir de recompenses i penalitzacions.
Utilitzant ML Kit de Firebase
ML Kit és una biblioteca de Firebase que proporciona una sèrie d'APIs d'aprenentatge automàtic fàcils d'utilitzar per a tasques comunes com el reconeixement de text, la detecció de rostres, la traducció de llenguatge, entre altres.
Configuració de ML Kit
-
Afegir Firebase al Projecte Android:
- Crea un projecte a Firebase Console.
- Afegeix l'SDK de Firebase al teu projecte Android seguint les instruccions proporcionades per Firebase.
-
Afegir les Dependències de ML Kit:
dependencies { implementation 'com.google.firebase:firebase-ml-vision:24.0.3' implementation 'com.google.firebase:firebase-ml-natural-language:22.0.1' }
Exemple: Reconeixement de Text
-
Configuració del Detector de Text:
FirebaseVisionTextRecognizer textRecognizer = FirebaseVision.getInstance().getOnDeviceTextRecognizer();
-
Processament d'Imatges:
FirebaseVisionImage image = FirebaseVisionImage.fromBitmap(bitmap); textRecognizer.processImage(image) .addOnSuccessListener(new OnSuccessListener<FirebaseVisionText>() { @Override public void onSuccess(FirebaseVisionText firebaseVisionText) { // Processar el text reconegut String resultText = firebaseVisionText.getText(); for (FirebaseVisionText.TextBlock block : firebaseVisionText.getTextBlocks()) { String blockText = block.getText(); // Fer alguna cosa amb el text reconegut } } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Manejar l'error } });
Integrant TensorFlow Lite
TensorFlow Lite és una biblioteca de TensorFlow optimitzada per a dispositius mòbils i incrustats. Permet executar models de ML personalitzats en aplicacions Android.
Configuració de TensorFlow Lite
-
Afegir les Dependències de TensorFlow Lite:
dependencies { implementation 'org.tensorflow:tensorflow-lite:2.5.0' implementation 'org.tensorflow:tensorflow-lite-support:0.1.0' }
-
Carregar el Model:
- Descarrega o crea un model de TensorFlow Lite (.tflite).
- Col·loca el model a la carpeta
assets
del teu projecte.
-
Inferència amb TensorFlow Lite:
try { Interpreter tflite = new Interpreter(loadModelFile()); float[][] input = new float[1][INPUT_SIZE]; float[][] output = new float[1][OUTPUT_SIZE]; tflite.run(input, output); // Processar els resultats } 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); }
Exercicis Pràctics
Exercici 1: Reconeixement de Text amb ML Kit
- Configura un projecte Android amb Firebase.
- Implementa el reconeixement de text utilitzant ML Kit.
- Mostra el text reconegut en un TextView.
Exercici 2: Inferència amb TensorFlow Lite
- Descarrega un model de TensorFlow Lite per a la classificació d'imatges.
- Implementa la inferència del model en una aplicació Android.
- Mostra els resultats de la classificació en la interfície d'usuari.
Solucions
Solució a l'Exercici 1
// Configuració del detector de text FirebaseVisionTextRecognizer textRecognizer = FirebaseVision.getInstance().getOnDeviceTextRecognizer(); // Processament d'imatges FirebaseVisionImage image = FirebaseVisionImage.fromBitmap(bitmap); textRecognizer.processImage(image) .addOnSuccessListener(new OnSuccessListener<FirebaseVisionText>() { @Override public void onSuccess(FirebaseVisionText firebaseVisionText) { // Processar el text reconegut String resultText = firebaseVisionText.getText(); textView.setText(resultText); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Manejar l'error } });
Solució a l'Exercici 2
try { Interpreter tflite = new Interpreter(loadModelFile()); float[][] input = new float[1][INPUT_SIZE]; float[][] output = new float[1][OUTPUT_SIZE]; tflite.run(input, output); // Processar els resultats textView.setText(Arrays.toString(output[0])); } 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); }
Conclusió
En aquest tema, hem après els conceptes bàsics de l'aprenentatge automàtic i com integrar models de ML en aplicacions Android utilitzant ML Kit de Firebase i TensorFlow Lite. Hem vist exemples pràctics de reconeixement de text i inferència de models personalitzats. Amb aquests coneixements, estàs preparat per afegir funcionalitats avançades d'aprenentatge automàtic a les teves aplicacions Android.
Curs d'Android Studio
Mòdul 1: Introducció a Android Studio
- Introducció a Android Studio
- Configuració d'Android Studio
- Comprensió de la Interfície d'Android Studio
- Creació del teu Primer Projecte Android
Mòdul 2: Desenvolupament Bàsic d'Android
- Comprensió de l'Estructura del Projecte Android
- Introducció als Dissenys XML
- Components Bàsics de la Interfície d'Usuari
- Introducció a les Activitats
- Executar la teva Aplicació en un Emulador
Mòdul 3: Desenvolupament Intermedi d'Android
- Introducció als Intents
- Treballar amb Fragments
- Gestió de l'Entrada de l'Usuari
- Ús de RecyclerView
- Xarxes en Android
Mòdul 4: Desenvolupament Avançat d'Android
- Persistència de Dades amb SQLite
- Ús de Room per a la Gestió de Bases de Dades
- Components Avançats de la Interfície d'Usuari
- Vistes Personalitzades i Canvas
- Treballar amb Tasques en Segon Pla
Mòdul 5: Desenvolupament Professional d'Android
- Implementació de l'Arquitectura MVVM
- Injecció de Dependències amb Dagger
- Proves Unitàries i Proves de la Interfície d'Usuari
- Publicació de la teva Aplicació a Google Play
- Optimització del Rendiment