Часть 1 была написана, потому что я не мог найти прямой путь для получения ключей подписки, необходимых для использования службы MCS Face API.
Это руководство существует, потому что я обнаружил, что бегаю по документации, форумам разработчиков и переполнению стека для своего проекта. Я оптимизировал стартовый код, чтобы выполнить мою конкретную задачу по обнаружению улыбки на изображении заемщика Kiva.
Моей установкой для разработки этой части проекта был Python 3.6 с использованием Juptyer Notebook. Почему? Я хотел: иметь возможность быстро видеть свои изображения в соответствии с моим кодом, выполнять код построчно и тестировать код функция за функцией. Я переключаюсь на текстовый редактор, такой как Sublime Text, в следующем уроке, когда перехожу к пакетной обработке нескольких изображений. Я оставлю вам исследовать кроличью нору их установки, но мой быстрый совет - используйте дистрибутив Anaconda.
Это руководство было очень полезным, поскольку помогло мне установить и проанализировать изображение на веб-сайте с помощью Python. API и документация Microsoft также поддерживают почти все другие популярные языки веб-разработки. Надеюсь, это сработает для вас!
Шаг 3. Установите необходимые библиотеки Python
Для Python вам необходимо установить библиотеку запросов с помощью pip.
pip install requests
Мой набор данных изображений хранился локально на моем ноутбуке. В доступной в настоящее время документации Microsoft не очень ясно, как загружать изображения с помощью этой службы. Я добыл Stack Overflow, так что вам не нужно. Я также обнаружил, что некоторые операторы импорта в примере кода сбивают с толку и полагаюсь на Запросы: HTTP для людей, которые рекомендованы документацией Python 3.
Шаг 4. Измените образец кода документации
Большинство программистов начинают свой процесс с примера; они находят образец кода и заменяют части по мере необходимости. Большая часть следующего кода взята из официальной документации Microsoft с некоторыми настройками для загрузки локальных файлов и некоторыми добавленными пояснениями в комментариях. Вот что у меня сработало:
#!/usr/bin/env python#################################### # File name: detect_face.py # # Author: me fab # ####################################
""" Python 3.6 script that opens a locally stored image file and passes the binary to the Microsoft Face API for image detection analysis and displays the json response """__author__ = "me fab" __license__ = "BSD" __version__ = "3.6" __status__ = "Prototype"
# import necessary libraries, you need to have previously installed # these via pip import requests # Replace 'KEY_1' with your subscription key as a string subscription_key = 'KEY_1' filename = 'path-to/yr-image-filename.jpg' # Replace or verify the region. # # You must use the same region in your REST API call as you used to obtain your subscription keys. # For example, if you obtained your subscription keys from the westus region, replace # "westcentralus" in the URI below with "westus". # # NOTE: Free trial subscription keys are generated in the westcentralus region, so if you are using # a free trial subscription key, you should not need to change this region. uri_base = 'https://westcentralus.api.cognitive.microsoft.com' # Request headers # for locally stored image files use # 'Content-Type': 'application/octet-stream' headers = { 'Content-Type': 'application/octet-stream', 'Ocp-Apim-Subscription-Key': subscription_key, } # Request parameters # The detection options for MCS Face API check MCS face api # documentation for complete list of features available for # detection in an image # these parameters tell the api I want to detect a face and a smile params = { 'returnFaceId': 'true', 'returnFaceAttributes': 'smile', } # route to the face api path_to_face_api = '/face/v1.0/detect' # open jpg file as binary file data for intake by the MCS api with open(filename, 'rb') as f: img_data = f.read() try: # Execute the api call as a POST request. # What's happening?: You're sending the data, headers and # parameter to the api route & saving the # mcs server's response to a variable. # Note: mcs face api only returns 1 analysis at time response = requests.post(uri_base + path_to_face_api, data=img_data, headers=headers, params=params) print ('Response:') # json() is a method from the request library that converts # the json reponse to a python friendly data structure parsed = response.json() # display the image analysis data print (parsed) except Exception as e: print('Error:') print(e)
Попробуйте настроить этот сценарий, чтобы добавить собственный ключ подписки и собственное имя файла изображения.
Шаг 5: запустите код
Если вы работаете в блокноте jupyter, напишите приведенный выше код в ячейку и нажмите ‹shift› + ‹return›, чтобы запустить код и получить результат в выходной ячейке.
Если вы работаете в текстовом редакторе. Сохраните файл в папке на вашем компьютере как
detect_face.py # or use your own filename convention
откройте терминал или оболочку bash и запустите вашу программу python:
my-computer: face-detect-project-folder$ python detect_face.py
Успешный ответ будет выглядеть примерно как файл JSON, отображаемый в документации.
Советы по отладке:
Если проанализированный ответ представляет собой пустой список, ответ может выглядеть следующим образом:
Response: []
API не обнаружил лицо на изображении. Вы можете попробовать другое изображение или попробовать онлайн-инструмент распознавания лиц, чтобы проверить свое изображение.
Попробуйте! API может возвращать новое уменьшенное изображение и другие типы данных, которые я здесь не рассматриваю. Вам нужно будет прочитать документацию, возможно, немного потрудитесь, но я уверен, что вы разберетесь с остальными вещами с помощью Google и Stack Overflow. Я надеюсь, что этот урок даст вам фору, и вы сможете повеселиться с мощным инструментом компьютерного зрения!
Вы можете остановиться на этом и продолжить играть с Microsoft Cognitive Services Face API. Если вы хотите пойти дальше в этом приключении, вы можете перейти к части 3 и изучить пакетную обработку более одного изображения за раз.