【Cloud Vision API】顔の検出を触ってみる

こんにちは!AMDlabの掛田です。
今回はGoogle Cloudが提供するCloud Vision APIの一部の機能である顔の検出を触っていきます。

顔の検出は画像から人を検出し、感情に関する情報を解析できる機能です。

感情は可能性を表す以下の種類が返されます。

  • UNKNOWN
  • VERY UNLIKELY
  • UNLIKELY
  • POSSIBLE
  • LIKELY
  • VERY LIKELY

Cloud Vision APIを利用するために必要なこと

今回の記事では細かい下準備は省略しますが、ザッと以下の手順が必要になります。

  • Google Cloudでプロジェクトの作成
  • 作成したプロジェクトでCloud Vision APIの有効化
  • 請求先情報の登録(無料で使用できる範囲を超えた場合の請求先情報)
  • サービスアカウントの作成
  • 秘密鍵の作成

Cloud Vision APIの料金ページには以下のように記載されており、少し使う程度なら無料で利用できそうですね。

課金は画像ごとに発生します。PDF ファイルなど、ファイルに複数のページがある場合、各ページがそれぞれ個別の画像として扱われます。

画像に対して適用される機能は、それぞれが請求対象となる「ユニット」です。たとえば、1 つの画像に対して顔検出とラベル検出を適用した場合、1 ユニットのラベル検出と 1 ユニットの顔検出に対して料金が請求されます。

以下の表は、各機能の 1,000 ユニット単位の料金を示しています。段階的料金体系となっており、毎月最初の 1,000 ユニットについては無料で、1,001~5,000,000 ユニット、およびそれ以上のユニットについては下記のように請求される仕組みになっています。

 

引用元: https://cloud.google.com/vision/pricing/

秘密鍵の作成

サービスアカウントを作成したら、APIとサービス画面に表示されるメールアドレス(画像では黒で塗りつぶしてる箇所)をクリック。

タブの「キー」をクリックし、「鍵を追加」>「新しい鍵を作成」を選択。

秘密鍵の形式を選択できるのでJSONを選択。

作成すると、自動的にお使いのパソコンにJSONファイルが保存されるので、コマンドで以下を実行します。

実際に触ってみる

今回はパソコンに保存されている画像のパスを.envファイルに記述し、プログラムから取得して使用します。

.env

 

コマンドで以下を実行し、必要なライブラリをインストールします。

 

こちらのリンクに公式のサンプルコードがあるので、Pythonのコードを使用します。

.envから情報を取得する記述は自分で書いています。

コード

 

解析の対象とする画像

こちらのサービスでダウンロードできる画像を対象とします。

まず一枚目のネコの画像の方から。

実行結果

プログラム的にはFaces:の後ろに感情に関する情報が出力されるはずですが、ネコしか写っていないのでそもそも人が検出できなかったということですね。

 

それでは、二枚目の人が写っている画像で試してみます。

実行結果

二人分の感情と座標の情報が出力されました。

公式チュートリアルによると、この座標は顔を囲むための座標のようです。

二人のうちどちらの情報か分からないので、座標を使用して元画像の顔を囲ってみます。

顔を囲った画像を保存して、同階層に感情の情報を書き込んだJSONファイルを保存します。

画像を操作するために下記のコマンドでライブラリをインストールします。

顔を囲って画像を書き出すプログラム自体は先程の公式チュートリアルにあるので、それを使用します。

修正後のコード

実行結果

出力された画像と感情のJSONファイル

 

男性の方はsurpriseがVERY_LIKELYなので画像の通りとてもビックリしてますね。

これで感情の情報が二人のうちどちらのものか分かるようになりました。

今回触ったのはCloud Vision APIの顔の検出のみですが、

画像やPDFからテキストを検出できたりと他にも機能があるので試してみたいですね。

Tech
API python
ARTICLES