前回(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 (近日公開予定)