Вызов API прогнозирования

После обучения модели можно протестировать ее программным способом, отправив изображения в конечную точку API прогнозирования. В этом руководство приведена информация о том, как вызвать API прогнозирования для оценки изображения. Вы узнаете о различных способах настройки поведения этого API в соответствии с вашими потребностями.

Примечание.

В этом документе показано использование клиентской библиотеки.NET для C# в целях отправки изображения в API прогнозирования. Дополнительные сведения и примеры см. на странице справочника по API прогнозирования.

Настройка

Опубликуйте обученную итерацию

На веб-странице Пользовательской службы визуального распознавания выберите проект и перейдите на вкладку Производительность.

Чтобы отправить изображения в API прогнозирования, сначала необходимо опубликовать итерацию для прогнозирования, выбрав пункт Опубликовать и указав имя публикуемой итерации. Это сделает вашу модель доступной для API-интерфейса прогнозирования, принадлежащего ресурсу Azure, связанному с пользовательской службой визуального распознавания.

Показана вкладка

После успешной публикации модели на боковой панели слева появится метка "Опубликованная", а ее имя появится в описании итерации.

Показана вкладка

Получение URL-адреса и ключа прогнозирования

После публикации модели можно получить необходимые сведения, выбрав URL-адрес прогнозирования. Откроется диалоговое окно со сведениями об использовании API прогнозирования, включая URL-адрес прогнозирования и ключ прогноза.

Показана вкладка

Показана вкладка

Отправка данных на устройство

В этом руководстве предполагается, что вы уже сконструировали объект CustomVisionPredictionClient с именем predictionClient и ключом прогнозирования пользовательского визуального распознавания и URL-адресом конечной точки. Инструкции по настройке этой функции приведены в одном из кратких руководств.

В этом руководстве вы будете использовать локальное изображение, поэтому скачайте изображение, которое хотите отправить в обученную модель. В следующем коде пользователю предлагается указать локальный путь и направить поток байтов файла по этому пути.

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

Включите следующий вспомогательный метод:

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);
}

Метод ClassifyImageAsync принимает идентификатор проекта и локально сохраненное изображение и оценивает изображение в соответствии с заданной моделью.

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

Определение способа обработки данных

По желанию можно настроить способ выполнения операции оценки службой, выбрав альтернативные методы (см. методы класса CustomVisionPredictionClient).

Для простоты можно использовать неасинхронную версию описанного выше метода, но это может привести к блокировке программы в течение длительного времени.

Для методов -WithNoStore требуется, чтобы служба не сохраняла изображение прогнозирования после завершения прогнозирования. Как правило, служба сохраняет эти изображения, поэтому их можно добавлять в качестве данных обучения для будущих итераций модели.

Методы -WithHttpMessages возвращают необработанный HTTP-ответ вызова API.

Получение результатов из службы

Служба возвращает результаты в виде объекта ImagePrediction. Свойство Predictions содержит список объектов PredictionModel, каждый из которых представляет прогноз одного объекта. В них входят имя метки и координаты ограничивающего прямоугольника, где объект был обнаружен на изображении. После этого приложение может проанализировать эти данные, например, отобразить изображение с помеченными полями объекта на экране.

Следующие шаги

В этом руководстве вы узнали, как отправлять изображения в классификатор или детектор пользовательского изображения, а также как получить ответ программным способом с помощью пакета SDK C#. Далее вы узнаете, как выполнять комплексные сценарии в C# или приступить к работе с пакетом SDK для другого языка.