Как позвонить Azure Cognitive Services API? - PullRequest
0 голосов
/ 12 февраля 2020

Я создал и обучил модель классификации изображений с использованием Azure Custom Vision (Cognitive Services) и опубликовал модель с API. Теперь я написал простой код в Python, который берет изображение с заданного URL и вызывает API. Тем не менее, я все еще получаю эту ошибку, даже если изображение обязательно существует:

с открытым (URL, "rb") как image_contents: FileNotFoundError: [Errno 2] Нет такого файла или каталога: ' https://upload.wikimedia.org/wikipedia/commons/5/55/Dalailama1_20121014_4639.jpg '

Код указан ниже:

from azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient

ENDPOINT = "https://westeurope.api.cognitive.microsoft.com/"
PROJECT_ID = "bbed3f99-4199-4a17-81f2-df83f0659be3"

# Replace with a valid key
prediction_key = "<my prediction key>"
prediction_resource_id = "/subscriptions/97c4e143-9c0c-4f1e-b880-15492e327dd1/resourceGroups/WestEurope/providers/Microsoft.CognitiveServices/accounts/HappyAI"
publish_iteration_name = "Iteration5"

# Classify image
URL = "https://upload.wikimedia.org/wikipedia/commons/5/55/Dalailama1_20121014_4639.jpg"

# Now there is a trained endpoint that can be used to make a prediction
predictor = CustomVisionPredictionClient(prediction_key, endpoint=ENDPOINT)

with open(URL, "rb") as image_contents:
    results = predictor.classify_image(
        PROJECT_ID, publish_iteration_name, image_contents.read())

    # Display the results.
    for prediction in results.predictions:
        print("\t" + prediction.tag_name +
              ": {0:.2f}%".format(prediction.probability * 100))

Помощь будет принята с благодарностью!

Заранее спасибо!

1 Ответ

1 голос
/ 12 февраля 2020

Существует два способа передать изображение в когнитивную службу. Вы смешиваете оба;)

1) Укажите URL-адрес изображения, которое доступно через inte rnet. Вы делаете это, отправляя JSON в сервис: {"url":"https://sample.com/myimage.png"}

2) Загрузите изображение в двоичном виде в запросе POST.

enter image description here

Источник: https://docs.microsoft.com/en-us/azure/cognitive-services/custom-vision-service/use-prediction-api#get -the-url-and-предсказание-ключ

Ваша проблема в том, что вы пытаетесь использовать open() для метода 2. Однако это не работает с удаленными файлами в Python. Если вы хотите сделать это (вместо метода 1), используйте, например, urllib2.urlopen, например this .

...