Entrena un modelo de detección de objetos con AutoML Vision Edge

Un modelo de detección de objetos es similar a un modelo de etiquetado de imágenes, pero en lugar de asignar etiquetas a imágenes completas, asigna etiquetas a regiones de imágenes. Puede usar modelos de detección de objetos para reconocer y ubicar objetos en una imagen o para rastrear los movimientos de un objeto en una serie de imágenes.

Para entrenar un modelo de detección de objetos, proporcione a AutoML Vision Edge un conjunto de imágenes con las etiquetas y los límites de objeto correspondientes. AutoML Vision Edge usa este conjunto de datos para entrenar un nuevo modelo en la nube, que puede usar para la detección de objetos en el dispositivo.

Antes de que empieces

  • Si aún no tiene un proyecto de Firebase, cree uno en la consola de Firebase .

  • Familiarícese con las pautas presentadas en la guía de ML inclusivo: AutoML .

  • Si solo desea probar AutoML Vision Edge y no tiene sus propios datos de entrenamiento, descargue un conjunto de datos de muestra como uno de los siguientes:

1. Reúne tus datos de entrenamiento

Primero, debe reunir un conjunto de datos de entrenamiento de imágenes etiquetadas. Tenga en cuenta las siguientes pautas:

  • Las imágenes deben estar en uno de los siguientes formatos: JPEG, PNG, GIF, BMP, ICO.

  • Cada imagen debe tener 30 MB o menos. Tenga en cuenta que AutoML Vision Edge reduce la escala de la mayoría de las imágenes durante el preprocesamiento, por lo que, en general, no hay ningún beneficio de precisión al proporcionar imágenes de muy alta resolución.

  • Incluya al menos 10, y preferiblemente 100 o más, ejemplos de cada etiqueta.

  • Incluya múltiples ángulos, resoluciones y fondos para cada etiqueta.

  • Los datos de entrenamiento deben estar lo más cerca posible de los datos sobre los que se van a realizar las predicciones. Por ejemplo, si su caso de uso involucra imágenes borrosas y de baja resolución (como las de una cámara de seguridad), sus datos de entrenamiento deben estar compuestos por imágenes borrosas y de baja resolución.

  • Los modelos generados por AutoML Vision Edge están optimizados para fotografías de objetos en el mundo real. Es posible que no funcionen bien para radiografías, dibujos a mano, documentos escaneados, recibos, etc.

    Además, los modelos generalmente no pueden predecir etiquetas que los humanos no pueden asignar. Por lo tanto, si un humano no puede asignar etiquetas mirando la imagen durante 1 o 2 segundos, es probable que el modelo tampoco pueda ser entrenado para hacerlo.

Cuando tengas tus imágenes de entrenamiento listas, prepáralas para importarlas a Google Cloud. Tienes dos opciones:

Opción 1: almacenamiento en la nube con índice CSV

Cargue sus imágenes de entrenamiento en Google Cloud Storage y prepare un archivo CSV que incluya la URL de cada imagen y, opcionalmente, las etiquetas de objeto y las regiones delimitadoras correctas para cada imagen. Esta opción es útil cuando se utilizan grandes conjuntos de datos.

Por ejemplo, cargue sus imágenes en Cloud Storage y prepare un archivo CSV como el siguiente:

gs://your-training-data-bucket/001.jpg,accordion,0.2,0.4,,,0.3,0.5,,
gs://your-training-data-bucket/001.jpg,tuba,0.2,0.5,,,0.4,0.8,,
gs://your-training-data-bucket/002.jpg,accordion,0.2,0.2,,,0.9,0.8,,

Los cuadros delimitadores de objetos se especifican como coordenadas relativas en la imagen. Consulta Dar formato a un CSV de datos de entrenamiento .

Las imágenes deben almacenarse en un depósito que esté en la región us-central1 y que forme parte del proyecto de Google Cloud correspondiente de su proyecto de Firebase.

Opción 2: Imágenes sin etiquetar

Etiquete sus imágenes de entrenamiento y dibuje los límites de los objetos en Google Cloud Console después de cargarlos. Esto solo se recomienda para conjuntos de datos pequeños. Ver el siguiente paso.

2. Entrena a tu modelo

Luego, entrena un modelo usando tus imágenes:

  1. Abra la página Conjuntos de datos de Vision en Google Cloud Console. Seleccione su proyecto cuando se le solicite.

  2. Haga clic en Nuevo conjunto de datos , proporcione un nombre para el conjunto de datos, seleccione el tipo de modelo que desea entrenar y haga clic en Crear conjunto de datos .

  3. En la pestaña Importar de su conjunto de datos, cargue sus imágenes de entrenamiento, un archivo zip de sus imágenes de entrenamiento o un archivo CSV que contenga las ubicaciones de Cloud Storage en las que las cargó. Consulta Reúne tus datos de entrenamiento .

  4. Una vez completada la tarea de importación, use la pestaña Imágenes para verificar los datos de entrenamiento.

  5. Si no cargó un CSV, para cada imagen, dibuje cuadros delimitadores alrededor de los objetos que desea reconocer y etiquete cada objeto.

  6. En la pestaña Entrenar , haga clic en Iniciar entrenamiento .

    1. Asigne un nombre al modelo y seleccione el tipo de modelo Edge .

    2. Configure los siguientes ajustes de entrenamiento, que rigen el rendimiento del modelo generado:

      Optimizar modelo para... La configuración del modelo a utilizar. Puede entrenar modelos más pequeños y más rápidos cuando la latencia baja o el tamaño de paquete pequeño son importantes, o modelos más grandes y más lentos cuando la precisión es lo más importante.
      Presupuesto de horas de nodo

      El tiempo máximo, en horas de proceso, para entrenar el modelo. Más tiempo de entrenamiento generalmente da como resultado un modelo más preciso.

      Tenga en cuenta que el entrenamiento se puede completar en menos tiempo del especificado si el sistema determina que el modelo está optimizado y que el entrenamiento adicional no mejoraría la precisión. Se le factura solo por las horas realmente utilizadas.

      Horarios típicos de entrenamiento
      Conjuntos muy pequeños 1 hora
      500 imágenes 2 horas
      1,000 imágenes 3 horas
      5.000 imágenes 6 horas
      10.000 imágenes 7 horas
      50.000 imágenes 11 horas
      100.000 imágenes 13 horas
      1,000,000 de imágenes 18 horas

3. Evalúa tu modelo

Cuando finalice el entrenamiento, puede hacer clic en la pestaña Evaluar para ver las métricas de rendimiento del modelo.

Un uso importante de esta página es determinar el umbral de confianza que mejor se adapte a su modelo. El umbral de confianza es la confianza mínima que debe tener el modelo para asignar una etiqueta a una imagen. Al mover el control deslizante del umbral de confianza , puede ver cómo los diferentes umbrales afectan el rendimiento del modelo. El rendimiento del modelo se mide utilizando dos métricas: precisión y recuperación .

En el contexto de la clasificación de imágenes, la precisión es la relación entre el número de imágenes que se etiquetaron correctamente y el número de imágenes que el modelo etiquetó dado el umbral seleccionado. Cuando un modelo tiene alta precisión, asigna etiquetas incorrectamente con menos frecuencia (menos falsos positivos).

La recuperación es la relación entre la cantidad de imágenes que se etiquetaron correctamente y la cantidad de imágenes que tenían contenido que el modelo debería haber podido etiquetar. Cuando un modelo tiene un alto recuerdo, no asigna ninguna etiqueta con menos frecuencia (menos falsos negativos).

Si optimiza la precisión o la recuperación dependerá de su caso de uso. Consulte la guía para principiantes de AutoML Vision y la guía de ML inclusivo: AutoML para obtener más información.

Cuando encuentre un umbral de confianza que produzca métricas con las que se sienta cómodo, anótelo; utilizará el umbral de confianza para configurar el modelo en su aplicación. (Puede utilizar esta herramienta en cualquier momento para obtener un valor de umbral adecuado).

4. Publica o descarga tu modelo

Si está satisfecho con el rendimiento del modelo y desea usarlo en una aplicación, tiene tres opciones, de las cuales puede elegir cualquier combinación: implementar el modelo para la predicción en línea, publicar el modelo en Firebase o descargar el modelo y empaquetarlo. con tu aplicación

Implementar el modelo

En la pestaña Prueba y uso de su conjunto de datos, puede implementar su modelo para la predicción en línea, que ejecuta su modelo en la nube. Esta opción está cubierta en los documentos de Cloud AutoML . Los documentos en este sitio tratan con las dos opciones restantes.

Publicar el modelo

Al publicar el modelo en Firebase, puede actualizar el modelo sin lanzar una nueva versión de la aplicación, y puede usar Remote Config y A/B Testing para entregar dinámicamente diferentes modelos a diferentes conjuntos de usuarios.

Si elige proporcionar el modelo solo alojándolo con Firebase y no incluirlo en su aplicación, puede reducir el tamaño de descarga inicial de su aplicación. Tenga en cuenta, sin embargo, que si el modelo no está incluido con su aplicación, ninguna funcionalidad relacionada con el modelo estará disponible hasta que su aplicación descargue el modelo por primera vez.

Para publicar su modelo, puede utilizar uno de estos dos métodos:

  • Descargue el modelo TF Lite de la página de prueba y uso de su conjunto de datos en Google Cloud Console y luego cargue el modelo en la página de modelo personalizado de Firebase console. Esta suele ser la forma más fácil de publicar un solo modelo.
  • Publica el modelo directamente desde tu proyecto de Google Cloud en Firebase con el SDK de administrador. Puede usar este método para publicar por lotes varios modelos o para ayudar a crear canales de publicación automatizados.

Para publicar el modelo con la API de administración de modelos del SDK de administrador:

  1. Instale e inicialice el SDK .

  2. Publicar el modelo.

    Deberá especificar el identificador de recursos del modelo, que es una cadena similar al siguiente ejemplo:

    projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
    PROJECT_NUMBER El número de proyecto del depósito de Cloud Storage que contiene el modelo. Este podría ser su proyecto de Firebase u otro proyecto de Google Cloud. Puede encontrar este valor en la página Configuración de Firebase console o en el panel de control de Google Cloud Console.
    MODEL_ID El ID del modelo, que obtuvo de la API de AutoML Cloud.

    Pitón

    # First, import and initialize the SDK.
    
    # Get a reference to the AutoML model
    source = ml.TFLiteAutoMlSource('projects/{}/locations/us-central1/models/{}'.format(
        # See above for information on these values.
        project_number,
        model_id
    ))
    
    # Create the model object
    tflite_format = ml.TFLiteFormat(model_source=source)
    model = ml.Model(
        display_name="example_model",  # This is the name you will use from your app to load the model.
        tags=["examples"],             # Optional tags for easier management.
        model_format=tflite_format)
    
    # Add the model to your Firebase project and publish it
    new_model = ml.create_model(model)
    new_model.wait_for_unlocked()
    ml.publish_model(new_model.model_id)
    

    Nodo.js

    // First, import and initialize the SDK.
    
    (async () => {
      // Get a reference to the AutoML model. See above for information on these
      // values.
      const automlModel = `projects/${projectNumber}/locations/us-central1/models/${modelId}`;
    
      // Create the model object and add the model to your Firebase project.
      const model = await ml.createModel({
        displayName: 'example_model',  // This is the name you use from your app to load the model.
        tags: ['examples'],  // Optional tags for easier management.
        tfliteModel: { automlModel: automlModel },
      });
    
      // Wait for the model to be ready.
      await model.waitForUnlocked();
    
      // Publish the model.
      await ml.publishModel(model.modelId);
    
      process.exit();
    })().catch(console.error);
    

Descarga y agrupa el modelo con tu aplicación

Al agrupar su modelo con su aplicación, puede asegurarse de que las funciones de ML de su aplicación sigan funcionando cuando el modelo alojado en Firebase no esté disponible.

Si publica el modelo y lo empaqueta con su aplicación, la aplicación utilizará la última versión disponible.

Para descargar su modelo, haga clic en TF Lite en la página de prueba y uso de su conjunto de datos.

Próximos pasos

Ahora que ha publicado o descargado el modelo, aprenda a usarlo en sus aplicaciones iOS+ y Android .