Рубрики
Без рубрики

Анализ лица с Python и Amazon Rekognition

Камеры становятся умнее, они меняют то, как мы производим товары, как мы управляем нашими автомобилями и Евой … помеченными AWS, Python, CV, начинающими.

Камеры становятся умнее, они меняют то, как мы производим товары, как мы управляем нашими автомобилями и даже, навсегда или плохо, как проводится наблюдение.

И теперь становится становится еще проще, чем когда -либо, добавлять эту функциональность в свои решения; Это становится все более демократизированным, что позволяет любому добавлять такие функции, как анализ лица в свои проекты. Один из крупных игроков, управляющих этим, – это AWS, их цель – положить машинное обучение в руки каждого разработчика. Для видения они делают это с Amazon Rekognition Анкет

Rekognition позволяет легко добавить анализ изображений и видео в ваши приложения, используя предварительно обученные модели, которые не требуют ноу-хау машинного обучения. Он разблокирует способность идентифицировать объекты, людей, текст и действия в изображениях и видео, а также обнаружение неподходящего контента.

Одной из самых впечатляющих особенностей является очень точное обнаружение лица; Вы можете использовать его для обнаружения, анализа и сравнения лиц для целого ряда вариантов проверки, поведения и общественной безопасности. Этот пост будет сосредоточен на этих функциях обнаружения лица, и я расскажу о некоторых других в будущем.

Итак, начнем!

Чтобы попробовать Rekogniton, вам понадобится, чтобы AWS Account , у команды в AWS отличное руководство по правильному настройке учетной записи с ролями для разработчиков; Если вы начинаете свежо, вам также нужно установить и настроить CLI – Он будет справляться с хранением учетных данных для SDK для использования с Rekognion. Для экспериментов с Rekognition Роль полного доступа Из документов будет работать хорошо, но для чего -либо еще больше придерживаться наименьшее возможное разрешения.

Примеры, описанные в этом посте, должны попасть под AWS Бесплатный уровень Но стоит проверить ценовая страница для любой услуги до начала работы.

Мы будем использовать Python3, поэтому нам понадобится Python AWS SDK, называемый Boto3 , чтобы получить доступ к Rekognition, а также к любым другим услугам AWS,

Во -первых, вам нужно установить Boto3, используя Pip ;

pip install boto3

Затем мы можем импортировать Boto в новый файл Python и настроить клиента, который действует как интерфейс для AWS, чтобы начать использование функциональности обнаружения лица;

import boto3

# Create a Rekognition client
client=boto3.client('rekognition')

После того, как у вас есть клиент, вы можете позвонить Detect_faces Метод с изображением, ответ будет содержать полную партию информации на любых лицах, которые он обнаруживает. Есть два способа загрузить изображения в Rekognition: байтовые массивы и S3.

S3

Путь Чтобы хранить Blobs на AWS – для использования с Rekognition, мы просто указываем ведро и файл, передаем его в повторное познание через нашего клиента и получаем наш ответ.

response = client.detect_faces(
    Image={
         'S3Object':{
             'Bucket':bucket-name,
             'Name':photo-file-name
          }
     }
)

Использование S3 обеспечивает более легкую интеграцию в другие сервисы, а изображения могут быть Загружено на S3 В любом случае, вы обычно.

Байт массив

Мы также можем Отправить изображения Прямо к переоценку как байтовый массив. Вы можете открыть файлы, так как загрузите любой файл в Python, используя встроенные сечения;

client=boto3.client('rekognition')

with open("photo.jpg", 'rb') as image:
    response = client.detect_faces(Image={
        'Bytes': image.read()
     })

Вы также можете попробовать использовать веб -камеры и непосредственно стрелять в изображения в Rekognition, вы можете получить доступ к ним с помощью OpenCV, эта суть показывает, как вы можете использовать свою веб -камеру с помощью Rekognition;

Вариант атрибута

Есть еще один аргумент, который вы можете добавить к запросу; Атрибуты , у вас есть два варианта Все или По умолчанию Анкет По умолчанию Возвращает ограниченную коробку, уверенность, поза, качество и достопримечательности для любых лиц на изображении, так что это Просто обнаруживает лица. Все , берет на себя дольше и возвращает более полную информацию для любых лиц, от По умолчанию и более интересные аспекты, такие как предсказанные эмоции, возраст и пол.

response = client.detect_faces(
    Image={
        'S3Object':{
            'Bucket':bucket-name,
            'Name':photo-file-name
        }
    },
    Attributes=['ALL']
)

После выполнения запроса ответ содержит набор «деталей лица» для каждого лица, которое он обнаруживает на изображении (до 40 лиц). Вот образец Все отклик;

{
   "FaceDetails": [ 
      { 
         "AgeRange": { 
            "High": number,
            "Low": number
         },
         "Beard": { 
            "Confidence": number,
            "Value": boolean
         },
         "BoundingBox": { 
            "Height": number,
            "Left": number,
            "Top": number,
            "Width": number
         },
         "Confidence": number,
         "Emotions": [ 
            { 
               "Confidence": number,
               "Type": "string"
            }
         ],
         "Eyeglasses": { 
            "Confidence": number,
            "Value": boolean
         },
         "EyesOpen": { 
            "Confidence": number,
            "Value": boolean
         },
         "Gender": { 
            "Confidence": number,
            "Value": "string"
         },
         "Landmarks": [ 
            { 
               "Type": "string",
               "X": number,
               "Y": number
            }
         ],
         "MouthOpen": { 
            "Confidence": number,
            "Value": boolean
         },
         "Mustache": { 
            "Confidence": number,
            "Value": boolean
         },
         "Pose": { 
            "Pitch": number,
            "Roll": number,
            "Yaw": number
         },
         "Quality": { 
            "Brightness": number,
            "Sharpness": number
         },
         "Smile": { 
            "Confidence": number,
            "Value": boolean
         },
         "Sunglasses": { 
            "Confidence": number,
            "Value": boolean
         }
      }
   ],
   "OrientationCorrection": "string"
}

Полный разрыв ответа можно найти в Документы Но давайте посмотрим на некоторые из самых интересных аспектов, таких как достопримечательности и эмоции.

Достоинства

Достопримечательности являются координатами для очков на лице, они используются для обнаружения самого лица и являются такими точками, как разные места на носу, глаза и челюсть. Это изображение из документов показывает, где они все на лице:

От AWS Docs

Достопримечательности могут обеспечить другой способ понимания обнаруженных лиц, чтобы вызвать некоторые идеи интересных способов использования достопримечательностей; Вот грубая демонстрация, чтобы выяснить, какой может быть форма лица мужчины;

Nevin243/Face-Shaper

POC, чтобы проверить, можете ли вы использовать резюме, чтобы получить “форма лица”

Данные лица

Детали возвращены с Все Призыв атрибутов может быть действительно полезным, это такие аспекты, как предполагаемый возрастный диапазон, прогнозируемый пол, если у них волосы на лице и если человек носит очки.

Rekognition возвращает дикт, который содержит логический аспект и уверенность в анализе. Вот фрагмент для анализа ответа, чтобы показать дикт для обнаружения очков на лицах на сцене:

for faceDetail in response['FaceDetails']:
    print(faceDetail['Eyeglasses'])

# Example Output
# {'Value': False, 'Confidence': 98.8663558959961}

Обнаружение таких аспектов, как очки или возраст, позволяет нам лучше понять демографию для адаптации услуг во время тестирования или проверки информации о том, кем могут быть наши пользователи!

Эмоции

Одним из наиболее интересных аспектов переоценки является эмоциональный анализ, который он может сделать. Понимание вашего пользователя с другими деталями полезно, но возможность видеть и понимать, как именно они реагируют, может открыть некоторые действительно интересные возможности.

Этот фрагмент анализирует эмоции ответа и отображает их все, уверенность указывает на то, насколько вероятно, что лицо демонстрирует эту эмоцию:

for faceDetail in response['FaceDetails']:
    print('Emotions: \t Confidence\n')
    for emotion in faceDetail['Emotions']:

    print(str(emotion['Type']) + '\t\t' + str(emotion['Confidence']))
    print('\n')

# Sample Output
# Emotions:     Confidence
# HAPPY     0.051588401198387146
# ANGRY     7.0355730056762695
# SAD       0.04484181851148605
# DISGUSTED 0.11442316323518753
# CONFUSED  0.2994600534439087
# FEAR      0.013996988534927368
# CALM      90.5924301147461
# SURPRISED 1.8476886749267578

Это может быть довольно интересно поиграть с попыткой увидеть, что получает «отвратительный» ответ, а не «спокойный» Но это может быть действительно полезно, что возможность даже получить грубое настроение, чтение на кого -то, взаимодействующего с вашим приложением, может быть действительно ценной.

Функции Rekognition намного шире, чем здесь было покрыто, но когда дело доходит до лица, вы можете транслировать картинки с кинезис Пропустите партии изображений или создайте коллекции изображений для образца и анализа. Вы можете использовать Сравните лица Среди этих коллекций данных проверьте, являются ли лица знаменитостями или даже начинают отслеживать движение по изображениям и видео.

Чтобы взять что -либо из этого, вы захотите правильно взглянуть на Документы !

Надеемся, что это показало вам, что при ответственности он может быть фантастическим инструментом и как начать экспериментировать с обнаружением и анализом лица!

Хотите увидеть действительно впечатляющие примеры Rekognition, чтобы проверить? Есть куча в официальных образцах AWS Репо Анкет

Если вы хотите узнать больше об AWS в целом? Отличное место для начала – их сертификаты, вот пост, который я написал после того, как получил свой первый!

Путешествие по Амазонке

Марк Невин ・ 2 марта 4 мин ЧИТАЙТЕ

И не забудьте взглянуть на другие сообщения с тегом AWS:

#AWS

Оригинал: “https://dev.to/m_nevin/facial-analysis-with-python-and-amazon-rekognition-2il9”