Catch up on everthing we announced at this year's Firebase Summit. Learn more

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 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 los objetos 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 usted no tiene ya un proyecto Firebase, crear uno en la consola Firebase .

  • Familiarizarse con las directrices que se presentan en la guía Incluido ML - 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úna sus datos de entrenamiento

Primero, debe 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, 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 realizarán 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 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. Entonces, si un humano no puede asignar etiquetas mirando la imagen durante 1-2 segundos, es probable que el modelo tampoco pueda ser entrenado para hacerlo.

Cuando tenga sus imágenes de entrenamiento listas, prepárelas para importarlas a Google Cloud. Tienes dos opciones:

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

Sube tus imágenes de entrenamiento a Google Cloud Storage y preparar un archivo CSV lista la URL de cada imagen, y, opcionalmente, las etiquetas de objetos correctos y regiones que limitan para cada imagen. Esta opción es útil cuando se utilizan grandes conjuntos de datos.

Por ejemplo, suba sus imágenes a 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. Ver formato a un archivo CSV de datos de entrenamiento .

Las imágenes deben ser almacenados en un cubo que está en la us-central1 región y parte del correspondiente proyecto de Google Cloud de su proyecto Firebase.

Opción 2: imágenes sin etiqueta

Etiqueta tus imágenes de entrenamiento y dibuja los límites de los objetos en Google Cloud Console después de subirlas. Esto solo se recomienda para conjuntos de datos pequeños. Vea el siguiente paso.

2. Entrena tu modelo

A continuación, entrena un modelo usando tus imágenes:

  1. Abra la visión conjuntos de datos de la página en Google Cloud Console. Seleccione su proyecto cuando se le solicite.

  2. Haga clic en Nuevo conjunto de datos, proporcionar 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 de importación de su conjunto de datos, subir sus imágenes de entrenamiento, un archivo zip de sus imágenes de entrenamiento o un archivo CSV que contiene las ubicaciones de almacenamiento de nube que los cargara a. Ver montar sus datos de entrenamiento .

  4. Después de que se complete la tarea de importación, utilice la ficha 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 ficha de tren, haga clic en Inicio del entrenamiento.

    1. Nombre del modelo y seleccione el tipo de modelo Edge.

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

      Optimizar modelo para ... La configuración del modelo que se utilizará. Puede entrenar modelos más rápidos y más pequeños cuando la latencia baja 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, para dedicar a entrenar el modelo. Más tiempo de entrenamiento generalmente resulta en un modelo más preciso.

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

      Tiempos típicos de formación
      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 imágenes 18 horas

3. Evalúe su modelo

Cuando la formación se completa, puede hacer clic en la pestaña para ver las métricas de rendimiento para el modelo de evaluar.

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, se puede ver cómo los diferentes umbrales afectan el rendimiento del modelo. El rendimiento del modelo se mide mediante dos medidas: la precisión y recordar.

En el contexto de la clasificación de imágenes, la precisión es la proporción entre el número de imágenes que fueron correctamente etiquetada con el número de imágenes del modelo de etiqueta dado el umbral seleccionado. Cuando un modelo tiene alta precisión, asigna etiquetas incorrectamente con menos frecuencia (menos falsos positivos).

Recall es la proporción entre el número de imágenes que fueron correctamente etiquetada con el número de imágenes que habían contenido el modelo debería haber sido capaz de etiquetar. Cuando un modelo tiene una alta recuperación, no asigna ninguna etiqueta con menos frecuencia (menos falsos negativos).

La optimización de la precisión o la recuperación dependerá de su caso de uso. Consulte la guía AutoML Visión para principiantes y la guía Incluido ML - AutoML para 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 apropiado).

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 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 ficha de prueba y el uso de su base de datos, puede implementar su modelo para la predicción en línea, que se extiende su modelo en la nube. Esta opción se cubre en los documentos de la nube AutoML . Los documentos de este sitio tratan las dos opciones restantes.

Publica 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 empaquetarlo 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:

  • Descargar el modelo TF Lite de la página de prueba y el uso de su base de datos en la nube consola de Google, y luego subir el modelo en el modelo personalizado página de la consola Firebase. Esta suele ser la forma más sencilla de publicar un solo modelo.
  • Publique el modelo directamente desde su proyecto de Google Cloud en Firebase con el SDK de administrador. Puede utilizar este método para publicar varios modelos por lotes o para ayudar a crear canalizaciones de publicación automatizadas.

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

  1. Instalar e inicializar el SDK .

  2. Publica el modelo.

    Deberá especificar el identificador de recurso del modelo, que es una cadena que se parece 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 Google Cloud Console.
    MODEL_ID El ID del modelo, que obtuvo de AutoML Cloud API.

    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)
    

    Node.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 empaquete el modelo con su aplicación

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

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

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

Próximos pasos

Ahora que ha publicado o descargado el modelo, aprender a utilizar el modelo en su IOS + y Android Apps.