CustomVision API возвращает «Операция вернула недопустимый код состояния:« NotFound »» - PullRequest
0 голосов
/ 16 марта 2019

Я использую пакет Nuget Microsoft.Azure.CognitiveServices.Vision.CustomVision.Prediction

Я создал приложение Custom Vision на портале Custom Vision, получил ключи API и идентификатор проекта.

Всякий раз, когда я пытаюсь сделать запрос к API, я всегда получаю следующее исключение:

HttpOperationException: операция вернула неверный код состояния 'NotFound'

Вот мой код:

        HttpClient httpClient = new HttpClient();
        CustomVisionPredictionClient customVisionPredictionClient = new CustomVisionPredictionClient(httpClient, false)
        {
            ApiKey = PredictionKey,
            Endpoint = PredictionEndpoint,
        };
        var result = customVisionPredictionClient.PredictImageAsync(CUSTOM_VISION_PROJECT_GUID, imageData);        

Я пробовал несколько разных конечных точек:

https://southcentralus.api.cognitive.microsoft.com/customvision/v2.0/Prediction https://southcentralus.api.cognitive.microsoft.com/customvision/Prediction/v1.0 https://southcentralus.api.cognitive.microsoft.com/customvision/v1.1/Prediction

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

Я также установил итерацию по умолчанию, как было предложено в аналогичной проблеме, которую я обнаружил ( CustomVision: Операция вернула недопустимый код состояния: 'NotFound' ).

Я пробовал этот пример https://github.com/Microsoft/Cognitive-CustomVision-Windows/tree/master/Samples/CustomVision.Sample, в котором используется устаревший клиент Windows, чтобы по крайней мере убедиться, что информация о моем проекте верна, и я смог получить доступ к API.

Любое понимание будет оценено

Ответы [ 2 ]

2 голосов
/ 27 марта 2019

Для клиента .NET SDK необходимо указать URL-адрес базовой конечной точки без версии или оставшегося пути. Версия автоматически добавляется клиентским SDK. Другими словами, вы захотите (при условии, что SouthCentralUS - ваш регион):

PreditionEndpoint = "https://southcentralus.api.cognitive.microsoft.com";
CustomVisionPredictionClient customVisionPredictionClient = new CustomVisionPredictionClient()
{
    ApiKey = PredictionKey,
    Endpoint = PredictionEndpoint,
};
var result = customVisionPredictionClient.PredictImageAsync(CUSTOM_VISION_PROJECT_GUID, imageData);

Кроме того, обратите внимание, что если вы не хотите точно настроить поведение, вам не нужно передавать объект HttpClient в CustomVisionPredictionClient конструктор.

Если вам нужно больше примеров кода, посмотрите QuickStart .

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

Как использовать API прогнозирования

Если у вас есть URL изображения:

, ваша конечная точка будет выглядеть примерно так

https://southcentralus.api.cognitive.microsoft.com/customvision/v2.0/Prediction/{Project-GUID}/url?iterationId={Iteration-ID}

Set Prediction-Key Header to : predictionId
Set Content-Type Header to : application/json
Set Body to : {"Url": "https://example.com/image.png"}

Или если у вас есть изображениеfile:

Конечная точка будет выглядеть как

https://southcentralus.api.cognitive.microsoft.com/customvision/v2.0/Prediction/{ProjectGuid}/image?iterationId={Iteration-Id}

Set Prediction-Key Header to : Predcition-key
Set Content-Type Header to : application/octet-stream
Set Body to : <image file>

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

Проверьте мой другой ответ по аналогичной проблеме, используя python

Ошибка предиктора пользовательского видения Python

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...