在 Python 中使用 detector_image 时出现 Azure 自定义视觉 API PermissionDenied 错误

问题描述 投票:0回答:1

按照文档尝试在 Python 中使用 Azure 自定义视觉 API 的 detector_image 函数时遇到 PermissionDenied 错误:https://learn.microsoft.com/en-us/azure/ai-services/custom-视觉服务/快速入门/对象检测?选项卡=windows%2CVisual-studio&pivots=编程语言-python

我的代码:


with open(os.path.join(base_image_location, "test", "test_image.jpg"), mode="rb") as test_data:
    results = predictor.detect_image(project.id, publish_iteration_name, test_data)

for prediction in results.predictions:
    print("\t" + prediction.tag_name + ": {0:.2f}% bbox.left = {1:.2f}, bbox.top = {2:.2f}, bbox.width = {3:.2f}, bbox.height = {4:.2f}".format(prediction.probability * 100, prediction.bounding_box.left, prediction.bounding_box.top, prediction.bounding_box.width, prediction.bounding_box.height))

我收到的错误是:

CustomVisionErrorException: Operation returned an invalid status code 'PermissionDenied'
I feel I have used my correct apis/endpoints, wanted to confirm I am getting the right ones though.

我在这里传递我的训练模型中的键和端点:


credentials = ApiKeyCredentials(in_headers={"Training-key": training_key})


trainer = CustomVisionTrainingClient(endpoint=endpoint1, credentials=credentials)
Here I am passing in the published models iteration name (from "Published as" in performance from my model).

资源 ID 来自我的预测模型(来自总体自定义视觉设置页面)

trainer.publish_iteration(project.id, iteration.id, publish_iteration_name, prediction_resource_id)

关于如何解决这个问题有什么建议吗?如果需要的话还可以提供更多代码。

azure microsoft-custom-vision
1个回答
0
投票

最初,当我遵循此MS文档并通过为训练器和预测器传递sameENDPOINT来运行代码时,我也遇到了

类似的错误
,如下所示:

ENDPOINT = "https://democustvis.cognitiveservices.azure.com/" #Trainer Endpoint
training_key = "training_key"
prediction_key = "prediction_key"
prediction_resource_id = "/subscriptions/xxxxxxxxxxx/resourceGroups/Sri/providers/Microsoft.CognitiveServices/accounts/democustvis-Prediction"

credentials = ApiKeyCredentials(in_headers={"Training-key": training_key})
trainer = CustomVisionTrainingClient(ENDPOINT, credentials)
prediction_credentials = ApiKeyCredentials(in_headers={"Prediction-key": prediction_key})
predictor = CustomVisionPredictionClient(ENDPOINT, prediction_credentials)

回复:

enter image description here

您需要使用

VISION_PREDICTION_ENDPOINT
作为预测器端点的解决错误。

就我而言,我修改了这部分代码并成功得到了响应,如下所示:

TRAINER_ENDPOINT = "https://democustvis.cognitiveservices.azure.com/" #Trainer Endpoint
training_key = "training_key"
prediction_key = "prediction_key"
prediction_resource_id = "/subscriptions/xxxxxxxxxxx/resourceGroups/Sri/providers/Microsoft.CognitiveServices/accounts/democustvis-Prediction"
PREDICTOR_ENDPOINT = "https://democustvis-prediction.cognitiveservices.azure.com/" #Predictor Endpoint

credentials = ApiKeyCredentials(in_headers={"Training-key": training_key})
trainer = CustomVisionTrainingClient(TRAINER_ENDPOINT, credentials) #modified
prediction_credentials = ApiKeyCredentials(in_headers={"Prediction-key": prediction_key})
predictor = CustomVisionPredictionClient(PREDICTOR_ENDPOINT, prediction_credentials) #modified

回复:

enter image description here

参考:

Azure 自定义视觉错误:状态代码“未经授权”无效 - Microsoft 问答,作者:Khalid Obaid

© www.soinside.com 2019 - 2024. All rights reserved.