Часть 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 и изучить пакетную обработку более одного изображения за раз.