Chiamare l'API Stima
Dopo aver eseguito il training del modello, è possibile testarlo a livello di codice inviando immagini all'endpoint dell'API Stima. In questa guida si apprenderà come chiamare l'API Prediction per assegnare un punteggio a un'immagine. Verranno illustrati i diversi modi in cui è possibile configurare il comportamento di questa API in modo da 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 Stima.
Impostazione
Pubblicare l'interazione sottoposta a training
Nel sito Web Visione personalizzata selezionare il progetto e quindi selezionare la scheda Prestazioni.
Per inviare immagini all'API Stima, è prima necessario pubblicare l'iterazione per la stima, operazione che può essere eseguita selezionando Pubblica e specificando un nome per l'iterazione pubblicata. In questo modo il modello è accessibile all'API Prediction dell'Visione personalizzata risorsa di Azure.
Dopo la pubblicazione del modello, l'etichetta Pubblicata viene visualizzata accanto all'iterazione nella barra laterale sinistra e il relativo nome viene visualizzato nella descrizione dell'iterazione.
Ottenere l'URL e la chiave di stima
Dopo aver pubblicato il modello, è possibile recuperare le informazioni necessarie selezionando URL di stima. Viene visualizzata una finestra di dialogo con informazioni per l'uso dell'API Stima, inclusi l'URL di stima e la chiave di stima.
Inviare dati al servizio
Questa guida presuppone che sia già stato creato un oggetto CustomVisionPredictionClient, denominato predictionClient
, con la chiave di previsione di Visione personalizzata e l'URL dell'endpoint. Per istruzioni su come configurare questa funzionalità, seguire una delle istruzioni di avvio rapido.
In questa guida si usa un'immagine locale, quindi scaricare un'immagine da 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. Per informazioni dettagliate, vedere il metodo CustomVisionPredictionClient.
È possibile usare una versione non asincrona del metodo precedente per semplicità, ma potrebbe causare il blocco del programma per una notevole quantità di tempo.
I -WithNoStore
metodi 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 -WithHttpMessages
metodi restituiscono la risposta HTTP non elaborata della chiamata API.
Ottenere risultati dal servizio
Il servizio restituisce risultati sotto forma di oggetto ImagePrediction. La Predictions
proprietà 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 di selezione in cui è stato rilevato l'oggetto nell'immagine. L'app può quindi analizzare questi dati per, ad esempio, visualizzare l'immagine con campi oggetto etichettati su una schermata.
Passaggio successivo
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 differente.