2016.03.08

Googleの新しい機械学習系サービスCloud Vision APIを使ってみた


こんにちは。次世代システム研究室のT.D.Qです。

Googleは2/18に、機械学習の画像認識「Cloud Vision API」の公開ベータを発表しました。「強力な機械学習モデルの能力を活用することで、画像の内容を理解できるアプリケーションの開発を可能にする」サービスです。ベータ中は数量制限がありますが、一人がAPIの各機能は1,000 ユニット/月まで扱えるので、早速Cloud Vision APIの画像認識精度を試してみました。今回のエントリーでCloud Vision APIの検証した結果を紹介したいと思います。

Cloud Vision APIで画像から引き出せる情報


上記の動画でCloud Vision APIが紹介されています。公開ページによってCloud Vision APIを使うことで、以下の種類の画像認識を行えます

種類 API 説明
顔検知 FACE_DETECTION 画像上の複数の顔を検知し、目鼻口の位置、感情、顔の向き(3D)を推測します
物体検知 LABEL_DETECTION 画像上の物体が何かを検知し、ラベルを返します
ロゴ検知 LOGO_DETECTION 画像上の企業ロゴやブランドマークを検知します
ランドマーク検知 LANDMARK_DETECTION 画像上のランドマーク(例えば富士山等)を検知し、ラベルやランドマークの地理的位置を返します
OCR TEXT_DETECTION 多言語対応のOCRを行います
セーフサーチ検知 SAFE_SEARCH_DETECTION 画像にアダルトコンテンツやバイオレントな要素が含まれていないか判定します
画像の属性検知 IMAGE_PROPERTIES 画像の属性(色など)を返します
機能を指定しない TYPE_UNSPECIFIED 機能を指定しない。ただ、これを指定すると結果が得られないことが多い

実装

Cloud Vision APIの利用設定

Google Developers Consoleにアクセスし、以下のステップでAPIの利用設定する
①APIを利用するプロジェクトを作成する。
②Cloud Vision APIを有効にする
※API Managerにアクセスし、「Vision」を検索すると、「Cloud Vision API」を選択できます。
③APIの認証キーを作成する
④お支払い情報を登録し、課金を有効にする
※Cloud Vision APIを利用するには、クレジットカード(またはデビッドカード)を登録し、課金を有効な状態にしなければいけません。また、登録したカードの情報を削除することができない仕様になっていますので、ご注意ください。

詳細な手順はこちらを参照してください。

PHP側の実装

API利用設定し、PHP(Yii2フレームワーク)で簡単な画像認識画面を作ってAPIの結果を確認しました。(Google Cloud PlatformのGithubにJava、Pythonのサンプルコードが公開されています、Java、Pythonの好きな方はご参照ください)
Google Cloud Vision Page 認証したい画像と認識種類を選択し、「画像認証」ボタンを押下すると、画像認証結果が表示されるイメージです。Githubにも公開していますので、良かったらご参照してください。

ソースコードはこちらです

検証

ロゴ検知

早速、GMOインターネットグループのロゴを認識できるか確認したいです
logo_detection ビンゴ!スコアは高くないですが、会社のロゴから「GMO」ロゴとしてちゃんと認識されています。ほかの単語、「integrity(インテグリティ)」は、誠実、真摯、高潔などの概念を意味する言葉。 組織のリーダーやマネジメントに求められる最も重要な資質、価値観を示す表現として、特に欧米の企業社会でよく使われます。すばらしいです。

物体検知(ラベリング)

物体検知するため、部署のMTG写真を使ってみました。
label_detection 「business(ビジネス)」、「conversation(会話)」のスコアが高いということで、ビジネス会話が認識されています!画像から「business executive(管理職という役職の人)」、「course(コース)」、「training(トレーニング)」のラベルも認識され、正しく認識されていることに驚きました。

ランドマーク検知

次にランドマーク認識を試しましょう。平日は毎日渋谷で働いているので、渋谷の画像を入力してみます。
landmark_detection 「Shibuya(渋谷)」がちゃんと認識されていますね。Cloud Vision APIで有名なスポットの画像を認識できることに改めて驚きました。APIの結果から渋谷の位置情報も取得できます。

OCR

画像に写り込んでいる文字情報について、内容を抽出したり言語判定したりすることができます。
ocr_detection_japan
画像から言語(日本語)及び文字列がちゃんと認識されています!素晴らしいですね。

顔検知

次世代システム研究室のMGR2名の写真を使って、顔認識を確認したいです。
face_detection 顔認識APIの結果が一番長いですが、顔の位置(boundingPoly )や顔のパーツ(目、鼻、口)の位置(landmarks)、感情(xxxLikelihood、喜び・悲しみ・怒りなど)を認識できます。今回、APIの結果は”joyLikelihood”: “VERY_LIKELY”ということで、2名とも笑顔で正しく認識されました。

最後に

作った画面でいろいろな画像を選択してCloud Vision APIを試しました。APIで認識できない画像(特にランドマーク検知)がまだありましたが、機械学習による画像認識はここまで正確に、細かく認識できるのは驚きました。REST API を介してアクセスし、個々の画像について複数種類の検知をリクエストできるので、とても便利です。セーフサーチ検知(SAFE_SEARCH_DETECTION)を使うと、特定なサイトから有害画像検出することも簡単に実現できますね。皆さんも是非一度使ってみてください。

次世代システム研究室では、アプリケーション開発や設計を行うアーキテクトを募集しています。アプリケーション開発者の方、次世代システム研究室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ募集職種一覧からご応募をお願いします。

参考リンク

CLOUD VISION API ベータ
Google Cloud Vision API examples
Google Cloud Vision API enters Beta, open to all to try!