Integrare Archiviazione di Azure per le notifiche e il backup
È possibile integrare il progetto di Visione personalizzata con una coda di archiviazione BLOB di Azure per ottenere notifiche push di attività di training/esportazione di progetto. Questa funzionalità è utile per evitare di eseguire continuamente il polling del servizio per ottenere risultati durante l'esecuzione di operazioni lunghe. Al contrario, è possibile integrare le notifiche della coda di archiviazione nel flusso di lavoro.
È anche possibile usare Archiviazione di Azure per archiviare copie di backup dei modelli pubblicati.
Questa guida illustra come usare queste API REST con cURL. È anche possibile usare un servizio di richiesta HTTP, ad esempio il client REST per Visual Studio Code, per effettuare le richieste.
Nota
Le notifiche push dipendono dal parametro notificationQueueUri facoltativo nell'API CreateProject e i backup del modello richiedono anche l'uso del parametro exportModelContainerUri facoltativo. Questa guida userà entrambi per il set completo di funzionalità.
Prerequisiti
- Una risorsa di Visione personalizzata di Azure. Se non è disponibile, andare al portale di Azure e creare una nuova risorsa di Visione personalizzata.
Nota
Questa funzionalità non supporta la risorsa multiservizio dei Servizi di Azure AI.
- Un account di archiviazione di Azure con un contenitore BLOB. Seguire le istruzioni di avvio rapido sull'archiviazione se è necessaria assistenza per questo passaggio.
- PowerShell versione 6.0+ o un'applicazione della riga di comando simile.
Configurare l'integrazione dell'archiviazione di Azure
Andare alla risorsa di training di Visione personalizzata nel portale di Azure, selezionare la pagina Identità e abilitare l'identità gestita assegnata dal sistema.
Passare quindi alla risorsa di archiviazione nel portale di Azure. Andare alla pagina Controllo di accesso (IAM) e selezionare Aggiungi assegnazione di ruolo (anteprima). Aggiungere quindi un'assegnazione di ruolo per una o entrambe le funzionalità di integrazione:
- Se si prevede di usare la funzionalità di backup del modello, selezionare il ruolo Collaboratore ai dati del BLOB di archiviazione e aggiungere la risorsa di training di Visione personalizzata come membro. Selezionare Rivedi + assegna per completare.
- Se si prevede di usare la funzionalità della coda di notifica, selezionare il ruolo Collaboratore ai dati della coda di archiviazione e aggiungere la risorsa di training di Visione personalizzata come membro. Selezionare Rivedi + assegna per completare.
Per informazioni sull'assegnazione di ruoli, vedere Assegnare ruoli di Azure usando il portale di Azure.
Ottenere gli URL di integrazione
Si otterranno quindi gli URL che consentono alla risorsa di Visione personalizzata di accedere a questi endpoint.
Per l'URL di integrazione della coda di notifica, andare alla pagina Code dell'account di archiviazione, aggiungere una nuova coda e salvare l'URL in un percorso temporaneo.
Per l'URL di integrazione del backup del modello, andare alla pagina Contenitori dell'account di archiviazione e creare un nuovo contenitore. Selezionarlo e andare alla pagina Proprietà. Copiare l'URL in un percorso temporaneo.
Integrare un progetto di Visione personalizzata
Ora che si dispone degli URL di integrazione, è possibile creare un nuovo progetto di Visione personalizzata che integra le funzionalità di Archiviazione di Azure. È anche possibile aggiornare un progetto esistente per aggiungere le funzionalità.
Quando si chiama l'API CreateProject, aggiungere i parametri facoltativi exportModelContainerUri e notificationQueueUri. Assegnare i valori URL ottenuti nella sezione precedente.
curl -v -X POST "{endpoint}/customvision/v3.3/Training/projects?exportModelContainerUri={inputUri}¬ificationQueueUri={inputUri}&name={inputName}"
-H "Training-key: {subscription key}"
Se si riceve una risposta 200/OK
, significa che gli URL sono stati configurati correttamente. Nella risposta JSON dovrebbero essere visualizzati anche i valori URL:
{
"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"
}
Verificare la connessione
La chiamata API nella sezione precedente dovrebbe aver già attivato nuove informazioni nell'account di archiviazione di Azure.
Nel contenitore designato deve essere presente un BLOB di test all'interno di una cartella CustomVision-TestPermission. Tale BLOB esisterà solo temporaneamente.
Nella coda di notifica dovrebbe essere visualizzata una notifica di test nel formato seguente:
{
"version": "1.0" ,
"type": "ConnectionTest",
"Content":
{
"projectId": "00000000-0000-0000-0000-000000000000"
}
}
Ricevere notifiche sugli eventi
Quando si è pronti, chiamare l'API TrainProject nel progetto per eseguire un'operazione di training normale.
Nella coda di notifica di archiviazione si riceverà una notifica al termine del training:
{
"version": "1.0" ,
"type": "Training",
"Content":
{
"projectId": "00000000-0000-0000-0000-000000000000",
"iterationId": "00000000-0000-0000-0000-000000000000",
"trainingStatus": "TrainingCompleted"
}
}
Il campo "trainingStatus"
può essere "TrainingCompleted"
o "TrainingFailed"
. Il campo "iterationId"
è l'ID del modello sottoposto a training.
Ottenere i backup di esportazione del modello
Quando si è pronti, chiamare l'API ExportIteration per esportare un modello sottoposto a training in una piattaforma specificata.
Nel contenitore di archiviazione designato verrà visualizzata una copia di backup del modello esportato. Il nome del BLOB avrà il formato seguente:
{projectId} - {iterationId}.{platformType}
Inoltre, si riceverà una notifica nella coda al termine dell'esportazione.
{
"version": "1.0" ,
"type": "Export",
"Content":
{
"projectId": "00000000-0000-0000-0000-000000000000",
"iterationId": "00000000-0000-0000-0000-000000000000",
"exportStatus": "ExportCompleted",
"modelUri": {url}
}
}
Il campo "exportStatus"
può essere "ExportCompleted"
o "ExportFailed"
. Il campo "modelUri"
conterrà l'URL del modello di backup archiviato nel contenitore, presupponendo l'integrazione delle notifiche della coda all'inizio. In caso contrario, il campo "modelUri"
visualizzerà l'URL della firma di accesso condiviso per il BLOB del modello di Visione personalizzata.
Passaggi successivi
In questa guida si è appreso come copiare ed eseguire il backup di un progetto tra le risorse di Visione personalizzata. Consultare, ora, la documentazione di riferimento delle API per informazioni su altre operazioni che è possibile eseguire con Visione personalizzata.