API Azure Custom Vision возвращает результаты, отличные от портала проекта? - PullRequest
0 голосов
/ 27 марта 2019

Я создал собственный проект для распознавания символов (A, B, C ...). Что интересно: если я загружу изображение персонажа (в данном случае «N») на портал API видения, он скажет мне, что на 99,9% уверен, что это «N»:

enter image description here

Если, однако, я использую клиентские библиотеки для предсказания того же самого изображения, я получаю 53%, что это «W», и только 37%, что это «N»:

enter image description here

  • Я дважды проверил, что последняя итерация опубликована
  • Я дважды проверил, что я использую правильный идентификатор проекта
  • Моя конечная точка установлена ​​на "https://westeurope.api.cognitive.microsoft.com" в CustomVisionPredictionClient

Код для получения прогноза на моего клиента:

var client = new CustomVisionPredictionClient()
{
    ApiKey = predictionKey,
    Endpoint = endpoint
};

var result = await client.PredictImageAsync(Guid.Parse(projectId), imageStream).ConfigureAwait(false);
var prediction = result.Predictions.FirstOrDefault();

Откуда эта разница и как ее исправить, потому что согласно тестам, которые я делал, загружая изображения, результаты были близки к 100% правильным, независимо от того, какое изображение персонажа я загружал?

ОБНОВЛЕНИЕ: Я заметил, что было обновление для клиентских библиотек. Они пошли от 0.12 до 1.0stable. После обновления PredictImageAsync исчезает и заменяется на DetectImageAsync. Это ожидается в качестве дополнительного параметра имени модели. Я попытался использовать имя итерации, и через некоторое время метод возвращается с внутренней ошибкой сервера. Так что не уверен, что попробовать дальше.

1 Ответ

1 голос
/ 28 марта 2019

Комментарий выше указал мне правильное направление - спасибо!

В новой клиентской библиотеке есть два метода ClassifyImage и DetectImage (и их различные варианты), которые заменяют ранее использовавшиеся, включая PredictImage, который я использовал, с предварительной версией клиентской библиотеки.

Для классификации изображения (что я и хотел сделать), конечно, следует использовать ClassifyImage. Новый код выглядит следующим образом и обеспечивает почти 100% правильное предсказание:

var client = new CustomVisionPredictionClient()
{
    ApiKey = predictionKey,
    Endpoint = endpoint
};

var result = await client.ClassifyImageAsync(Guid.Parse(projectId), "Iteration12", imageStream).ConfigureAwait(false);
var prediction = result.Predictions.FirstOrDefault();
  • endpoint - это URL-адрес региона, в котором размещен API видения, в моем случае https://westeurope.api.cognitive.microsoft.com.
  • predictionKey доступно на сайте CustomVision.AI в вашем проекте, как и projectId
  • Параметр publishedName - это имя используемой итерации (в моем случае «Iteration12»
...