Amazon Rekognition으로 얼굴 인식

Amazon Rekognition을 사용하여 입력한 이미지에 반영된 얼굴을 사각형으로 둘러싸는 기본적인 처리를 시도했습니다.

Amazon Rekognition이란?



Amazon Rekognition은 AWS의 AI 서비스 중 하나로 이미지 인식을 지원합니다.
또, AWS의 AI 서비스는 화상 인식·자연 언어 처리 등 다양한 영역을 커버한 것으로, 기계 학습의 깊은 스킬 없이 기계 학습을 어플리케이션에 포함할 수 있는, 데이터를 준비하는 것만으로 API로부터 기계 학습을 이용할 수 있다 , 같은 특징이 있습니다.

실행 환경



OS: Windows10
언어: Python3.7

사전 준비



AWS CLI(aws configure)에서 다음 자격 증명을 설정합니다.

AWS Access Key ID
AWS Secret Access Key
Default region name
Default output format

소스 코드 (face_detect.py)


import boto3
import sys
from PIL import Image,ImageDraw

# 引数のチェック
if len(sys.argv) != 2:
    print('画像ファイルを引数に指定してください。')
    exit()

# Rekognitionのクライアントを作成
client = boto3.client('rekognition')

# 画像ファイルを引数としてdetect_facesを実行
with open(sys.argv[1],'rb') as image:
    response = client.detect_faces(Image={'Bytes':image.read()},Attributes=['ALL'])

# 顔が認識されない場合は処理終了
if len(response['FaceDetails'])==0:
    print('顔は認識されませんでした。')
else:
    # 入力された画像ファイルを元に、矩形セット用の画像ファイルを作成
    img = Image.open(sys.argv[1])
    imgWidth,imgHeight = img.size
    draw = ImageDraw.Draw(img)

    # 認識された顔の数分、矩形セット処理を行う
    for faceDetail in response['FaceDetails']:

        # BoundingBoxから顔の位置・サイズ情報を取得
        box = faceDetail['BoundingBox']
        left = imgWidth * box['Left']
        top = imgHeight * box['Top']
        width = imgWidth * box['Width']
        height = imgHeight * box['Height']      

        # 矩形の位置・サイズ情報をセット
        points = (
            (left,top),
            (left + width,top + height)
        )

        # 顔を矩形で囲む
        draw.rectangle(points,outline='lime')

    # 画像ファイルを保存
    img.save('detected_' + sys.argv[1])     

    # 画像ファイルを表示
    img.show()

간단한 해설



개략으로서는 이하와 같은 처리를 실시하고 있습니다.

① 프로그램 실행시의 인수로부터 Rekognition에 입력하는 화상 파일을 취득한다.
② 상기 ①의 이미지 파일을 인수로서 Rekognition의 detect_faces를 실행한다.
③Rekognition으로부터 반환되는 Json의 FaceDetails·BoundingBox로부터 인식된 얼굴의 위치·사이즈 정보를 취득한다.
④ 상기 ③에서 직사각형 첨부의 화상 파일을 작성하여 표시한다.

실행 결과



명령



python face_detect.py ichiro1.jpg

입력 이미지 (ichiro1.jpg)





출력 이미지 (detected_ichiro1.jpg)





이치로 선수는 물론, 관객석 사람들도 인식하고 있습니다.

요약



Rekognition에 국한되지는 않지만 AWS의 AI 서비스는 API에서 기계 학습을 손쉽게 이용할 수 있는 편리한 서비스입니다.
또, 이번은 구형 밖에 시험하지 않았습니다만, Rekognition으로부터 반환되는 Json에는 성별·연령 등 다양한 것이 있기 때문에, 그 밖에도 여러가지 것을 시도할 수 있다고 생각합니다.

좋은 웹페이지 즐겨찾기