Google Cloud Vision APIで画像分析をしてみよう【入門】
画像データをうまく扱う為に今回はGoogle Cloudが提供するVision APIをご紹介いたします。
INDEX
Vision APIとは
Google Cloud Vision APIはGoogle Cloud Platformが提供する機械学習サービスの1つです。 公式での説明は以下のように説明されています。
このサービスを利用するとGoogleが持っている画像に関する機械学習モデルを使って対象の画像から 色々な情報を取得できます。
取得できる情報には以下のようなものがあります。
- 乗り物や動物など、画像に写っているさまざまなカテゴリの物体を検出(ラベル検出)
- 画像内のテキストに対して光学式文字認識(OCR)を実施してテキストを検出、抽出
- 画像内の顔検出
- アダルト コンテンツや暴力的コンテンツなど、画像に含まれる不適切なコンテンツを検出(セーフサーチ検出)
- 画像に含まれる一般的な自然のランドマークや人工建造物を検出(ランドマーク検出)
- 画像に含まれる一般的な商品のロゴを検出
- ドミナント カラーなど、画像の一般的特性を検出(画像プロパティ)
料金について
料金については公式のページをご確認ください。
上記の料金表にある1ユニットという単位の意味は以下の説明がされています。
公式サイトのデモを試してみる
公式ページにファイルをアップロードするだけで試せるデモがあるので試してみます。
「Drag image file here or Browse from your computer」と表示されているエリアに PC上の試してみたい画像をドラッグ&ドロップしてみましょう。
reCAPTCHAが出てくるので「私はロボットではありません」にチェックを入れます。
※Edgeの場合うまく動作しない場合がありました。
チェックを入れると画像がアップされ、解析結果が表示されます。
下記はオブジェクト検出の結果です。お寿司が2貫きちんと認識されていることが分かります。
ラベル検出の結果です。 高い精度でラベル付けされていることがわかります。
ウェブ検出の結果です。 一致する画像のあるサイトURLや、リクエスト中の画像に部分一致または完全一致するウェブ画像を参照するURL、 視覚的に類似している画像を参照するURLなどが表示されています。
画像プロパティの結果が表示されています。
セーフサーチ検出の結果が表示されています。
上記の画像ではかなり精度の高い結果が得られましたが、写真のボケの具合や写っている範囲で 結果はかなり変わってきます。
上記の写真は日本人にとっては明らかにお寿司ですがボケの具合などの要因で先ほどの画像に比べて寿司としての 認識はかなり低くなっているようです。しかしそうは言ってもはっきりした写真であればかなりの高精度で写真が解析されていることがわかります。
Vision APIのデモだけでもウェブ検出の結果などは役に立ちそうです。
実際ににVision APIを利用してみる
今回は入門なので公式のチュートリアルに沿ってラベル検出を試してみたいと思います。
事前にGoogleのアカウントを取得してGoogle Cloud Platformへログインしてください。
上記のページに沿って試していきます。
新しくプロジェクトを作成する
今回は試して終了なのでサンプル用のプロジェクトを作成し、チュートリアルが終ったら プロジェクト毎削除することで無駄な課金が発生しないようにします。
画面左上のロゴの右側のプルダウンをクリックして上記画面を表示します。 「新しいプロジェクト」をクリックします。
プロジェクト名を入力します。今回は「vision-api-sample」としておきます。 「作成」をクリックします。
プロジェクトが出来上がりました。
画面左上のロゴの右側のプルダウンをクリックして「vision-api-sample」に切り替えます。
プロジェクトに対して課金が有効になっていることを確認する
上記ページの内容を行ってプロジェクトの課金を有効な状態にしてください。
有効になると「お支払い」の「概要」では下記のようになります。
Cloud Vision APIを有効にする
管理画面上部の検索エリアに「vision api」と入力すると「Cloud Vision API」が表示されるのでクリックします。
「有効にする」をクリックします。 これでAPIが有効になりました。
認証情報の設定
GCPの管理画面で「サービスアカウントキーの作成」ページに移動します。
ページが表示された状態です。
「サービスアカウント」プルダウンから「新しいサービスアカウント」を選択します。
「サービスアカウント名」に「vision-api-sample」と入力します。
「役割」プルダウンリストで、「プロジェクト」>「オーナー」を選択します。
「作成」をクリックします。
秘密鍵を含むjsonファイルがパソコンにダウンロードされました。
環境変数を設定する
VisionAPIを実行する環境に先ほどのjsonファイルを移動し、環境変数を設定します。 今回筆者はLinux環境で行います。 jsonファイルまでのパスは調整してください。
$ export GOOGLE_APPLICATION_CREDENTIALS="/your-path/vision-api-sample-***.json"
クライアントライブラリをインストールする
今回はPHPから実行します。 プログラムを作成するディレクトリに移動して以下を実行します。
$ composer require google/cloud-vision
ここまででやっとVisionAPIを利用する準備が整いました。
ラベル検出のプログラムを作成
以下のファイル構成で「label-test.php」にプログラムを記述します。
./
../
composer.json
composer.lock
label-test.php
sample-images/
vendor/
vision-api-sample-*****.json
label-test.php(ほぼ公式のサンプルのまま)
require __DIR__ . '/vendor/autoload.php';
use Google\Cloud\Vision\V1\ImageAnnotatorClient;
$imageAnnotator = new ImageAnnotatorClient();
$image = file_get_contents(__DIR__ . '/sample-images/target-file-name');// ここにファイル名
$response = $imageAnnotator->labelDetection($image);
$labels = $response->getLabelAnnotations();
if ($labels) {
echo("Labels:" . PHP_EOL);
foreach ($labels as $label) {
echo($label->getDescription() . PHP_EOL);
}
} else {
echo('No label found' . PHP_EOL);
}
上記プログラムの「target-file-name」にデモで試してたお寿司の画像を指定して実行してみます。
$ php label-test.php
Labels:
Food
Fish slice
Dish
Cuisine
Sashimi
Fish
Ingredient
Crudo
Seafood
Japanese cuisine
デモと同じラベルの結果が表示されました。
APIを設定して使えるようにするまでが多少面倒ではありますが、設定さえしてしまえば10行程度で 画像の分析ができてしまいました。
ラベル以外の分析も公式のサンプルを見れば 簡単に試せると思います。
プロジェクトの削除
今回の内容であれば無料枠の範囲内で十分済んでいるはずですがプロジェクトをそのままにしておいて うっかり課金されてしまうのはまずいのでプロジェクトを削除しておきます。
管理画面の「ホーム」に移動します。
「プロジェクト設定に移動」をクリックします。
「シャットダウン」をクリックします。
「プロジェクトID」今回であれば「vision-api-sample-***」を入力して「シャットダウン」をクリックします。
「OK」をクリックすればプロジェクトの削除処理は完了です。実際に削除されるのは表示された日付になります。
さいごに
今回はGoogle Cloud Vision APIを使って簡単な画像分析を行ってみました。
APIの設定には多少手間はかかるものの、設定さえしてしまえば簡単に使えることが分かったかと思います。 アイデア次第でいろいろなことが出来そうなサービスなので今後のアプリケーション開発に組み込んでみてはいかがでしょうか。
この記事を書いた人
- 創造性を最大限に発揮するとともに、インターネットに代表されるITを活用し、みんなの生活が便利で、豊かで、楽しいものになるようなサービスやコンテンツを考え、創り出し提供しています。
この執筆者の最新記事
関連記事
最新記事
FOLLOW US
最新の情報をお届けします
- facebookでフォロー
- Twitterでフォロー
- Feedlyでフォロー