画像認識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」を選択し、新規作成画面を開く

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

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

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

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

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

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

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

環境情報

タイトル 内容 備考
OS macOS High Sierra バージョン 10.13.2 とりあえずは自分のマシンで実行
言語 Python 2.7.14 とりあえず使ってみたかったpythonで、macにデフォルトで入っていた2.7.10を利用
ライブラリ requests Rest API操作を簡単にするライブラリ
ライブラリ json json操作を簡単にするライブラリ
ライブラリ 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 Vision woman, geisha, kimono, profession, costume, tradition, temple, shimada, girl 全体的に優秀。出てきた単語を日本人の僕が見ても違和感があまりない
2. Amazon Rekognition Human, People, Person, Clown, Performer, Clothing, Gown, Kimono, Robe 無難な感じの解析結果が多く、特徴を掴んでいるとは言えない気がする。あとはClown、Gown、Robeはちょっとイマイチかも
3. Computer Vision API person, 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
この記事を書いた人: 鈴木 鉄兵

大阪でソフトウェア系のエンジニアをやっております。
【仕事】
SIer(東京)→SIer(大阪)→BtoBクラウドサービス→非ITのベンチャー→インターネット企業
【プライベート】
Code for OSAKAhttp://code4.osaka/ )にて実行委員をやっております(遊びに来てください)
・大阪で開催されるハッカソンには積極的に参加中

リスト