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

  1. 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.
  2. 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

  1. Configuració del Detector de Text:

    FirebaseVisionTextRecognizer textRecognizer = FirebaseVision.getInstance().getOnDeviceTextRecognizer();
    
  2. 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

  1. 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'
    }
    
  2. Carregar el Model:

    • Descarrega o crea un model de TensorFlow Lite (.tflite).
    • Col·loca el model a la carpeta assets del teu projecte.
  3. 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

  1. Configura un projecte Android amb Firebase.
  2. Implementa el reconeixement de text utilitzant ML Kit.
  3. Mostra el text reconegut en un TextView.

Exercici 2: Inferència amb TensorFlow Lite

  1. Descarrega un model de TensorFlow Lite per a la classificació d'imatges.
  2. Implementa la inferència del model en una aplicació Android.
  3. 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.

© Copyright 2024. Tots els drets reservats