Entrene 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 utilizar modelos de detección de objetos para reconocer y localizar 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, proporciona a AutoML Vision Edge un conjunto de imágenes con las etiquetas y límites de los objetos correspondientes. AutoML Vision Edge usa este conjunto de datos para entrenar un nuevo modelo en la nube, que puedes usar para la detección de objetos en el dispositivo.

Antes de que empieces

1. Reúna sus datos de entrenamiento

Primero, necesitas armar 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 generalmente no hay ningún beneficio en 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 ser lo más parecidos posible a los datos sobre los que se van a realizar las predicciones. Por ejemplo, si su caso de uso implica 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 del 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. Entonces, si un humano no puede asignar etiquetas mirando la imagen durante 1 o 2 segundos, es probable que el modelo tampoco pueda entrenarse 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 enumere la URL de cada imagen y, opcionalmente, las etiquetas de objeto correctas y las regiones delimitadoras de cada imagen. Esta opción es útil cuando se utilizan conjuntos de datos grandes.

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. Consulte Formatear un CSV de datos de entrenamiento .

Las imágenes deben almacenarse en un depósito que se encuentre 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 la consola de Google Cloud después de cargarlas. Esto sólo se recomienda para conjuntos de datos pequeños. Vea el siguiente paso.

2. Entrena tu modelo

A continuación, entrene un modelo usando sus imágenes:

  1. Abra la página Vision Datasets en la consola de Google Cloud. 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 donde las cargó. Consulta Reúne tus datos de entrenamiento .

  4. Una vez completada la tarea de importación, utilice 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 rápidos y más pequeños cuando la baja latencia o el tamaño de paquete pequeño son importantes, o modelos más lentos y más grandes cuando la precisión es lo más importante.
      Presupuesto de horas de nodo

      El tiempo máximo, en horas de cálculo, que se dedica a entrenar el modelo. Un mayor tiempo de entrenamiento generalmente da como resultado un modelo más preciso.

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

      Tiempos 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úe su 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 funciona mejor para 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 Umbral de confianza , puede ver cómo los diferentes umbrales afectan el rendimiento del modelo. El rendimiento del modelo se mide mediante 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 la cantidad de imágenes que se etiquetaron correctamente y la cantidad 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 nivel de recuperación, no asigna ninguna etiqueta con menos frecuencia (menos falsos negativos).

La optimización para mayor precisión o 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, entre las cuales puede elegir cualquier combinación: implementar el modelo para predicción en línea, publicar el modelo en Firebase o descargar el modelo y agruparlo. con tu aplicación.

Implementar el modelo

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

Publicar el modelo

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

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

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

  • Descargue el modelo TF Lite desde la página Prueba y uso de su conjunto de datos en la consola de Google Cloud y luego cargue el modelo en la página Modelo personalizado de Firebase console. Esta suele ser la forma más sencilla de publicar un solo modelo.
  • Publica el modelo directamente desde tu proyecto de Google Cloud en Firebase usando el SDK de administración. Puede utilizar 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 Admin:

  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 tu 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 la consola de Google Cloud.
    MODEL_ID El ID del modelo, que obtuviste 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);
    

Descargue y combine el modelo con su aplicación

Al combinar tu modelo con tu aplicación, puedes asegurarte de que las funciones de aprendizaje automático de tu aplicación sigan funcionando cuando el modelo alojado en Firebase no esté disponible.

Si publica el modelo y lo incluye 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 Prueba y uso de su conjunto de datos.

Próximos pasos

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