【AWS入門】AWSの画像認識で、写真内の人数を検出するには【Python】

AWSのAI画像認識(Amazon Rekognition)で、写真内の人数を検出するには、detect_labelsを使用します。

 

画像内の人数を検出するには【Amazon Rekognition】

入力画像・検出画像

例として、次の女性4人の画像を使います。

1つ目が入力画像、2つ目が実際のAmazon Rekognitionの検出結果の画像です。

Pythonサンプル

import boto3

#boto3のclient作成、AWSサービス名とリージョンを指定
client = boto3.client('rekognition','ap-northeast-1')

# 画像ファイルを読み込んでバイト列を取得
with open('女子会4人.jpg', 'rb') as source_image:
    source_bytes = source_image.read()

# AWSへバイト列を渡し、ラベル検出結果を受け取り
response = client.detect_labels(Image={ 'Bytes': source_bytes })

# responseデータで、NameがPersonの場合、物体数を表示
for label in response['Labels']:
    if label['Name'] == 'Person':
        print('人数:' + str(len(label['Instances'])))

画像内の人数を検出するPythonサンプルです。
AWSから検出結果をjsonで受け取り、json内のキーがPersonの場合の物体数を表示することで、実現できます。

実行結果

人数:4

女性4人を、正しくカウントできています。

 

人数検出例(上記のPythonサンプル)

他の画像でも、正しく人数をカウントできるのでしょうか?
実際の実行例を、見てみましょう。

入力画像・検出画像①

実行結果①

人数:11

入力画像の座った子供11人を、正しく検出できています。
人数が増えても、しっかりと検出できていますね!

 

入力画像・検出画像②

実行結果②

人数:18

菅内閣の閣僚25人の写真です。
奥の方の体が隠れている人たちの一部は、検出が難しかった様です。

検出結果は18人と、7人の検出が漏れているものの、そこそこは認識できています。
さらなる精度向上策として、例えば顔検出と組み合わせて人数カウントするなどが、考えられます。

 

入力画像・検出画像③

実行結果③

人数:8

入力画像の8人を、正しく検出できています。
後ろ向きの人たちも、しっかりと検出できています。

 

Pythonサンプル使用の前提

・AWSアカウント作成済み
・AWSキー情報を、自分のPCに初期設定済み

上記の準備の上、ご使用ください。

 

まとめ

Amazon Rekognitionで、画像内の人数を検出する方法をまとめました。
みなさんもAmazon Rekognitionを使って、AI画像認識をご自身のスマホで撮影した写真などでトライしてみてはどうでしょうか。

最後まで読んでいただき、ありがとうございます。
また、お会いしましょう。