Wywoływanie interfejsu API przewidywania
Po wytrenowania modelu można go przetestować programowo, przesyłając obrazy do punktu końcowego interfejsu API przewidywania. W tym przewodniku dowiesz się, jak wywołać interfejs API przewidywania, aby ocenić obraz. Poznasz różne sposoby konfigurowania zachowania tego interfejsu API w celu spełnienia Twoich potrzeb.
Uwaga
W tym dokumencie przedstawiono użycie biblioteki klienta platformy .NET dla języka C# do przesyłania obrazu do interfejsu API przewidywania. Aby uzyskać więcej informacji i przykładów, zobacz dokumentację interfejsu API przewidywania.
Ustawienia
Publikowanie wytrenowanego iteracji
W witrynie internetowej usługi Custom Vision wybierz projekt, a następnie wybierz kartę Wydajność .
Aby przesłać obrazy do interfejsu API przewidywania, należy najpierw opublikować iterację na potrzeby przewidywania, co można zrobić, wybierając pozycję Publikuj i określając nazwę opublikowanej iteracji. Dzięki temu model jest dostępny dla interfejsu API przewidywania zasobu usługi Custom Vision platformy Azure.
Po pomyślnym opublikowaniu modelu etykieta Opublikowana pojawi się obok iteracji na pasku bocznym po lewej stronie, a jego nazwa zostanie wyświetlona w opisie iteracji.
Pobieranie adresu URL i klucza predykcyjnego
Po opublikowaniu modelu możesz pobrać wymagane informacje, wybierając pozycję Adres URL przewidywania. Zostanie otwarte okno dialogowe z informacjami dotyczącymi korzystania z interfejsu API przewidywania, w tym adresu URL przewidywania i klucza przewidywania.
Przesyłanie danych do usługi
W tym przewodniku założono, że utworzono już obiekt CustomVisionPredictionClient o nazwie predictionClient
, z kluczem przewidywania usługi Custom Vision i adresem URL punktu końcowego. Aby uzyskać instrukcje dotyczące konfigurowania tej funkcji, postępuj zgodnie z jednym z przewodników Szybki start.
W tym przewodniku użyjesz obrazu lokalnego, więc pobierz obraz, który chcesz przesłać do wytrenowanego modelu. Poniższy kod monituje użytkownika o określenie ścieżki lokalnej i pobranie strumienia bajtowego pliku w tej ścieżce.
Console.Write("Enter image file path: ");
string imageFilePath = Console.ReadLine();
byte[] byteData = GetImageAsByteArray(imageFilePath);
Uwzględnij następującą metodę pomocnika:
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);
}
Metoda ClassifyImageAsync przyjmuje identyfikator projektu i lokalnie przechowywany obraz oraz ocenia obraz względem danego modelu.
// Make a prediction against the new project
Console.WriteLine("Making a prediction:");
var result = predictionApi.ClassifyImageAsync(project.Id, publishedModelName, byteData);
Określanie sposobu przetwarzania danych
Opcjonalnie możesz skonfigurować sposób wykonywania operacji oceniania przez wybranie alternatywnych metod. Aby uzyskać szczegółowe informacje, zobacz metodę CustomVisionPredictionClient .
Dla uproszczenia można użyć innej niż asynchronicznej wersji poprzedniej metody, ale może to spowodować zablokowanie programu przez zauważalny czas.
-WithNoStore
Metody wymagają, aby usługa nie zachowywała obrazu przewidywania po zakończeniu przewidywania. Zwykle usługa zachowuje te obrazy, dzięki czemu można dodawać je jako dane szkoleniowe dla przyszłych iteracji modelu.
Metody -WithHttpMessages
zwracają nieprzetworzone odpowiedzi HTTP wywołania interfejsu API.
Pobieranie wyników z usługi
Usługa zwraca wyniki w postaci obiektu ImagePrediction. Właściwość Predictions
zawiera listę obiektów PredictionModel , z których każda reprezentuje jedno przewidywanie obiektu. Zawierają one nazwę etykiety i współrzędnych pola ograniczenia, w których obiekt został wykryty na obrazie. Aplikacja może następnie przeanalizować te dane, aby na przykład wyświetlić obraz z polami obiektów oznaczonymi etykietami na ekranie.
Następny krok
W tym przewodniku przedstawiono sposób przesyłania obrazów do niestandardowego klasyfikatora/narzędzia do wykrywania obrazów i programowego odbierania odpowiedzi przy użyciu zestawu SDK języka C#. Następnie dowiesz się, jak ukończyć kompleksowe scenariusze w języku C#, lub rozpocząć korzystanie z innego zestawu SDK języka.