Google Cloud Vision API のjsonの階層を調べてみた(人の画像)

この度GCP(Google Cloud Platform)のGoogle Cloud Vision APIのアプリケーション開発において、json型で帰ってくるデータを調べてみた。

<h2>Google Cloud Vision API の階層構成</h2>

※value -> 値
※text -> 文字列

1階層目
responses

2階層目
faceAnnotations
labelAnnotations[3]
safeSearchAnnotation
imagePropertiesAnnotation

3階層目(faceAnnotations)
boundingPoly
fbBoundingPoly
landmarks[34]

rollAngle : [value]
panAngle : [value]
titAngle : [value]
detectionConfidence : [value]
landmarkingConfidence : [value]

joyLikelihood : [text]
sorrowLikelihood : [text]
angerLikelihood : [text]
surpriseLikelihood : [text]
underExposedLikelihood : [text]
blurredLikelihood : [text]
headwearLikelihood : [text]

3階層目(labelAnnotations)
mid : [text]
description : [text]
score : [value]

3階層目(safeSearchAnnotation)
adult : [text]
spoof : [text]
medical : [text]
violence : [text]

3階層目(imagePropertiesAnnotation)
dominantColors


4階層目(boundingPoly, fbBoundingPoly)
vertices

4階層目(landmarks)
type : [text]
position

4階層目(dominantColors)
colors

5階層目(vertices)
x : [value]
~[3][4]y : [value]

5階層目(position)
x : [value]
y : [value]
z : [value]

5階層目(colors)
color[3]
score : [value]
pixelFraction : [value]

6階層目(color)
red : [value]
green : [value]
blue : [value]

*追記*
階層ごとに分けてはいましたが、その説明がなかったので追記します。

<h2>階層ごとの役割</h2>

<h3>第1階層</h3>
1階層目
__responses__
この階層は取得したデータの全てが入ります。
___

<h3>第2階層</h3>
2階層目
__faceAnnotations__
顔検出された時に生成される配列

__labelAnnotations[3]__
画像で読み取ったものが何であるかの判定
ex: person, face ...など

__safeSearchAnnotation__
有害な画像でないかの項目

__imagePropertiesAnnotation__
画像の色解析
___

<h3>第3階層</h3>
3階層目(faceAnnotations)
__boundingPoly__
顔の輪郭を検出

__fbBoundingPoly__
皮膚が含まれる範囲を検出

__landmarks[34]__
顔の各パーツ

__rollAngle : [value]__
顔の傾きを示す。-180 ~ 180の範囲で表される。

__panAngle : [value]__
顔が左右どちらを向いてるかを表す。-180 ~ 180の範囲で表される。

__titAngle : [value]__
顔が上下どちらを向いてるかを表す。-180 ~ 180の範囲で表される。

__detectionConfidence : [value]__
顔検出の精度。0 ~ 1の間で表す。

__landmarkingConfidence : [value]__
顔の各パーツ。0 ~ 1の間で表す。

__joyLikelihood : [text]__
楽しみの度合い

__sorrowLikelihood : [text]__
悲しみの度合い

__angerLikelihood : [text]__
怒りの度合い

__surpriseLikelihood : [text]__
驚きの度合い

__underExposedLikelihood : [text]__
肌の露出の度合い

__blurredLikelihood : [text]__
ぼやけの度合い

__headwearLikelihood : [text]__
何かを被っているかの度合い

3階層目(labelAnnotations)
__mid : [text]__
ナレッジグラフのエンティティID

__description : [text]__
カテゴリ名

__score : [value]__
検出の信頼度

3階層目(safeSearchAnnotation)
__adult : [text]__
アダルトコンテンツの度合い

__spoof : [text]__
パロディ画像の検出

__medical : [text]__
医療要素の度合い。臓器など

__violence : [text]__
暴力性の度合い

3階層目(imagePropertiesAnnotation)
__dominantColors__
画像自体の配色を支配する色
___

<h3>第4階層</h3>
4階層目(boundingPoly, fbBoundingPoly)
__vertices__
範囲を示すポリゴン

4階層目(landmarks)
__type : [text]__
パーツを表すコード

__position__
パーツの位置情報

4階層目(dominantColors)
__colors__
色の情報
___

<h3>第5階層</h3>
5階層目(vertices)
__x : [value]__
画像の左上を基準としたX座標(px)

__~[3][4]y : [value]__
画像の左上を基準としたY座標(px)

5階層目(position)
__x : [value]__
画像の左端から右方向への距離

__y : [value]__
画像の上端から下方向への距離

__z : [value]__
手前、前後の距離

5階層目(colors)
__color[3]__
色情報

__score : [value]__
検出の信頼度。0 ~ 1の間で表す。

__pixelFraction : [value]__
ピクセルの大きさ
___

<h3>第6階層</h3>
6階層目(color)
__red : [value]__
赤色の輝度

__green : [value]__
緑色の輝度

__blue : [value]__
青色の輝度


<h2>データの違い</h2>
上のjsonの階層はimageファイルが人だった時の一覧である。
しかし読み込む<b>データによっては異なる</b>こともあるので注意が必要である。

例 : imageが犬の場合だと

2階層目
<b>ここがなくなる</b> -> //faceAnnotations
labelAnnotations[3]
safeSearchAnnotation
imagePropertiesAnnotation

<h2>感想</h2>
まだ調べ始めではあるがGCPは驚異的だった。写真によっては文字も読み取ることも可能という有能性
これからももっと調べていこうと思っている。