1

我正在使用 Nuget 包 Microsoft.Azure.CognitiveServices.Vision.CustomVision.Prediction

我在 Custom Vision 门户中创建了一个 Custom Vision 应用程序,并获得了 API 密钥和一个项目 ID。

每当我尝试向 API 发出请求时,总是会抛出以下异常:

HttpOperationException:操作返回无效的状态代码“未找到”

这是我的代码:

        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。认知.microsoft.com/customvision/v1.1/Prediction

虽然在门户网站上列出的是列表中的第一个。我还成功地在 Azure 上导出了我的应用程序,这为我提供了列表中的第二个端点,但没有更多成功。

我还按照我发现的类似问题中的建议设置了默认迭代(CustomVision:Operation 返回了无效的状态代码:'NotFound')。

我已经尝试过这个示例https://github.com/Microsoft/Cognitive-CustomVision-Windows/tree/master/Samples/CustomVision.Sample,它使用了一个已弃用的 Windows 客户端,至少可以确保我的项目信息是正确的并且我能够访问 API。

任何见解将不胜感激

4

2 回答 2

6

对于 .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

于 2019-03-27T00:10:40.037 回答
0

如何使用预测 API

如果您有图片网址:

您的端点将是这样的

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"}

或者,如果您有图像文件:

端点就像

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>

请记住,您可以将迭代标记为默认值,这样您就可以在不指定迭代 ID 的情况下向其发送数据。然后,您可以更改您的应用程序指向的迭代,而无需更新您的应用程序。

使用 python 检查我在类似问题上的其他答案

Python 自定义视觉预测器失败

希望能帮助到你。

于 2019-03-18T10:55:45.267 回答