Вызов 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 для другого языка.