概要
Amazon Rekognitionでは様々な画像認識機能が提供されます。
今回はLabel Detect、画像からのラベル検出をPythonから実行するスクリプトを紹介します。
ラベル検出では、例えば例えば海辺の写真なら海、岩、灯台、砂浜などのラベルが検出されます。
DetectLabels - Amazon Rekognition
前提条件
Rekognitionを実行できる権限としてAmazonRekognitionFullAccessなどを付けたIAMアカウント、もしくはロールを事前に設定しておきましょう。
スクリプト
Pythonとboto3を使った場合のスクリプト例です。
S3のURLパスを渡す方法と画像ファイルのバイト列を渡す方法があります。今回はバイト列を渡す方法でやってみました。
# -*- coding: utf-8 -*-
import boto3
#boto3のclient作成、rekognitionとリージョンを指定
client = boto3.client('rekognition','us-east-1')
# 画像ファイルを読み込んでバイト列を取得
with open('sample.png', 'rb') as source_image:
source_bytes = source_image.read()
# rekognitionのdetect_labelsにバイト列を渡してラベル検出実行
response = client.detect_labels(
Image={
'Bytes': source_bytes
}
)
# 返ってきたresponseからラベル名(Name)と確度(Confidence)を整形して出力
for label in response['Labels']:
print("{Name:30},{Confidence:.2f}%".format(**label))
処理結果
今回はレスポンスのJSONを整形したので以下のような結果が返ります。ラベルとその確度になります
Beacon ,96.46%
Coast ,76.84%
Nature ,76.84%
Ocean ,76.84%
Outdoors ,76.84%
Sea ,76.84%
Water ,76.84%
Architecture ,51.37%
Building ,51.37%
Lighthouse ,51.37%
Tower ,51.37%
Flora ,50.57%
Grass ,50.57%
Plant ,50.57%