Modelos personalizados con ML Kit

De forma predeterminada, las APIs de ML Kit usan modelos de aprendizaje automático entrenados por Google. Estos modelos están diseñados para abarcar una amplia variedad de aplicaciones. Sin embargo, algunos casos de uso requieren modelos más específicos. Por eso, algunas APIs de ML Kit ahora te permiten reemplazar los modelos predeterminados por modelos LiteRT personalizados.

Las APIs de Image Labeling y Object Detection & Tracking ofrecen compatibilidad con modelos personalizados de clasificación de imágenes. Son compatibles con una selección de modelos previamente entrenados de alta calidad en TensorFlow Hub o con tu propio modelo personalizado entrenado con TensorFlow o AutoML.

Si necesitas una solución integrada en el dispositivo para otros dominios o casos de uso, visita la página de aprendizaje automático integrado en el dispositivo para obtener orientación sobre todas las soluciones y herramientas de Google para el aprendizaje automático integrado en el dispositivo.

Beneficios de usar ML Kit con modelos personalizados

Estos son los beneficios de usar un modelo de clasificación de imágenes personalizado con ML Kit:

  • APIs de alto nivel fáciles de usar: No es necesario ocuparse de la entrada/salida del modelo de bajo nivel, controlar el preprocesamiento o posprocesamiento de imágenes, ni compilar una canalización de procesamiento.
  • No tienes que preocuparte por asignar etiquetas tú mismo, ya que ML Kit extrae las etiquetas de los metadatos del modelo de LiteRT y realiza la asignación por ti.
  • Admite modelos personalizados de una amplia variedad de fuentes, desde modelos previamente entrenados publicados en TensorFlow Hub hasta modelos nuevos entrenados con TensorFlow o AutoML.
  • Se optimizó para la integración con las APIs de la cámara de Android.

Y, específicamente para Detección y seguimiento de objetos, se incluyen las siguientes funciones:

  • Mejora la precisión de la clasificación localizando primero los objetos y ejecutando el clasificador solo en el área de la imagen relacionada.
  • Proporciona una experiencia interactiva en tiempo real brindando a los usuarios comentarios inmediatos sobre los objetos a medida que se detectan y clasifican.

Usa un modelo de clasificación de imágenes entrenado previamente

Puedes usar modelos de LiteRT previamente entrenados, siempre que cumplan con un conjunto de criterios. A través de TensorFlow Hub, ofrecemos un conjunto de modelos verificados (de Google o de otros creadores de modelos) que cumplen con estos criterios.

Usa un modelo publicado en TensorFlow Hub

TensorFlow Hub ofrece una amplia variedad de modelos de clasificación de imágenes previamente entrenados, de varios creadores de modelos, que se pueden usar con las APIs de Image Labeling y Object Detection and Tracking. Para hacerlo, sigue estos pasos:

  1. Elige un modelo de la colección de modelos compatibles con ML Kit.
  2. Descarga el archivo del modelo .tflite desde la página de detalles del modelo. Cuando sea posible, elige un formato de modelo con metadatos.
  3. Sigue nuestras guías para la API de Image Labeling o la API de Object Detection and Tracking sobre cómo agrupar el archivo del modelo con tu proyecto y usarlo en tu aplicación para Android o iOS.

Entrena tu propio modelo de clasificación de imágenes

Si ningún modelo de clasificación de imágenes previamente entrenado se ajusta a tus necesidades, existen varias formas de entrenar tu propio modelo de LiteRT, algunas de las cuales se describen y analizan con más detalle en la siguiente sección.

Opciones para entrenar tu propio modelo de clasificación de imágenes
AutoML
  • Se ofrece a través de la IA de Google Cloud
  • Crea modelos de clasificación de imágenes de vanguardia
  • Evaluación entre rendimiento y tamaño
Cómo convertir un modelo de TensorFlow a LiteRT
  • Entrena un modelo con TensorFlow y, luego, conviértelo a LiteRT

AutoML

Los modelos de clasificación de imágenes entrenados con AutoML son compatibles con los modelos personalizados de las APIs de etiquetado de imágenes y detección y seguimiento de objetos. Estas APIs también admiten la descarga de modelos alojados en Cloud Storage.

Para obtener más información sobre cómo usar un modelo entrenado con AutoML en tus apps para Android y iOS, sigue las guías de modelos personalizados para cada API, según tu caso de uso.

Modelos creados con el conversor de LiteRT

Si tienes un modelo de clasificación de imágenes de TensorFlow existente, puedes convertirlo con el conversor de LiteRT. Asegúrate de que el modelo creado cumpla con los siguientes requisitos de compatibilidad.

Para obtener más información sobre cómo usar un modelo de LiteRT en tus apps para Android y iOS, sigue nuestras guías para la API de Image Labeling o la API de Object Detection and Tracking, según tu caso de uso.

Compatibilidad del modelo de LiteRT

Puedes usar cualquier modelo de clasificación de imágenes de LiteRT previamente entrenado, siempre que cumpla con los siguientes requisitos:

Tensores

  • El modelo debe tener solo un tensor de entrada con las siguientes restricciones:
    • Los datos están en formato de píxeles RGB.
    • Los datos son de tipo UINT8 o FLOAT32. Si el tipo de tensor de entrada es FLOAT32, debe especificar NormalizationOptions adjuntando Metadata.
    • El tensor tiene 4 dimensiones : BxHxWxC, donde:
      • B es el tamaño del lote. Debe ser 1 (no se admite la inferencia en lotes más grandes).
      • W y H son el ancho y la altura de entrada.
      • La letra C es la cantidad de canales esperados y debe ser 3.
  • El modelo debe tener al menos un tensor de salida con N clases y 2 o 4 dimensiones:
    • (1xN)
    • (1x1x1xN)
  • Solo se admiten por completo los modelos de un solo encabezado. Los modelos de varios encabezados pueden generar resultados inesperados.

Metadatos

Puedes agregar metadatos al archivo de LiteRT como se explica en Cómo agregar metadatos a los modelos de LiteRT.

Para usar un modelo con un tensor de entrada FLOAT32, debes especificar NormalizationOptions en los metadatos.

También te recomendamos que adjuntes estos metadatos al tensor de salida TensorMetadata:

  • Un mapa de etiquetas que especifica el nombre de cada clase de salida, como un AssociatedFile con el tipo TENSOR_AXIS_LABELS (de lo contrario, solo se pueden devolver los índices numéricos de la clase de salida)
  • Umbral de puntuación predeterminado por debajo del cual los resultados se consideran con una confianza demasiado baja para devolverse, como un ProcessUnit con ScoreThresholdingOptions