画像認識API使ってみた(3)Microsoft Azure Computer Vision API

前々回の記事ではGoogle Cloud Vision、前回は同じ画像を使ってAmazon Rekognitionで画像認識を試してみました。

今回は、代表的な画像認識APIの1つであるMicrosoft Azure Computer Vision APIを使って、同じ画像で画像認識を行います。

また、Google Cloud VisionAmazon Rekognition、Microsoft Azure Computer Visionの3つの画像認識APIを使ってみた感想を最後にまとめています。

目次

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

Computer Vision APIについて

Computer Vision APIはMicrosoft Azureが提供する画像認識APIで以下のような機能を持っています。

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

今回は「画像の分析」をサクッと使ってみようと思います。

API利用準備

Azureアカウント作成

※既に作成済の場合はスキップしてください
ここにアクセスし、Azureアカウントを作成してください

※アカウント作成後1ヶ月間使えるクーポンが付与されますが、1ヶ月経過後は使えなくなるので注意してください。

Computer Vision APIの有効化

作成したAzureアカウントでログインし、ダッシュボードを開く

「リソースの作成」ボタンをクリック後、「AI + Cognitive Services」「Computer Vision API」を選択し、新規作成画面を開く

必要項目を入力して、「作成」をクリック

※今回は以下の値を入力します。

入力項目入力値備考
NametestなんでもOK
サブスクリプション選択肢に表示されているものであればなんでもOKここで選択肢が出てこない場合は支払い情報が登録されていないので、アカウント情報から登録してください
場所東アジアなんでもOK
価格レベルF0回数の制約はありますが、無料で試すことができます
Resource grouptest_groupなんでもOK

再びダッシュボードで「全てのリソース」を選択肢、先程作成した「test」リソースを選択

Overviewsを選択し、画面に表示される「Endpoint」をどこかにメモっておく

Keysを選択し、画面に表示される「NAME」「KEY 1」「KEY 2」をどこかにメモっておく

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

環境情報

タイトル内容備考
OSmacOS High Sierra バージョン 10.13.2とりあえずは自分のマシンで実行
言語Python 2.7.14とりあえず使ってみたかったpythonで、macにデフォルトで入っていた2.7.10を利用
ライブラリrequestsRest API操作を簡単にするライブラリ
ライブラリjsonjson操作を簡単にするライブラリ
ライブラリconfig設定ファイル操作を簡単にするライブラリ

pipインストール

ライブラリを簡単にインストールする為に「pip」をインストール

【command】

sudo easy_install pip

バージョン確認

【command】

 $ pip -V
 pip 9.0.3 from /Users/teppei/.pyenv/versions/2.7.14/lib/python2.7/site-packages (python 2.7)

ライブラリインストール

【command】

$ sudo pip install requests json config

ディレクトリ構成

【tree】

 .
 ├── config.py #各種キー管理
 └── getImageDescByCVA.py #画像情報を取得

各種キーは別ファイルに格納

【config.py】

API_KEY = "**********"

画像情報を取得

同じディレクトリ内のsample.jpgの画像情報を取得

【getImageDescByCVA.py】

# -*- coding: utf-8 -*-
import requests
import json
import config
KEY = config.API_KEY
url = 'https://eastasia.api.cognitive.microsoft.com/vision/v1.0/analyze'
# 画像読み込み
img_file_path = 'sample.jpg'
img = open(img_file_path, 'rb')
img_byte = img.read()
# ヘッダー作成
headers = {'Ocp-Apim-Subscription-Key': KEY, "Content-Type": "application/octet-stream" }
params = {'visualFeatures': 'Categories,Description'}
# リクエスト発行
res = requests.post(url, headers=headers, params=params, data=img_byte)
# リクエストから画像情報取得
res_json = res.json()
tags = res_json['description']['tags']
for value in tags:
    print value

実行コマンド

【command】

 $ python getImageDescByCVA.py

実行結果

画像情報が取得できた!

【command】

$ python getImageDescByCVA.py
person
building
outdoor
woman
standing
holding
wearing
couple
bag
man
dressed
cellphone
people
phone
walking
food
hot
blue
street
hat
old
group
red
luggage
dog
bear
horse
white
stuffed

利用した画像はこちら

使ってみた感想

準備

Azureアカウントを作るところはわかりやすくはないが難しくもないという感じでした。
ただ、アカウントを作った際、クーポンを貰えるのですが、期限が1ヶ月でその間に使い切れないと消えてしまうので注意が必要です。

開発

これも普通のREST APIなので特に迷うことなく簡単に使うことができました。

精度

他の2つと比較してあきらかに存在しないもののが何個か目につくかなっという感想です。
「couple」「man」などは明らかに間違えた解析結果なので、ちょっとまだまだなのかなーと思ってしまいます。

3つの画像認識APIを使ってみた感想

最後に3つ
1. Google Cloud Vision
2. Amazon Rekognition
3. Computer Vision API
の画像認識APIを超主観的にまとめてみようと思います。

開発準備/開発のしやすさ

簡単にまとめてみると、以下のような形で簡単に試してみるという観点では「1. > 2. > 3.」という順位になるかと思います。

API名メリットデメリット
1. Google Cloud Vision準備が楽(GoogleアカウントがあればOK)特に無し
2. Amazon Rekognitionライブラリがあるので簡単にPGが組める他のAWSサービスとの連携前提のサンプルが多く、素で使うには少し調査が必要
3. Computer Vision API特になしアカウント準備が少し複雑(Azureアカウント登録がUIがいまいち)

値段

無料分を含めた各APIの値段をまとめてみると以下のようになります。少しGoogle Cloud Visionが高い気がしますが、誤差の範囲ですかね。

※2018/04/18時点
※詳しくは各APIのサイトを確認してください。ここでの比較はざっくりです。
※Google Cloud Vision: https://cloud.google.com/vision/pricing?hl=ja
※Amazon Rekognition: https://aws.amazon.com/jp/rekognition/pricing/
※Computer Vision API: https://azure.microsoft.com/ja-jp/pricing/details/cognitive-services/computer-vision/

API名無料分1リクエスト毎の値段
1. Google Cloud Vision月に1,000回の解析は無料$1.50(≒¥161)/1,000回の解析
2. Amazon Rekognition月に5,000回の解析は無料$1.30(≒¥139)/1,000回の解析
3. Computer Vision API月に5,000回の解析は無料¥112/1,000回の解析

画像認識精度

画像解析結果をまとめてみると以下のような感じで、この画像には「Google Cloud Vision」があっていたんだろうという感想です。
他の画像だと全く違う結果がでてくるのかは少し気になるところ

API名解析結果考察
1. Google Cloud Visionwoman, geisha, kimono, profession, costume, tradition, temple, shimada, girl全体的に優秀。出てきた単語を日本人の僕が見ても違和感があまりない
2. Amazon RekognitionHuman, People, Person, Clown, Performer, Clothing, Gown, Kimono, Robe無難な感じの解析結果が多く、特徴を掴んでいるとは言えない気がする。あとはClown、Gown、Robeはちょっとイマイチかも
3. Computer Vision APIperson, building, outdoor, woman, standing, holding, wearing, couple, bagこちらも無難な感じの解析結果が多い。あとstanding,holding,wearingなどの状態を表す単語が多い。coupleはどうだろう
  1. 画像認識API使ってみた(1)Google Cloud Vision
  2. 画像認識API使ってみた(2)Amazon Rekognition
  3. 画像認識API使ってみた(3)Microsoft Azure Computer Vision