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を使って、夕方にご自身のスマホで鳥を撮影して、鳥をカウントしてみてはどうでしょうか。
最後まで読んでいただき、ありがとうございます。
また、お会いしましょう。