🍻
AmazonRekognitionをSDK(Ruby)から使う方法
はじめに
今回のゴール
この3枚の画像の中で一番「これぞビール!!」な画像はどれなのかをAmazonRekognitionに判定してもらいます。
beer1.jpg
beer2.jpg
beer3.jpg
前提
- AWSにアカウントがあること
- ruby 2.7.1
- macOS BigSurバージョン11.6.5
ハンズオン
S3にBucketを作成し、画像をアップロード
今回は「test-rekognition0718」というBucketを作成し、「beer1.jpg」「beer2.jpg」「beer3.jpg」の画像をアップロード
AWSCLIを設定
参考記事
設定が終わったあとのconfigとcredentialsは以下のような形です
~/.aws/config
[default]
region = ap-northeast-1
output = json
~/.aws/credentials
[default]
aws_access_key_id = AWS_ACCESS_KEY_ID
aws_secret_access_key = AWS_SECRET_ACCESS_KEY
プロジェクト作成
今回は雑にrekognition0718ディレクトを作成
mkdir rekognition0718 && cd rekognition0718
SDKをインストール
bundlerをインストール
$ gem install bundler
Gemfileを作成
$ vim Gemfile
↓
source 'https://rubygems.org'
gem 'aws-sdk'
インストール
$ bundle install
SDKでAmazonRekognitionを使う
実行
AmazonRekognitionを使うファイルを作成
$ vim rekognition.rb
↓
require "aws-sdk"
rekognition = Aws::Rekognition::Client.new(region: "ap-northeast-1")
BUCKET_NAME = "test-rekognition0718"
BEER1_IMAGE_NAME = "beer1.jpg"
BEER2_IMAGE_NAME = "beer2.jpg"
BEER3_IMAGE_NAME = "beer3.jpg"
# S3 URI
# s3://test-rekognition0718/beer1.jpg
result_beer1 = rekognition.detect_labels({
image: {
s3_object: {
bucket: BUCKET_NAME,
name: BEER1_IMAGE_NAME
},
}
})
result_beer1.labels.each do |label|
puts("#{label.name} #{label.confidence} %")
end
puts ""
# S3 URI
# s3://test-rekognition0718/beer2.jpg
result_beer2 = rekognition.detect_labels({
image: {
s3_object: {
bucket: BUCKET_NAME,
name: BEER2_IMAGE_NAME
},
}
})
result_beer2.labels.each do |label|
puts("#{label.name} #{label.confidence} %")
end
puts ""
# S3 URI
# s3://test-rekognition0718/beer3.jpg
result_beer3 = rekognition.detect_labels({
image: {
s3_object: {
bucket: BUCKET_NAME,
name: BEER3_IMAGE_NAME
},
}
})
result_beer3.labels.each do |label|
puts("#{label.name} #{label.confidence} %")
end
実行
$ ruby rekognition.rb
結果
Person 97.69644927978516 %
Human 97.69644927978516 %
Glass 96.4124526977539 %
Beverage 94.60195922851562 %
Drink 94.60195922851562 %
Beer Glass 87.98907470703125 %
Alcohol 87.98907470703125 %
Beer 87.98907470703125 %
Coffee Cup 77.27938079833984 %
Cup 77.27938079833984 %
Sink Faucet 76.57266235351562 %
Computer Keyboard 68.21126556396484 %
Electronics 68.21126556396484 %
Computer 68.21126556396484 %
Hardware 68.21126556396484 %
Keyboard 68.21126556396484 %
Computer Hardware 68.21126556396484 %
Worker 62.57150650024414 %
Bartender 55.46221923828125 %
Stein 98.33676147460938 %
Jug 98.33676147460938 %
Alcohol 93.84426879882812 %
Beverage 93.84426879882812 %
Drink 93.84426879882812 %
Beer 92.31675720214844 %
Glass 91.3091049194336 %
Lager 75.81610107421875 %
Beer Glass 69.35620880126953 %
Lamp 61.064876556396484 %
Beer Glass 99.35428619384766 %
Glass 99.35428619384766 %
Beer 99.35428619384766 %
Alcohol 99.35428619384766 %
Beverage 99.35428619384766 %
Drink 99.35428619384766 %
Person 93.45838928222656 %
Human 93.45838928222656 %
Finger 79.82481384277344 %
Lager 75.76312255859375 %
Thumbs Up 57.1778564453125 %
Goblet 56.57130432128906 %
必要なところを抽出
beer3.jpg | beer2.jpg | beer3.jpg | |
---|---|---|---|
Beer | 87.98907470703125 | 92.31675720214844 | 99.35428619384766 |
ということで、一番「これぞビール!!」な画像はこれでした。
beer3.jpg
おわり
ビールが飲みたくなりました。
今回は、初歩的な実験だったので、今度は実際にアプリに組み込んでみると楽しいかも!
Discussion