LoginSignup
6
1

More than 5 years have passed since last update.

AWSのRekognitionを利用してSNOWの盛り度を調べてみた

Last updated at Posted at 2017-01-03

AWSのRekognitionを利用してみました。
ざっくりいうと、画像に対し、
1. 顔認識
2. 物体認識
3. 2つの画像の類似度
4. 顔認識で感情等の認識
などができるAPIです。

ただ、それを利用するのも面白みに欠けるので、
SNOWがどれだけ盛っているかを調べてみました。

準備

まずは、AWSのアカウントでテスト用のIAMを作成します。
検証はしていませんが、
- Rekognitionのフルアクセス
- S3のフルアクセス
があれば問題ないかと思います。

APIの利用

sample.rb
# rekognition用のkey, secret
rekognition = Aws::Rekognition::Client.new(
  region: 'us-east-1',
  access_key_id: KEY_ID,
  secret_access_key: SECRET
)

上記コードでアクセスできます。
リージョンは東京では出来ないので要注意。

sample.rb
KEY_ID = ""
SECRET = ""

実際のコードとは違いますが、どこかで上記を定義します。

使った画像

適当にSNOWで2つ撮影しました。

SNOWバージョン

IMG_0929.JPG

no SNOWバージョン

IMG_0930.JPG

この2つの類似度を検出して、SNOWはどれくらい盛っているか調べていきます。

類似度の検出方法

類似度を検出するには次のコードを追記します。

sample.rb
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のドキュメント
を見てみました。
上記ドキュメントでは、

sample.rb
resp = client.compare_faces({
  source_image: { # required
    bytes: "data",
    s3_object: {
      bucket: "S3Bucket",
      name: "S3ObjectName",
      version: "S3ObjectVersion",
    },
  },

となっており、

sample.rb
    bytes: "data",

JSONの中にこんなコードがありますが、これを追加したままだと、

Cannot provide both S3 Location and Image Bytes.

というエラーが出てきたので消しました。

結果

気になる結果は、

"類似度 : 78.0%"

となりました。

まとめると
「『AWS Rekognition』で『SNOWの盛り度』を調べると、『128%増しになる』」
これはトリビアの種でいうと5分咲きくらいにはなりそうですかね。なりませんかね。

補足

今回勝手に
盛り度 = 100%/類似度
と定義しましたが、
Rekognitionで出せるのはあくまで類似度のみなのでその点ご注意を。

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1