AWSのAI画像認識で、鳥をカウントするには【Python】

AWSのAI画像認識(Amazon Rekognition)で、写真内の鳥をカウントするには、detect_labelsを使用します。
具体的には、ラベル検出のレスポンスで、ラベル名「Bird」の実体(Instances)の数をピックアップします。

写真内の鳥をカウントするには【Amazon Rekognition】

入力画像・検出画像

例として、次の鳥11匹の写真を使用します。
AmazonのAIは、正しく鳥をカウントできるでしょうか?

2枚目が実際の検出結果の画像です。
鳥を正しく検出できていますね!

Pythonサンプル

以下は実際に、入力写真から鳥をカウントするPythonサンプルです。

import boto3

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

# 画像ファイルを読み込んでバイト列を取得
with open('./鳥の写真c.jpg', 'rb') as source_image:
    source_bytes = source_image.read()

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

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

鳥をカウントするには、AWSのラベル検出のレスポンスにて、ラベル名がBirdの実体(Instances)の数を取得すれば良いです。
上記のPythonを実行すると、次の結果になります。

実行結果

鳥の数: 11

11匹の鳥を、正しくカウントできています。

 

他の鳥写真のカウント例

では他の画像でも、正しく鳥をカウントできるのか、気になりますよね?
実際の検出例を、見てみましょう。

入力画像・検出画像①

大空の50匹の鳥の群れです。
こちらの鳥を、AWSのAIはカウントできるでしょうか。

実行結果①

鳥の数: 50

鳥の数:50匹と、正しく検出できています。
ただ写真中央で、重なっている2匹を1匹とカウントしてしまっています。
一方で、中央やや右下で、鳥1匹を2匹とカウントしてしまっています。

とはいえ、細かな誤差はあるものの、ほぼ正しくカウントできていると思います。

入力画像・検出画像②

こちらは12匹の鳥の群れです。

実行結果②

鳥の数: 16

鳥の数:16匹と、4匹多くカウントされています。

AWSのAIの場合、3割ぐらいハズレることもあるようですね。
とはいえ、大まかな数の傾向は検出できていると思います。

 

Pythonサンプル使用の前提

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

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

 

まとめ

Amazon Rekognitionで、写真内の鳥をカウントする方法をまとめました。
みなさんもAmazonのAIを使って、夕方にご自身のスマホで鳥を撮影して、鳥をカウントしてみてはどうでしょうか。

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

 

【もくじ】AmazonやGoogleのAIサービス・逆引きリファレンス