Chiamare l'API di stima

Dopo aver eseguito il training del modello, è possibile testarlo a livello di codice inviando immagini all'endpoint dell'API di stima. In questa guida si apprenderà come chiamare l'API di stima per assegnare un punteggio a un'immagine. Verranno illustrati i diversi modi in cui è possibile configurare il comportamento di questa API per soddisfare le proprie esigenze.

Nota

Questo documento illustra l'uso della libreria client .NET per C# per inviare un'immagine all'API Stima. Per altre informazioni ed esempi, vedere le informazioni di riferimento sull'API di stima.

Impostazione

Pubblicare l'iterazione sottoposta a training

Dalla pagina Web di Visione personalizzata selezionare il progetto e quindi selezionare la scheda Performance (Prestazioni).

Per inviare immagini all'API Stima, è prima necessario pubblicare l'iterazione per la stima, che può essere eseguita selezionando Pubblica e specificando un nome per l'iterazione pubblicata. In questo modo il modello sarà accessibile all'API Prediction dell'Visione personalizzata risorsa di Azure.

The performance tab is shown, with a red rectangle surrounding the Publish button.

Dopo aver pubblicato correttamente il modello, verrà visualizzata un'etichetta "Pubblicata" accanto all'iterazione nella barra laterale sinistra e il relativo nome verrà visualizzato nella descrizione dell'iterazione.

The performance tab is shown, with a red rectangle surrounding the Published label and the name of the published iteration.

Ottenere l'URL e la chiave di stima

Dopo aver pubblicato il modello, è possibile recuperare le informazioni necessarie selezionando URL di stima. Verrà aperta una finestra di dialogo con informazioni per l'uso dell'API Stima, inclusi l'URL di stima e la chiave di stima.

The performance tab is shown with a red rectangle surrounding the Prediction URL button.

The performance tab is shown with a red rectangle surrounding the Prediction URL value for using an image file and the Prediction-Key value.

Inviare dati al servizio

Questa guida presuppone che sia già stato creato un oggetto CustomVisionPredictionClient, denominato predictionClient, con la chiave di stima Visione personalizzata e l'URL dell'endpoint. Per istruzioni su come configurare questa funzionalità, seguire una delle guide introduttive.

In questa guida si userà un'immagine locale, quindi scaricare un'immagine che si vuole inviare al modello sottoposto a training. Il codice seguente richiede all'utente di specificare un percorso locale e ottiene il bytestream del file in tale percorso.

Console.Write("Enter image file path: ");
string imageFilePath = Console.ReadLine();
byte[] byteData = GetImageAsByteArray(imageFilePath);

Includere il metodo helper seguente:

private static byte[] GetImageAsByteArray(string imageFilePath)
{
    FileStream fileStream = new FileStream(imageFilePath, FileMode.Open, FileAccess.Read);
    BinaryReader binaryReader = new BinaryReader(fileStream);
    return binaryReader.ReadBytes((int)fileStream.Length);
}

Il metodo ClassifyImageAsync accetta l'ID progetto e l'immagine archiviata in locale e assegna un punteggio all'immagine rispetto al modello specificato.

// Make a prediction against the new project
Console.WriteLine("Making a prediction:");
var result = predictionApi.ClassifyImageAsync(project.Id, publishedModelName, byteData);

Determinare come elaborare i dati

Facoltativamente, è possibile configurare il modo in cui il servizio esegue l'operazione di assegnazione dei punteggi scegliendo metodi alternativi (vedere i metodi della classe CustomVisionPredictionClient).

È possibile usare una versione non asincrona del metodo precedente per semplicità, ma può causare il blocco del programma per una notevole quantità di tempo.

I metodi -WithNoStore richiedono che il servizio non mantenga l'immagine di stima al termine della stima. In genere, il servizio mantiene queste immagini in modo che sia possibile aggiungerle come dati di training per le iterazioni future del modello.

I metodi -WithHttpMessages restituiscono la risposta HTTP non elaborata della chiamata API.

Ottenere risultati dal servizio

Il servizio restituisce i risultati sotto forma di oggetto ImagePrediction. La proprietà Predictions contiene un elenco di oggetti PredictionModel, ognuno dei quali rappresenta una stima di un singolo oggetto. Includono il nome dell'etichetta e le coordinate del rettangolo delimitatore in cui è stato rilevato l'oggetto nell'immagine. L'app può quindi analizzare questi dati in, ad esempio visualizzare l'immagine con campi oggetto etichettati su una schermata.

Passaggi successivi

In questa guida si è appreso come inviare immagini al classificatore/rilevatore di immagini personalizzato e ricevere una risposta a livello di codice con C# SDK. Informazioni su come completare gli scenari end-to-end con C# o iniziare a usare un SDK del linguaggio diverso.