AWSのRekognitionを利用してみました。
ざっくりいうと、画像に対し、
- 顔認識
- 物体認識
- 2つの画像の類似度
- 顔認識で感情等の認識
などができるAPIです。
ただ、それを利用するのも面白みに欠けるので、
SNOWがどれだけ盛っているかを調べてみました。
準備
まずは、AWSのアカウントでテスト用のIAMを作成します。
検証はしていませんが、
- Rekognitionのフルアクセス
- S3のフルアクセス
があれば問題ないかと思います。
APIの利用
# rekognition用のkey, secret
rekognition = Aws::Rekognition::Client.new(
region: 'us-east-1',
access_key_id: KEY_ID,
secret_access_key: SECRET
)
上記コードでアクセスできます。
リージョンは東京では出来ないので要注意。
KEY_ID = ""
SECRET = ""
実際のコードとは違いますが、どこかで上記を定義します。
使った画像
適当にSNOWで2つ撮影しました。
SNOWバージョン
### no SNOWバージョンこの2つの類似度を検出して、SNOWはどれくらい盛っているか調べていきます。
類似度の検出方法
類似度を検出するには次のコードを追記します。
resp = rekognition.compare_faces({
source_image: { # required
s3_object: {
bucket: BUCKET,
name: "ファイル名",
version: "適当なversionID",
},
},
target_image: { # required
s3_object: {
bucket: BUCKET,
name: "ファイル名",
version: "適当なversionID",
},
},
similarity_threshold: 1.0,
})
p "類似度 : #{resp.face_matches[0].similarity}%"
これは参考に、
AWS-SDK Rubyのドキュメント
を見てみました。
上記ドキュメントでは、
resp = client.compare_faces({
source_image: { # required
bytes: "data",
s3_object: {
bucket: "S3Bucket",
name: "S3ObjectName",
version: "S3ObjectVersion",
},
},
となっており、
bytes: "data",
JSONの中にこんなコードがありますが、これを追加したままだと、
Cannot provide both S3 Location and Image Bytes.
というエラーが出てきたので消しました。
結果
気になる結果は、
"類似度 : 78.0%"
となりました。
まとめると
「『AWS Rekognition』で『SNOWの盛り度』を調べると、『128%増しになる』」
これはトリビアの種でいうと5分咲きくらいにはなりそうですかね。なりませんかね。
補足
今回勝手に
盛り度 = 100%/類似度
と定義しましたが、
Rekognitionで出せるのはあくまで類似度のみなのでその点ご注意を。