Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Integrar clasificadores de imágenes

La clasificación de imágenes es un uso común del aprendizaje automático para identificar lo que representa una imagen. Por ejemplo, es posible que deseemos saber qué tipo de animal aparece en una imagen determinada. La tarea de predecir lo que representa una imagen se llama clasificación de imágenes . Un clasificador de imágenes está capacitado para reconocer varias clases de imágenes. Por ejemplo, un modelo podría estar entrenado para reconocer fotografías que representan tres tipos diferentes de animales: conejos, hámsteres y perros. Consulte la introducción de la clasificación de imágenes para obtener más información sobre los clasificadores de imágenes.

Utilice la API ImageClassifier biblioteca de ImageClassifier para implementar sus clasificadores de imágenes personalizados o los que ya ha sido entrenados en sus aplicaciones modelo.

Funciones clave de la API ImageClassifier

  • Procesamiento de imágenes de entrada, incluida la rotación, el cambio de tamaño y la conversión del espacio de color.

  • Región de interés de la imagen de entrada.

  • Etiquetar la configuración regional del mapa.

  • Umbral de puntuación para filtrar los resultados.

  • Resultados de la clasificación Top-k.

  • Etiquetar lista de permitidos y denylist.

Modelos de clasificador de imágenes compatibles

Se garantiza que los siguientes modelos son compatibles con la API ImageClassifier .

Ejecutar inferencia en Java

Consulte la aplicación de referencia de clasificación de imágenes para ver un ejemplo de cómo usar ImageClassifier en una aplicación de Android.

Paso 1: importar la dependencia de Gradle y otras configuraciones

Copie el archivo de modelo .tflite en el directorio de activos del módulo de Android donde se ejecutará el modelo. Especifica que el archivo no debe comprimirse y agrega la biblioteca TensorFlow Lite al archivo build.gradle del módulo:

android {
    // Other settings

    // Specify tflite file should not be compressed for the app apk
    aaptOptions {
        noCompress "tflite"
    }

}

dependencies {
    // Other dependencies

    // Import the Task Vision Library dependency
    implementation 'org.tensorflow:tensorflow-lite-task-vision:0.0.0-nightly'

}

Paso 2: usar el modelo

// Initialization
ImageClassifierOptions options = ImageClassifierOptions.builder().setMaxResults(1).build();
ImageClassifier imageClassifier = ImageClassifier.createFromFileAndOptions(context, modelFile, options);

// Run inference
List<Classifications> results = imageClassifier.classify(image);

Consulte el código fuente y javadoc para obtener más opciones para configurar ImageClassifier .

Ejecutar inferencia en C ++

// Initialization
ImageClassifierOptions options;
options.mutable_model_file_with_metadata()->set_file_name(model_file);
std::unique_ptr<ImageClassifier> image_classifier = ImageClassifier::CreateFromOptions(options).value();

// Run inference
const ClassificationResult result = image_classifier->Classify(*frame_buffer).value();

Consulte el código fuente para obtener más opciones para configurar ImageClassifier .

Resultados de ejemplo

A continuación se muestra un ejemplo de los resultados de clasificación de un clasificador de aves .

gorrión

Results:
  Rank #0:
   index       : 671
   score       : 0.91406
   class name  : /m/01bwb9
   display name: Passer domesticus
  Rank #1:
   index       : 670
   score       : 0.00391
   class name  : /m/01bwbt
   display name: Passer montanus
  Rank #2:
   index       : 495
   score       : 0.00391
   class name  : /m/0bwm6m
   display name: Passer italiae

Pruebe la sencilla herramienta de demostración CLI para ImageClassifier con su propio modelo y datos de prueba.

Requisitos de compatibilidad del modelo

La API ImageClassifier espera un modelo TFLite con metadatos del modelo TFLite obligatorios.

Los modelos de clasificadores de imágenes compatibles deben cumplir los siguientes requisitos:

  • Tensor de imagen de entrada (kTfLiteUInt8 / kTfLiteFloat32)

    • entrada de imagen de tamaño [batch x height x width x channels] .
    • La inferencia por lotes no es compatible (el batch debe ser 1).
    • solo se admiten entradas RGB (los channels deben ser 3).
    • si el tipo es kTfLiteFloat32, se requiere que NormalizationOptions se adjunte a los metadatos para la normalización de entrada.
  • Tensor de puntuación de salida (kTfLiteUInt8 / kTfLiteFloat32)

    • con N clases y 2 o 4 dimensiones, es decir, [1 x N] o [1 x 1 x 1 x N]

    • mapa (s) de etiqueta opcional (pero recomendado) como AssociatedFile-s con el tipo TENSOR_AXIS_LABELS, que contiene una etiqueta por línea. El primer AssociatedFile (si lo hay) se usa para completar el campo de label (llamado class_name en C ++) de los resultados. El display_name campo se rellena desde el AssociatedFile (si lo hay) cuya configuración regional coincide con el display_names_locale campo de los ImageClassifierOptions utilizados durante la creación ( "en" por defecto, es decir, Inglés). Si ninguno de estos está disponible, solo se completará el campo de index de los resultados.