前々回の記事ではGoogle Cloud Vision、前回は同じ画像を使ってAmazon Rekognitionで画像認識を試してみました。
今回は、代表的な画像認識APIの1つであるMicrosoft Azure Computer Vision APIを使って、同じ画像で画像認識を行います。
また、Google Cloud Vision、Amazon Rekognition、Microsoft Azure Computer Visionの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はどうだろう |