前回(1)ではGoogle Cloud Visionで画像認識を試してみました。
今回は、代表的な画像認識APIの1つであるAmazon Rekognitionを使ってGoogle Cloud Visionのときと同じ画像で画像認識を行います。
目次
Amazon Rekognitionについて
Amazon RekognitionはAWSが提供する画像認識APIで以下のような機能を持っています。
- 画像の分析
- 画像内のテキストの読み取り
- 著名人およびランドマークの認識
- ほぼリアルタイムでビデオを分析
- サムネイルの生成
今回は画像の分析「対象物体、シーン、アクティビティ検出」をサクッと使ってみようと思います。
API利用準備
AWSアカウント作成
※既に作成済の場合はスキップしてください
ここにアクセスし、AWSアカウントを作成してください
IAMユーザーを作成
作成したAWSアカウントでIAM Management Consoleにサインイン

「ユーザ」、「ユーザの追加」をクリックし、「ユーザを追加」画面を開く

必要項目を入力して、「次のステップ:アクセス権限」をクリック

※今回は以下の値を入力します。
| 入力項目 | 入力値 | 備考 |
|---|---|---|
| ユーザ名 | Admin | わかりやすいアカウントIDでOKです |
| アクセス種類 | 両方ともOn | 必要なものだけチェックをつけてください |
| コンソールのパスワード | (任意のパスワード) | 自動生成でもカスタムでもどちらでもOKです |
| パスワードのリセットが必要 | Off | 他の人に対して発行する場合はここはOnが望ましいです |
「ユーザーをグループに追加」、「グループの作成」をクリックし、グループの作成ダイアログを開く

「グループ名」に「Admin」と入力後、ポリシー一覧から「AdministratorAccess」を選択し、「グループの作成」ボタンをクリック

作成したグループを選択し、「次のステップ:確認」をクリック

「ユーザの作成」ボタンをクリック

画面に表示される「アクセスキーID」「シークレットアクセスキー」はどこかにメモっておく

AWS Command Line Interface (AWS CLI) を設定
■pipインストール
awscliを簡単にインストールする為に「pip」をインストール
【command】
sudo easy_install pip
バージョン確認
【command】
$ pip -V pip 9.0.2 from /Library/Python/2.7/site-packages (python 2.7)
■awscliインストール
【command】
$ sudo pip install awscli --upgrade --user
バージョン確認
【command】
$ aws --ersion aws-cli/1.14.58 Python/2.7.14 Darwin/17.4.0 botocore/1.9.11
awscliの設定
configコマンドを実行し、アクセスキーID、シークレットアクセスキー、region、output formatを指定します。
aws configure
AWS Access Key ID [None]: ${アクセスキーID}
AWS Secret Access Key [None]: ${シークレットアクセスキー}
Default region name [None]: ap-northeast-1
Default output format [None]: json
※今回は以下の値を入力します。
| 入力項目 | 入力値 | 備考 |
|---|---|---|
| アクセスキーID | ${アクセスキーID} | 本記事で取得したアクセスキーIDを設定 |
| シークレットアクセスキー | ${シークレットアクセスキー} | 本記事で取得したシークレットアクセスキーを設定 |
| region | ap-northeast-1 | Amazon Rekognitionが使えるリージョンであればどこでもOKです |
| output format | json | json、text、tableが指定可能です |
APIを使って画像認識を実現するサンプルPGの作成
環境情報
| タイトル | 内容 | 備考 |
|---|---|---|
| OS | macOS High Sierra バージョン 10.13.2 | とりあえずは自分のマシンで実行 |
| 言語 | Python 2.7.14 | 2.7.14を利用 |
| ライブラリ | boto3 | pythonでAWS APIを触る為のライブラリ |
ライブラリインストール
【command】
$ sudo pip install boto3
ディレクトリ構成
【treed】
. └── getImageDescByAR.py #画像情報を取得
画像情報を取得
同じディレクトリ内のsample.jpgの画像情報を取得
【getImageDescByAR.py】
# -*- coding: utf-8 -*-
import boto3
#boto3のclientを作成し、rekognitionとリージョンを指定
client = boto3.client('rekognition','ap-northeast-1')
# 画像読み込み
img_file_path = 'sample.jpg'
img = open(img_file_path, 'rb')
img_byte = img.read()
# rekognitionのdetect_labelsに画像バイト列を渡してラベル検出
response = client.detect_labels(
Image={
'Bytes': img_byte
}
)
# 返ってきたresponseから画像情報取得
for value in response['Labels']:
print value['Name']
実行コマンド
【command】
$ python getImageDescAR.py
【command】
$ python getImageDescAR.py Human People Person Clown Performer Clothing Gown Kimono Robe Head Jewelry Ornament Tiara Face Female Girl Woman Accessories Crowd Festival Costume
■利用した画像はこちら

使ってみた感想
準備
AWSのサイト上での準備はすぐに終わりましたが、その後のawscliのインストールが面倒で少し手間取りました。
開発
S3上にあるファイルを解析するサンプルは色々見つかったのですが、ローカル環境の画像ファイルをアップロードして解析するサンプルの数が少なく、どういう形式で画像ファイルをアップロードするかをboto3のドキュメントを見ながら試してみたので時間がかかりましたが、なんとか解決できました。
※日本語情報では「base64エンコードが必要」って書いてあるところもあったのですが、実際には不要でした。
ただ、やりかたさえわかってしまえばboto3を使ってすぐに開発することができました。
精度
認識確度順に並んでいるので、当たり前の認識(「Human」「People」とか)が上にきていますが、下の方には
「Kimono」のように画像の特色を表すような単語がでてきています。
ただ、この画像であれば「geisha」は入ってきて欲しかった・・・
- 画像認識API使ってみた(1)Google Cloud Vision
- 画像認識API使ってみた(2)Amazon Rekognition
- 画像認識API使ってみた(3)Microsoft Azure Computer Vision (近日公開予定)


