Introducció a Firebase ML Kit

Firebase ML Kit és una biblioteca de machine learning (ML) que proporciona una sèrie d'APIs fàcils d'utilitzar per integrar capacitats de ML a les aplicacions mòbils. Aquestes APIs permeten als desenvolupadors afegir funcions com el reconeixement de text, la detecció de rostres, l'etiquetatge d'imatges i molt més, sense necessitat de tenir coneixements avançats en machine learning.

Característiques clau de Firebase ML Kit:

  • APIs basades en el núvol i en el dispositiu: ML Kit ofereix APIs que funcionen tant en el núvol com en el dispositiu, permetent una major flexibilitat i rendiment.
  • Facilitat d'ús: Les APIs estan dissenyades per ser fàcils d'integrar i utilitzar, amb una configuració mínima.
  • Compatibilitat amb Android i iOS: ML Kit és compatible amb ambdues plataformes mòbils, facilitant el desenvolupament d'aplicacions multiplataforma.

Configuració de Firebase ML Kit

Pas 1: Afegir Firebase al teu projecte

Abans de començar a utilitzar ML Kit, has d'afegir Firebase al teu projecte. Si no ho has fet encara, segueix els passos del Mòdul 1: Configuració de Firebase.

Pas 2: Afegir les dependències de ML Kit

Afegeix les dependències necessàries al teu fitxer build.gradle (per a Android) o al teu fitxer Podfile (per a iOS).

Android

dependencies {
    // Altres dependències de Firebase
    implementation 'com.google.firebase:firebase-ml-vision:24.0.3'
    implementation 'com.google.firebase:firebase-ml-vision-image-label-model:20.0.2'
}

iOS

# Podfile
pod 'Firebase/MLVision'
pod 'Firebase/MLVisionLabelModel'

Pas 3: Inicialitzar Firebase

Assegura't d'inicialitzar Firebase al teu projecte.

Android

import com.google.firebase.FirebaseApp;

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        FirebaseApp.initializeApp(this);
    }
}

iOS

import Firebase

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        FirebaseApp.configure()
        return true
    }
}

Exemples Pràctics

Exemple 1: Reconeixement de Text

Android

import com.google.firebase.ml.vision.FirebaseVision;
import com.google.firebase.ml.vision.common.FirebaseVisionImage;
import com.google.firebase.ml.vision.text.FirebaseVisionText;
import com.google.firebase.ml.vision.text.FirebaseVisionTextRecognizer;

public void recognizeText(Bitmap bitmap) {
    FirebaseVisionImage image = FirebaseVisionImage.fromBitmap(bitmap);
    FirebaseVisionTextRecognizer recognizer = FirebaseVision.getInstance().getOnDeviceTextRecognizer();

    recognizer.processImage(image)
        .addOnSuccessListener(new OnSuccessListener<FirebaseVisionText>() {
            @Override
            public void onSuccess(FirebaseVisionText texts) {
                // Processar el text reconegut
                for (FirebaseVisionText.TextBlock block : texts.getTextBlocks()) {
                    String text = block.getText();
                    Log.d("MLKit", "Text reconegut: " + text);
                }
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                // Manejar errors
                Log.e("MLKit", "Error en el reconeixement de text", e);
            }
        });
}

iOS

import FirebaseMLVision

func recognizeText(image: UIImage) {
    let vision = Vision.vision()
    let textRecognizer = vision.onDeviceTextRecognizer()
    let visionImage = VisionImage(image: image)

    textRecognizer.process(visionImage) { result, error in
        guard error == nil, let result = result else {
            // Manejar errors
            print("Error en el reconeixement de text: \(error?.localizedDescription ?? "Unknown error")")
            return
        }

        // Processar el text reconegut
        for block in result.blocks {
            let text = block.text
            print("Text reconegut: \(text)")
        }
    }
}

Exemple 2: Etiquetatge d'Imatges

Android

import com.google.firebase.ml.vision.FirebaseVision;
import com.google.firebase.ml.vision.common.FirebaseVisionImage;
import com.google.firebase.ml.vision.label.FirebaseVisionImageLabel;
import com.google.firebase.ml.vision.label.FirebaseVisionImageLabeler;

public void labelImage(Bitmap bitmap) {
    FirebaseVisionImage image = FirebaseVisionImage.fromBitmap(bitmap);
    FirebaseVisionImageLabeler labeler = FirebaseVision.getInstance().getOnDeviceImageLabeler();

    labeler.processImage(image)
        .addOnSuccessListener(new OnSuccessListener<List<FirebaseVisionImageLabel>>() {
            @Override
            public void onSuccess(List<FirebaseVisionImageLabel> labels) {
                // Processar les etiquetes
                for (FirebaseVisionImageLabel label : labels) {
                    String text = label.getText();
                    float confidence = label.getConfidence();
                    Log.d("MLKit", "Etiqueta: " + text + ", Confiança: " + confidence);
                }
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                // Manejar errors
                Log.e("MLKit", "Error en l'etiquetatge d'imatges", e);
            }
        });
}

iOS

import FirebaseMLVision

func labelImage(image: UIImage) {
    let vision = Vision.vision()
    let labeler = vision.onDeviceImageLabeler()
    let visionImage = VisionImage(image: image)

    labeler.process(visionImage) { labels, error in
        guard error == nil, let labels = labels else {
            // Manejar errors
            print("Error en l'etiquetatge d'imatges: \(error?.localizedDescription ?? "Unknown error")")
            return
        }

        // Processar les etiquetes
        for label in labels {
            let text = label.text
            let confidence = label.confidence
            print("Etiqueta: \(text), Confiança: \(confidence)")
        }
    }
}

Exercicis Pràctics

Exercici 1: Reconèixer Text en una Imatge

  1. Crea una aplicació que permeti als usuaris seleccionar una imatge de la seva galeria.
  2. Utilitza Firebase ML Kit per reconèixer el text a la imatge seleccionada.
  3. Mostra el text reconegut en un TextView (Android) o UILabel (iOS).

Solució

  • Segueix els exemples de codi proporcionats anteriorment per implementar el reconeixement de text.
  • Afegeix un botó per seleccionar una imatge de la galeria i processa la imatge seleccionada.

Exercici 2: Etiquetar Imatges

  1. Crea una aplicació que permeti als usuaris fer una foto amb la càmera.
  2. Utilitza Firebase ML Kit per etiquetar la imatge capturada.
  3. Mostra les etiquetes i els seus nivells de confiança en una llista.

Solució

  • Segueix els exemples de codi proporcionats anteriorment per implementar l'etiquetatge d'imatges.
  • Afegeix un botó per capturar una imatge amb la càmera i processa la imatge capturada.

Conclusió

Firebase ML Kit facilita la integració de capacitats de machine learning a les aplicacions mòbils, oferint una sèrie d'APIs fàcils d'utilitzar per a tasques comunes com el reconeixement de text i l'etiquetatge d'imatges. Amb els exemples i exercicis proporcionats, hauríeu de ser capaços de començar a utilitzar ML Kit en les vostres pròpies aplicacions. En el següent tema, explorarem els enllaços dinàmics de Firebase.

Curs de Firebase

Mòdul 1: Introducció a Firebase

Mòdul 2: Autenticació de Firebase

Mòdul 3: Base de dades en temps real de Firebase

Mòdul 4: Cloud Firestore

Mòdul 5: Emmagatzematge de Firebase

Mòdul 6: Missatgeria en el núvol de Firebase

Mòdul 7: Analítica de Firebase

Mòdul 8: Funcions de Firebase

Mòdul 9: Monitoratge del rendiment de Firebase

Mòdul 10: Laboratori de proves de Firebase

Mòdul 11: Temes avançats de Firebase

© Copyright 2024. Tots els drets reservats