Integración de Azure Storage con las notificaciones y la copia de seguridad

Puede integrar su proyecto de visión personalizada con una cola de almacenamiento blob de Azure para recibir notificaciones push de la actividad de formación/exportación del proyecto. Esta característica resulta útil para evitar el sondeo continuo del servicio en busca de resultados cuando se ejecutan operaciones largas. En su lugar, puede integrar las notificaciones de la cola de almacenamiento en el flujo de trabajo.

También puede usar Azure Storage para almacenar copias de seguridad de los modelos publicados.

En esta guía se muestra cómo usar las API de REST con cURL. También puede usar un servicio de solicitud HTTP, como el cliente REST para Visual Studio Code, para realizar las solicitudes.

Nota:

Las notificaciones de inserción dependen del parámetro opcional notificationQueueUri de la API CreateProject y las copias de seguridad del modelo requieren que también se use el parámetro opcional exportModelContainerUri. En esta guía se utilizarán ambos para el conjunto completo de características.

Requisitos previos

Configuración de la integración de Azure Storage

Vaya al recurso de entrenamiento de Custom Vision en Azure Portal, seleccione la página Identidad y habilite la identidad administrada asignada por el sistema.

A continuación, vaya al recurso de almacenamiento en Azure Portal. Vaya a la página Control de acceso (IAM) y seleccione Agregar asignación de roles (versión preliminar) . Después, agregue una asignación de roles para cualquiera de las características de integración o las dos:

  • Si tiene previsto usar la característica de copia de seguridad del modelo, seleccione el rol Colaborador de datos de Storage Blob y agregue el recurso de entrenamiento de Custom Vision como miembro. Seleccione Revisar y asignar para completar la operación.
  • Si tiene previsto usar la característica de cola de notificaciones, seleccione el rol Colaborador de datos de la cola de Storage Blob y agregue el recurso de entrenamiento de Custom Vision como miembro. Seleccione Revisar y asignar para completar la operación.

Para obtener ayuda con la asignación de roles, vea Asignación de roles de Azure mediante Azure Portal.

Obtener direcciones URL de integración

A continuación, obtendrá las direcciones URL que permiten que el recurso de Custom Vision tenga acceso a estos puntos de conexión.

Para la dirección URL de integración de la cola de notificaciones, vaya a la página Colas de la cuenta de almacenamiento, agregue una nueva cola y guarde su dirección URL en una ubicación temporal.

Azure storage queue page

Para la dirección URL de integración de copia de seguridad del modelo, vaya a la página Contenedores de la cuenta de almacenamiento y cree un contenedor. A continuación, selecciónelo y vaya a la página Propiedades. Copie la dirección URL en una ubicación temporal.

Azure storage container properties page

Integrar un proyecto de Custom Vision

Ahora que tiene las direcciones URL de integración, puede crear un proyecto de Custom Vision que integre las características de Azure Storage. También puede actualizar un proyecto existente para agregar las características.

Cuando llame a la API CreateProject, agregue los parámetros opcionales exportModelContainerUri y notificationQueueUri. Asigne los valores de dirección URL que obtuvo en la sección anterior.

curl -v -X POST "{endpoint}/customvision/v3.3/Training/projects?exportModelContainerUri={inputUri}&notificationQueueUri={inputUri}&name={inputName}"
-H "Training-key: {subscription key}"

Si recibe una respuesta 200/OK, significa que las direcciones URL se han configurado correctamente. También debería ver los valores de la dirección URL en la respuesta JSON:

{
  "id": "00000000-0000-0000-0000-000000000000",
  "name": "string",
  "description": "string",
  "settings": {
    "domainId": "00000000-0000-0000-0000-000000000000",
    "classificationType": "Multiclass",
    "targetExportPlatforms": [
      "CoreML"
    ],
    "useNegativeSet": true,
    "detectionParameters": "string",
    "imageProcessingSettings": {
      "augmentationMethods": {}
},
"exportModelContainerUri": {url}
"notificationQueueUri": {url}
  },
  "created": "string",
  "lastModified": "string",
  "thumbnailUri": "string",
  "drModeEnabled": true,
  "status": "Succeeded"
}

Comprobación de la conexión

La llamada de API de la sección anterior debe haber desencadenado ya nueva información en su cuenta de Azure Storage.

En el contenedor designado, debe haber un blob de prueba dentro de una carpeta CustomVision-TestPermission. Este blob solo existirá temporalmente.

En la cola de notificaciones, debería ver una notificación de prueba en el siguiente formato:

{
"version": "1.0" ,
"type": "ConnectionTest",
"Content":
    {
    "projectId": "00000000-0000-0000-0000-000000000000"
    }
}

Obtención de notificaciones de eventos

Cuando esté listo, llame a la API TrainProject en el proyecto para realizar una operación de entrenamiento normal.

En la cola de notificaciones de Storage, recibirá una notificación una vez que finalice el entrenamiento:

{
"version": "1.0" ,
"type": "Training",
"Content":
    {
    "projectId": "00000000-0000-0000-0000-000000000000",
    "iterationId": "00000000-0000-0000-0000-000000000000",
    "trainingStatus": "TrainingCompleted"
    }
}

El campo "trainingStatus" puede ser "TrainingCompleted" o "TrainingFailed". El campo "iterationId" es el identificador del modelo entrenado.

Obtención de copias de seguridad de exportación de modelos

Cuando esté listo, llame a la API ExportIteration para exportar un modelo entrenado a una plataforma específica.

En el contenedor de almacenamiento designado, aparecerá una copia de seguridad del modelo exportado. El nombre del blob tendrá el formato:

{projectId} - {iterationId}.{platformType}

Además, recibirá una notificación en la cola cuando finalice la exportación.

{
"version": "1.0" ,
"type": "Export",
"Content":
    {
    "projectId": "00000000-0000-0000-0000-000000000000",
    "iterationId": "00000000-0000-0000-0000-000000000000",
    "exportStatus": "ExportCompleted",
    "modelUri": {url}
    }
}

El campo "exportStatus" puede ser "ExportCompleted" o "ExportFailed". El campo "modelUri" contendrá la dirección URL del modelo de copia de seguridad almacenado en el contenedor, en el supuesto de que haya integrado las notificaciones de cola al principio. Si no lo ha hecho, el campo "modelUri" mostrará la dirección URL de SAS para el blob del modelo de Custom Vision.

Pasos siguientes

En esta guía, aprendió a copiar y realizar una copia de seguridad de un proyecto entre recursos de Custom Vision. A continuación, consulte los documentos de referencia de la API para ver qué más puede hacer con Custom Vision.