Wywoływanie interfejsu API przewidywania

Po wytrenowanym 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.

Konfiguracja

Publikowanie wytrenowanego iteracji

Na stronie Custom Vision wybierz swój projekt, a następnie kartę Wydajność.

Aby przesłać obrazy do interfejsu API przewidywania, najpierw musisz opublikować iterację na potrzeby przewidywania, co można zrobić, wybierając pozycję Publikuj i określając nazwę opublikowanej iteracji. Dzięki temu model będzie dostępny dla interfejsu API przewidywania zasobu usługi Custom Vision platformy Azure.

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

Po pomyślnym opublikowaniu modelu zobaczysz etykietę "Opublikowano" obok iteracji na pasku bocznym po lewej stronie, a jego nazwa pojawi się w opisie iteracji.

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

Pobieranie adresu URL i klucza predykcyjnego

Po opublikowaniu modelu możesz pobrać wymagane informacje, wybierając pozycję Adres URL przewidywania. Spowoduje to otwarcie okna dialogowego z informacjami dotyczącymi korzystania z interfejsu API przewidywania, w tym adresu URL przewidywania i klucza przewidywania.

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.

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 (zobacz metody klasy CustomVisionPredictionClient).

Dla uproszczenia można użyć innej niż asynchronicznej wersji metody, ale może to spowodować zablokowanie programu przez zauważalny czas.

Metody -WithNoStore wymagają, aby usługa nie zachował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żdy 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ępne kroki

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.