按照文档尝试在 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)
关于如何解决这个问题有什么建议吗?如果需要的话还可以提供更多代码。
最初,当我遵循此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)
回复:
您需要使用
作为预测器端点的值来解决错误。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
回复:
参考: