Esportare un modello a livello di codice

Tutte le opzioni di esportazione disponibili nel sito Web di Visione personalizzata sono disponibili anche a livello di codice tramite le librerie client. È possibile usare le librerie client per automatizzare completamente il processo di ripetizione del training e l'aggiornamento dell'iterazione del modello usata in un dispositivo locale.

Questa guida illustra come esportare il modello in un file ONNX con Python SDK.

Creare un client di training

È necessario disporre di un oggetto CustomVisionTrainingClient per esportare un'iterazione del modello. Creare variabili per le risorse di training Visione personalizzata endpoint e chiavi di Azure e usarle per creare l'oggetto client.

ENDPOINT = "PASTE_YOUR_CUSTOM_VISION_TRAINING_ENDPOINT_HERE"
training_key = "PASTE_YOUR_CUSTOM_VISION_TRAINING_KEY_HERE"

credentials = ApiKeyCredentials(in_headers={"Training-key": training_key})
trainer = CustomVisionTrainingClient(ENDPOINT, credentials)

Importante

Ricordarsi di rimuovere le chiavi dal codice al termine dell'operazione e di non pubblicarle mai pubblicamente. Per la produzione, è consigliabile usare un modo sicuro per archiviare e accedere alle credenziali, Per altre informazioni, vedere l'articolo sulla sicurezza dei servizi di intelligenza artificiale di Azure.

Chiamare il metodo export

Chiamare il metodo export_iteration .

  • Specificare l'ID progetto, l'ID di iterazione del modello da esportare.
  • Il parametro platform specifica la piattaforma da esportare in: i valori consentiti sono CoreML, , ONNXDockerFileTensorFlow, VAIDK, e OpenVino.
  • Il parametro flavor specifica il formato del modello esportato: i valori consentiti sono Linux, ONNX10ARMTensorFlowNormalWindowsONNX12e .TensorFlowLite
  • Il parametro raw consente di recuperare la risposta JSON non elaborata insieme alla risposta del modello a oggetti.
project_id = "PASTE_YOUR_PROJECT_ID"
iteration_id = "PASTE_YOUR_ITERATION_ID"
platform = "ONNX"
flavor = "ONNX10"
export = trainer.export_iteration(project_id, iteration_id, platform, flavor, raw=False)

Per altre informazioni, vedere il metodo export_iteration.

Importante

Se è già stata esportata una particolare iterazione, non è possibile chiamare di nuovo il metodo export_iteration . Passare invece alla chiamata al metodo get_exports per ottenere un collegamento al modello esportato esistente.

Scaricare il modello esportato

Verrà quindi chiamato il metodo get_exports per controllare lo stato dell'operazione di esportazione. L'operazione viene eseguita in modo asincrono, pertanto è consigliabile eseguire il polling di questo metodo fino al completamento dell'operazione. Al termine, è possibile recuperare l'URI in cui è possibile scaricare l'iterazione del modello nel dispositivo.

while (export.status == "Exporting"):
    print ("Waiting 10 seconds...")
    time.sleep(10)
    exports = trainer.get_exports(project_id, iteration_id)
    # Locate the export for this iteration and check its status  
    for e in exports:
        if e.platform == export.platform and e.flavor == export.flavor:
            export = e
            break
    print("Export status is: ", export.status)

Per altre informazioni, vedere il metodo get_exports.

È quindi possibile scaricare il modello esportato a livello di codice in una posizione nel dispositivo.

if export.status == "Done":
    # Success, now we can download it
    export_file = requests.get(export.download_uri)
    with open("export.zip", "wb") as file:
        file.write(export_file.content)

Passaggi successivi

Integrare il modello esportato in un'applicazione esplorando uno degli articoli o degli esempi seguenti: