Google Cloud で顔検出ができる

Google Cloud では、画像解析ができる Cloud Vision API が提供されています。

Cloud Vision API は、さらに次の 2 つに分類できます。

  • AutoML Vision
    カスタムオブジェクトの検出を可能とする
    たとえば農作物の品種の違いなど、一般的とは言えない物体の推論にはコチラを利用する
  • Vision API
    顔検出、ロゴ検出など、汎⽤的なオブジェクトの検出が⼿軽に利⽤できる API 群

顔検出機能は後者 Vision API のいち機能です。

顔検出の実例

顔と、目鼻口など各パーツがどのように検出されるか、顔検出を実行し、結果を可視化してみました。

※画像は「ぱくたそ」様より写真をお借りしました。

ぱくたそ
https://www.pakutaso.com/

1 枚目

元画像

1 枚目:「オンリーワンをする甘いマスクの男性の写真素材」のトリム画像
1 枚目:「オンリーワンをする甘いマスクの男性の写真素材」のトリム画像

次で提供されている画像をお借りしました。
顔のアップにしたく、トリミングを施しています。

ぱくたそ
オンリーワンをする甘いマスクの男性の写真素材
https://www.pakutaso.com/20131201359post-3653.html

解析画像

1 枚目:顔検出結果
1 枚目:顔検出結果

赤で記したものが、 Vision API の顔検出データです。

解析データそのものは数値になるのですが、数値を元に線を引いた、というのがこの画像です。

続けてもう一枚を見てみます。

2 枚目

元画像

2 枚目:「健康な肌を大切にする女性(エステ・美容)の写真素材」のトリム画像
2 枚目:「健康な肌を大切にする女性(エステ・美容)の写真素材」のトリム画像

次で提供されている画像をお借りしました。
こちらも顔のアップにするため、トリミングを施しています。

ぱくたそ
健康な肌を大切にする女性(エステ・美容)の写真素材
https://www.pakutaso.com/20150120028post-5107.html

解析画像

2 枚目:顔検出結果
2 枚目:顔検出結果

画像を解析してみた感想

解析画像を眺めてみると、目、瞳孔、顎、眉間、鼻の付け根、鼻の頭、頬など、多数のポイントを拾っていることがわかります。

また、各ポイントも適切な位置で検出されていることが伺えます。
精度高いですね。

ほぼ正面を向いた画像であり、精度が出やすい画像を選んだということもありますけど。

それにしてもな情報を拾えますから、活用するアイデアがあれば、いろいろと遊べそうです。

検出できるランドマーク

もう一点、検出するランドマークの種類を掲載いたします。

ランドマークといいますが、要するに瞳孔や眉間などのポイントを指すものです。


先の解析画像から元写真を取り払い、各ランドマークに連番をつけました。

検出ランドマークと番号
検出ランドマークと番号
番号 名称
01 Left eye
02 Right eye
03 Left of left eyebrow
04 Right of left eyebrow
05 Left of right eyebrow
06 Right of right eyebrow
07 Midpoint between eyes
08 Nose tip
09 Upper lip
10 Lower lip
11 Mouth left
12 Mouth right
13 Mouth center
14 Nose, bottom right
15 Nose, bottom left
16 Nose, bottom center
17 Left eye, top boundary
18 Left eye, right corner
19 Left eye, bottom boundary
20 Left eye, left corner
21 Right eye, top boundary
22 Right eye, right corner
23 Right eye, bottom boundary
24 Right eye, left corner
25 Left eyebrow, upper midpoint
26 Right eyebrow, upper midpoint
27 Left ear tragion
28 Right ear tragion
29 Left eye pupil
30 Right eye pupil
31 Forehead glabella
32 Chin gnathion
33 Chin left gonion
34 Chin right gonion

なお、番号や名称は PHP 版 SDK に含まれる Google\Cloud\Vision\V1\FaceAnnotation\Landmark\Type によるものです。

顔検出の実行手順

Vision API を利用手順をかんたんに紹介します。

  • プロジェククトを⽣成
    Google Cloud アカウントを登録し、プロジェクトを作成します。
    プロジェクトというのはアプリケーションの単位ですね。
    プロジェクトに、インスタンスやアカウントを足していくイメージです。
  • Vision API の有効化
    作成したプロジェクトに Vision API の使用許可をします。
  • サービスアカウントを作成
    Google Cloud 操作用の Google アカウント、というイメージです。
    専用のアカウントを作成して操作権限を渡します。
    単語がちょっと非直感的ですよね。
  • SDK をインストール
    Google Cloud SDK をインストールし、コマンド操作ができるようにします。
    Vision API を利用する場合は必須で、事前に認証情報をロードしなければ通信で弾かれます。
  • 通信用のプログラムを書く
    画像をバイナリを読み込んで API にリクエストする処理を書きます。
    こちらはサンプルがあり、基本コピーで OK です。

結構やることは多いですね。


詳細な手順は、公式のクイックスタートをご覧ください。

Google Cloud
Cloud Vision API > ドキュメント > ガイド > 顔の検出
https://cloud.google.com/vision/docs/detecting-faces?hl=ja

検出結果は JSON

先に掲載した画像は、顔検出のレスポンスデータを元に Canvas で線や点を入れて可視化したものです。
「顔検出の API を通したら、元画像に線が追加されてかえってくる」わけではないため注意してください。

API のレスポンスは次のような JSON です。
※データ量が多いので雰囲気がわかる部分だけにカットしています。

 1{
 2  "responses": [
 3    {
 4      "faceAnnotations": [
 5        {
 6          "boundingPoly": {
 7            "vertices": [
 8              {
 9                "x": 1126,
10                "y": 224
11              },
12              {
13                "x": 2144,
14                "y": 224
15              },
16              {
17                "x": 2144,
18                "y": 1407
19              },
20              {
21                "x": 1126,
22                "y": 1407
23              }
24            ]
25          },
26          "landmarks": [
27            {
28              "type": "LEFT_EYE",
29              "position": {
30                "x": 1380.8185,
31                "y": 743.84045,
32                "z": 0.0021395613
33              }
34            },
35          ]
36        }
37      ]
38    }
39  ]
40}

また、x, y の値は元画像での検出位置です。 ピクセルで示されているため、画像の大きさを変えるとここもずれてきます。

感想:アイデア次第で遊べる

Vision API はOCR やクロップヒント、オブジェクト抽出、色抽出など、複数の API が存在してます。

単体の機能はシンプルですが、マッシュアップすることで複雑で遊びのあるアプリケーションが作れそうな気がします。

また、Vision API の費用はそれほど大きくありません。
1,000 枚までは無料で解析できるため、気軽にお試しができる点も良いですね。


最後に、セットアップはせずに、手持ちの画像を解析してみたい場合、画像をアップロードするだけのおためしアプリケーションが用意されています。

Google Cloud
Cloud Vision API > ドキュメント > ガイド > 試してみましょう
https://cloud.google.com/vision/docs/detecting-faces?hl=ja