画像認識API使ってみた(2)Amazon Rekognition

前回(1)ではGoogle Cloud Visionで画像認識を試してみました。

今回は、代表的な画像認識APIの1つであるAmazon Rekognitionを使ってGoogle Cloud Visionのときと同じ画像で画像認識を行います。

目次

  1. Amazon Rekognitionについて
  2. API利用準備
  3. APIを使って画像認識を実現するサンプルPGの作成
  4. 使ってみた感想

Amazon Rekognitionについて

Amazon RekognitionはAWSが提供する画像認識APIで以下のような機能を持っています。

https://aws.amazon.com/jp/rekognition/
  • 画像の分析
  • 画像内のテキストの読み取り
  • 著名人およびランドマークの認識
  • ほぼリアルタイムでビデオを分析
  • サムネイルの生成

今回は画像の分析「対象物体、シーン、アクティビティ検出」をサクッと使ってみようと思います。

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を設定
シークレットアクセスキー${シークレットアクセスキー}本記事で取得したシークレットアクセスキーを設定
regionap-northeast-1Amazon Rekognitionが使えるリージョンであればどこでもOKです
output formatjsonjson、text、tableが指定可能です

APIを使って画像認識を実現するサンプルPGの作成

環境情報

タイトル内容備考
OSmacOS High Sierra バージョン 10.13.2とりあえずは自分のマシンで実行
言語Python 2.7.142.7.14を利用
ライブラリboto3pythonで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」は入ってきて欲しかった・・・

  1. 画像認識API使ってみた(1)Google Cloud Vision
  2. 画像認識API使ってみた(2)Amazon Rekognition
  3. 画像認識API使ってみた(3)Microsoft Azure Computer Vision (近日公開予定)