Azure Custom Vision API 返回的结果与项目门户不同?
Azure Custom Vision API returning different results than project portal?
我创建了一个自定义视觉项目来识别字符(A、B、C...)。
有趣的是:如果我将角色的图像(在本例中为 "N")上传到视觉 API 门户,它会告诉我它有 99.9% 的把握是 "N" :
但是,如果我使用客户端库来预测完全相同的图像,我得到 53% 的结果是 "W",只有 37% 的结果是 "N":
- 我仔细检查了最新版本是已发布的版本
- 我仔细检查了我使用的项目 ID 是否正确
- 我的端点在
CustomVisionPredictionClient
中设置为“https://westeurope.api.cognitive.microsoft.com”
在我的客户端上获取预测的代码:
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.12pre 到 1.0stable。更新后 PredictImageAsync
消失并替换为 DetectImageAsync
。这预期作为模型名称的附加参数。我尝试使用迭代的名称,一段时间后方法 returns 出现内部服务器错误。所以不确定接下来要尝试什么。
上面的评论为我指明了正确的方向 - 谢谢!
新的客户端库有两个方法 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
是愿景 API 所在区域的 URL,在我的例子中是 https://westeurope.api.cognitive.microsoft.com
.
predictionKey
在您项目的 CustomVision.AI 站点上可用,projectId
也可用
-
publishedName
参数是要使用的迭代的名称(在我的例子中 "Iteration12"
我创建了一个自定义视觉项目来识别字符(A、B、C...)。 有趣的是:如果我将角色的图像(在本例中为 "N")上传到视觉 API 门户,它会告诉我它有 99.9% 的把握是 "N" :
但是,如果我使用客户端库来预测完全相同的图像,我得到 53% 的结果是 "W",只有 37% 的结果是 "N":
- 我仔细检查了最新版本是已发布的版本
- 我仔细检查了我使用的项目 ID 是否正确
- 我的端点在
CustomVisionPredictionClient
中设置为“https://westeurope.api.cognitive.microsoft.com”
在我的客户端上获取预测的代码:
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.12pre 到 1.0stable。更新后 PredictImageAsync
消失并替换为 DetectImageAsync
。这预期作为模型名称的附加参数。我尝试使用迭代的名称,一段时间后方法 returns 出现内部服务器错误。所以不确定接下来要尝试什么。
上面的评论为我指明了正确的方向 - 谢谢!
新的客户端库有两个方法 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
是愿景 API 所在区域的 URL,在我的例子中是https://westeurope.api.cognitive.microsoft.com
.predictionKey
在您项目的 CustomVision.AI 站点上可用,projectId
也可用
-
publishedName
参数是要使用的迭代的名称(在我的例子中 "Iteration12"