サポートされているモデルとスキーマ

オブジェクト拡充を構成するときに、保存されたオブジェクトを分析する ML モデルを選択します。各モデルは、対象となる画像または PDF ドキュメントを評価し、構造化メタデータを Cloud Storage オブジェクトに直接アタッチします。

このページでは、BigQuery または API を介してエンリッチメント メタデータを解析してクエリできるように、サポートされている各モデル、その利用資格要件、出力スキーマについて説明します。

モデルとオブジェクト エンリッチメントの関係

モデルを有効にするには、スキャンするバケットと実行するモデルを指定する機能構成(FeatureConfig)を作成します。非同期処理中、Cloud Storage は選択したモデルを使用して対象となるオブジェクトを評価し、オブジェクト エンリッチメントと呼ばれる構造化 JSON メタデータを生成します。

各モデルは、Cloud Storage が contexts.custom プロパティの下に Google 管理のオブジェクト コンテキストとしてオブジェクトに直接アタッチする専用の JSON ペイロードを生成します。google:annotation: で始まる一意のコンテキスト キーが各ペイロードを識別します。

ワークフローに応じて、このメタデータを次の 2 つの方法で使用できます。

  • 個々のオブジェクトを検査する: viewFullContext メソッド(プレビュー)などのオブジェクト API を使用して、特定のオブジェクトのエンリッチメントを取得します。
  • 大規模な分析: Storage Insights データセットと BigQuery の標準 SQL を使用して、バケット内のすべてのオブジェクトにわたって、拡充されたメタデータをクエリします。

顔検出

face-detector モデルを使用して、保存された画像内の人間の顔を検出します。モデルは、頭全体と個々の顔の境界ポリゴンを検出し、目、鼻、口などの 36 個の顔のランドマークを特定します。また、ロール、パン、チルトなどの頭部の向きの角度を計算し、感情表現の可能性を評価します。

モデルの詳細

  • モデル名: face-detector
  • コンテキスト キー: google:annotation:face-detector-v1
  • 対象となるオブジェクト: 20 MiB 以下の画像オブジェクト。サポートされている Content-Type は BMP、GIF、ICO、JPEG、PNG、TIFF、WEBP です。

出力スキーマ

モデルは、modelName、modelVersion、faceAnnotations の配列を含む faceAnnotationGroup を含む JSON オブジェクトを出力します。モデルの実行が失敗した場合、JSON オブジェクトには faceAnnotationGroup ではなく error オブジェクトが含まれます。

フィールド 種類 範囲 説明
modelName string なし このエンリッチメントを生成した ML モデルの名前。
modelVersion string なし この拡充を生成した ML モデルのバージョン。
faceAnnotationGroup object なし 顔検出エンリッチメントの最上位コンテナ オブジェクト。モデルの実行が成功した場合に存在します。
faceAnnotationGroup.faceAnnotations[] array なし 画像内で検出された顔のリスト。
faceAnnotationGroup.faceAnnotations[].boundingPoly object なし 頭と顔全体を囲む BoundingPoly。元の画像の寸法に合わせてスケーリングされます。
faceAnnotationGroup.faceAnnotations[].faceDetectionBoundingPoly object なし 顔検出用の BoundingPoly。boundingPoly より狭く、皮膚と目に見える顔の特徴のみを囲みます。
faceAnnotationGroup.faceAnnotations[].landmarks[] array なし 特定の顔の特徴を表す、検出された FaceLandmark オブジェクトのリスト。
faceAnnotationGroup.faceAnnotations[].rollAngle number -180 から 180 へ 文字盤の時計回りまたは反時計回りの回転(度単位)。
faceAnnotationGroup.faceAnnotations[].panAngle number -180 から 180 へ 顔が左右を向いている水平方向の角度(度単位)。
faceAnnotationGroup.faceAnnotations[].tiltAngle number -180 から 180 へ 顔が上または下を向いている垂直ピッチ角(度)。
faceAnnotationGroup.faceAnnotations[].detectionConfidence number 0~1(0% ~ 100%) 顔検出全体の信頼スコア。
faceAnnotationGroup.faceAnnotations[].landmarkingConfidence number 0~1(0% ~ 100%) 顔のランドマークの位置の信頼スコア。
faceAnnotationGroup.faceAnnotations[].joyProbability number 0~1(0% ~ 100%) 顔が喜びを表している可能性。
faceAnnotationGroup.faceAnnotations[].sorrowProbability number 0~1(0% ~ 100%) 顔が悲しみを表している可能性。
faceAnnotationGroup.faceAnnotations[].angerProbability number 0~1(0% ~ 100%) 顔が怒りを表している可能性。
faceAnnotationGroup.faceAnnotations[].surpriseProbability number 0~1(0% ~ 100%) 顔が驚きを表している可能性。
faceAnnotationGroup.faceAnnotations[].underExposedProbability number 0~1(0% ~ 100%) 画像内の顔が露出不足である可能性。
faceAnnotationGroup.faceAnnotations[].blurredProbability number 0~1(0% ~ 100%) 画像内の顔がぼやけている可能性。
faceAnnotationGroup.faceAnnotations[].headwearProbability number 0~1(0% ~ 100%) 人物が帽子などのヘッドウェアを着用している可能性。
error object なし code と message を含む google.rpc.Status オブジェクト。モデルの実行が失敗した場合にのみ入力されます。

BoundingPoly

BoundingPoly オブジェクトは、検出された画像特徴を囲む境界ポリゴンを表します。

フィールド 種類 範囲 説明
vertices[] array なし 絶対ピクセル Vertex オブジェクトを使用した境界ポリゴンの座標。
normalizedVertices[] array なし 相対 NormalizedVertex オブジェクトを使用した境界ポリゴンの座標。0 から 1 にスケーリングされます。

Vertex

Vertex オブジェクトは、元の画像サイズにスケーリングされた 2D 座標点を表します。

フィールド 種類 範囲 説明
x integer 0 以上 水平方向の X 座標(左端からのピクセル数)。
y integer 0 以上 垂直方向の Y 座標(上端からのピクセル数)。

NormalizedVertex

NormalizedVertex オブジェクトは、元の画像ディメンションに対する比率として表される 2D 座標点を表します。

フィールド 種類 範囲 説明
x number 0 から 1 へ 画像の幅に対する水平方向の X 座標。0.0 は左端、1.0 は右端です。
y number 0 から 1 へ 画像の高さに対する垂直 Y 座標。0.0 は上端、1.0 は下端です。

FaceLandmark

FaceLandmark オブジェクトは、顔内で検出された特定の顔のランドマークを表します。

フィールド 種類 範囲 説明
type enum ランドマーク タイプをご覧ください。 検出された特定の顔のランドマーク。
position object なし ランドマークの 3D Position。

ランドマークのタイプ

このモデルは、36 個の特定の顔のランドマークを認識します。

  • TYPE_UNSPECIFIED
  • LEFT_EYE
  • RIGHT_EYE
  • LEFT_OF_LEFT_EYEBROW
  • RIGHT_OF_LEFT_EYEBROW
  • LEFT_OF_RIGHT_EYEBROW
  • RIGHT_OF_RIGHT_EYEBROW
  • MIDPOINT_BETWEEN_EYES
  • NOSE_TIP
  • UPPER_LIP
  • LOWER_LIP
  • MOUTH_LEFT
  • MOUTH_RIGHT
  • MOUTH_CENTER
  • NOSE_BOTTOM_RIGHT
  • NOSE_BOTTOM_LEFT
  • NOSE_BOTTOM_CENTER
  • LEFT_EYE_TOP_BOUNDARY
  • LEFT_EYE_RIGHT_CORNER
  • LEFT_EYE_BOTTOM_BOUNDARY
  • LEFT_EYE_LEFT_CORNER
  • RIGHT_EYE_TOP_BOUNDARY
  • RIGHT_EYE_RIGHT_CORNER
  • RIGHT_EYE_BOTTOM_BOUNDARY
  • RIGHT_EYE_LEFT_CORNER
  • LEFT_EYEBROW_UPPER_MIDPOINT
  • RIGHT_EYEBROW_UPPER_MIDPOINT
  • LEFT_EAR_TRAGION
  • RIGHT_EAR_TRAGION
  • LEFT_EYE_PUPIL
  • RIGHT_EYE_PUPIL
  • FOREHEAD_GLABELLA
  • CHIN_GNATHION
  • CHIN_LEFT_GONION
  • CHIN_RIGHT_GONION
  • LEFT_CHEEK_CENTER
  • RIGHT_CHEEK_CENTER

位置

Position オブジェクトは、顔のランドマークの 3D 座標を表します。

フィールド 種類 範囲 説明
x number なし 水平方向の X 座標。
y number なし 垂直方向の Y 座標。
z number なし 顔平面を基準とした奥行き座標。値が小さいほどカメラに近くなります。

出力例

{
  "modelName": "face-detector",
  "modelVersion": "v1",
  "faceAnnotationGroup": {
    "faceAnnotations": [
      {
        "boundingPoly": {
          "vertices": [
            { "x": 1079, "y": 148 },
            { "x": 2152, "y": 148 },
            { "x": 2152, "y": 1396 },
            { "x": 1079, "y": 1396 }
          ],
          "normalizedVertices": [
            { "x": 0.35, "y": 0.12 },
            { "x": 0.70, "y": 0.12 },
            { "x": 0.70, "y": 0.95 },
            { "x": 0.35, "y": 0.95 }
          ]
        },
        "faceDetectionBoundingPoly": {
          "vertices": [
            { "x": 1190, "y": 427 },
            { "x": 2037, "y": 427 },
            { "x": 2037, "y": 1285 },
            { "x": 1190, "y": 1285 }
          ]
        },
        "landmarks": [
          {
            "type": "LEFT_EYE",
            "position": { "x": 1368.8, "y": 737.6, "z": 0.0016 }
          },
          {
            "type": "RIGHT_EYE",
            "position": { "x": 1659.2, "y": 755.1, "z": -116.4 }
          }
        ],
        "rollAngle": 1.959,
        "panAngle": -21.954,
        "tiltAngle": -2.267,
        "detectionConfidence": 0.98,
        "landmarkingConfidence": 0.61,
        "joyProbability": 0.18,
        "headwearProbability": 0.80
      }
    ]
  }
}

オブジェクト検出

object-detector モデルを使用して、画像内の複数の異なるオブジェクトを検出して追跡します。識別されたオブジェクトごとに、モデルはエンティティ名、ナレッジグラフ エンティティ ID(knowledgeGraphId)、信頼スコア、境界座標を提供します。

モデルの詳細

  • モデル名: object-detector
  • コンテキスト キー: google:annotation:object-detector-v1
  • 対象オブジェクト: サポートされている Content-Type(BMP、GIF、ICO、JPEG、PNG、TIFF、WEBP)を持つ 20 MiB 以下のイメージ オブジェクト。

出力スキーマ

モデルは、modelName、modelVersion、objectAnnotations の配列を含む objectAnnotationGroup を含む JSON オブジェクトを出力します。モデルの実行が失敗した場合、JSON オブジェクトには objectAnnotationGroup ではなく error オブジェクトが含まれます。

フィールド 種類 範囲 説明
modelName string なし このエンリッチメントを生成した ML モデルの名前。
modelVersion string なし この拡充を生成した ML モデルのバージョン。
objectAnnotationGroup object なし オブジェクト検出の拡充のための最上位コンテナ オブジェクト。モデルの実行が成功した場合に存在します。
objectAnnotationGroup.objectAnnotations[] array なし 画像内で検出されたオブジェクトのリスト。
objectAnnotationGroup.objectAnnotations[].knowledgeGraphId string なし 検出されたオブジェクトの Google ナレッジグラフ エンティティ ID。
objectAnnotationGroup.objectAnnotations[].name string なし 検出されたオブジェクトの名前またはラベル("Person"、"Chair" など)。
objectAnnotationGroup.objectAnnotations[].score number 0~1(0% ~ 100%) オブジェクト検出の信頼スコア。
objectAnnotationGroup.objectAnnotations[].boundingPoly object なし オブジェクトを囲む BoundingPoly。ピクセル座標(vertices)と正規化された座標(normalizedVertices)が含まれます。
error object なし code と message を含む google.rpc.Status オブジェクト。モデルの実行が失敗した場合にのみ入力されます。

出力例

{
  "modelName": "object-detector",
  "modelVersion": "v1",
  "objectAnnotationGroup": {
    "objectAnnotations": [
      {
        "knowledgeGraphId": "/m/01g317",
        "name": "Person",
        "score": 0.89,
        "boundingPoly": {
          "normalizedVertices": [
            { "x": 0.1, "y": 0.15 },
            { "x": 0.2, "y": 0.15 },
            { "x": 0.2, "y": 0.3 },
            { "x": 0.1, "y": 0.3 }
          ]
        }
      }
    ]
  }
}

一般的な画像のラベル付け

label-detector モデルを使用して、画像の説明ラベル、キーワード、幅広いセマンティック カテゴリを生成します。このモデルは、Landscape、Urban、Night などの一般的なエンティティ、風景、アクティビティ、場所を識別し、ビジュアル アセットを検索可能にしてカタログ化できるようにします。

モデルの詳細

  • モデル名: label-detector
  • コンテキスト キー: google:annotation:label-detector-v1
  • 対象となるオブジェクト: 20 MiB 以下の画像オブジェクト。サポートされている Content-Type は BMP、GIF、ICO、JPEG、PNG、TIFF、WEBP です。

出力スキーマ

モデルは、modelName、modelVersion、labelAnnotations の配列を含む labelAnnotationGroup を含む JSON オブジェクトを出力します。モデルの実行が失敗した場合、JSON オブジェクトには labelAnnotationGroup ではなく error オブジェクトが含まれます。

フィールド 種類 範囲 説明
modelName string なし このエンリッチメントを生成した ML モデルの名前。
modelVersion string なし この拡充を生成した ML モデルのバージョン。
labelAnnotationGroup object なし 画像ラベルの拡充用の最上位コンテナ オブジェクト。モデルの実行が成功した場合に存在します。
labelAnnotationGroup.labelAnnotations[] array なし 検出されたラベルとカテゴリのリスト。
labelAnnotationGroup.labelAnnotations[].knowledgeGraphId string なし ラベルの Google ナレッジグラフ エンティティ ID。
labelAnnotationGroup.labelAnnotations[].description string なし 検出されたエンティティのテキストによる説明またはラベル名。
labelAnnotationGroup.labelAnnotations[].score number 0~1(0% ~ 100%) ラベルの信頼スコア。
labelAnnotationGroup.labelAnnotations[].topicality number 0~1(0% ~ 100%) 画像の主な被写体に対するラベルの関連性。スコアが高いほど、関連性が高いことを示します。
error object なし code と message を含む google.rpc.Status オブジェクト。モデルの実行が失敗した場合にのみ入力されます。

出力例

{
  "modelName": "label-detector",
  "modelVersion": "v1",
  "labelAnnotationGroup": {
    "labelAnnotations": [
      {
        "knowledgeGraphId": "/m/01d74z",
        "description": "Night",
        "score": 0.92,
        "topicality": 0.19
      }
    ]
  }
}

不適切なコンテンツの検出

content-safety モデルを使用して、アップロードされた画像に機密性の高いコンテンツ、露骨なコンテンツ、不適切なコンテンツが含まれていないかスクリーニングします。このモデルは、Google の安全に関するポリシーに照らして画像を評価します。アダルト コンテンツ、暴力的なコンテンツ、その他のデリケートなコンテンツの可能性を評価し、コンテンツ管理ワークフローの自動化を支援します。

モデルの詳細

  • モデル名: content-safety
  • コンテキスト キー: google:annotation:content-safety-v1
  • 対象となるオブジェクト: 20 MiB 以下の画像オブジェクト。サポートされている Content-Type は BMP、GIF、ICO、JPEG、PNG、TIFF、WEBP です。

出力スキーマ

モデルは、modelName、modelVersion、可能性評価を含む contentSafetyAnnotation オブジェクトを含む JSON オブジェクトを出力します。モデルの実行が失敗した場合、JSON オブジェクトには contentSafetyAnnotation ではなく error オブジェクトが含まれます。

フィールド 種類 値 / 範囲 説明
modelName string なし このエンリッチメントを生成した ML モデルの名前。
modelVersion string なし この拡充を生成した ML モデルのバージョン。
contentSafetyAnnotation object なし コンテンツ分析結果の最上位コンテナ オブジェクト。モデルの実行が成功した場合に存在します。
contentSafetyAnnotation.adultContentLikelihood string VERY_UNLIKELY、UNLIKELY、POSSIBLE、LIKELY、VERY_LIKELY 画像にアダルト コンテンツが含まれている可能性。
contentSafetyAnnotation.violentContentLikelihood string VERY_UNLIKELY、UNLIKELY、POSSIBLE、LIKELY、VERY_LIKELY 画像に暴力が描写されている可能性。
error object なし code と message を含む google.rpc.Status オブジェクト。モデルの実行が失敗した場合にのみ入力されます。

出力例

{
  "modelName": "content-safety",
  "modelVersion": "v1",
  "contentSafetyAnnotation": {
    "adultContentLikelihood": "VERY_UNLIKELY",
    "violentContentLikelihood": "UNLIKELY"
  }
}

PDF の分類

pdf-classification モデルを使用して、テキスト構造と視覚構造に基づいて PDF ドキュメントを自動的に分類します。このモデルは、ビジネス、業界、トピックに標準化された階層カテゴリを割り当てます。これらのカテゴリは、大規模なドキュメント コレクションの整理、生成 AI の検索のグラウンディング、ドキュメントの下流ワークフローへの転送に役立ちます。

モデルの詳細

  • モデル名: pdf-classification
  • コンテキスト キー: google:annotation:pdf-classification-v1
  • 対象オブジェクト: Content-Type が application/pdf で、20 MiB 以下の PDF ドキュメント オブジェクト。

出力スキーマ

モデルは、modelName、modelVersion、分類された categories の配列を含む pdfClassificationCategoryList を含む JSON オブジェクトを出力します。モデルの実行が失敗した場合、JSON オブジェクトには pdfClassificationCategoryList ではなく error オブジェクトが含まれます。

フィールド 種類 範囲 説明
modelName string なし このエンリッチメントを生成した ML モデルの名前。
modelVersion string なし この拡充を生成した ML モデルのバージョン。
pdfClassificationCategoryList object なし PDF 分類結果の最上位コンテナ オブジェクト。モデルの実行が成功した場合に存在します。
pdfClassificationCategoryList.categories[] array なし 検出された分類カテゴリのリスト。
pdfClassificationCategoryList.categories[].label string PDF の分類カテゴリをご覧ください。 階層カテゴリパス("/Finance/Accounting & Auditing/Tax Preparation & Planning" など)。
pdfClassificationCategoryList.categories[].score number 0~1(0% ~ 100%) 割り当てられたカテゴリの信頼スコア。
error object なし code と message を含む google.rpc.Status オブジェクト。モデルの実行が失敗した場合にのみ入力されます。

サポート対象のカテゴリ

pdf-classification モデルは、標準化された階層型コンテンツ カテゴリを PDF ドキュメントに割り当てます。

カテゴリは階層構造になっており、スラッシュ(/)でカテゴリの深さを区切ります。最上位の幅広いカテゴリから始まり、特定のサブカテゴリに絞り込まれます。

  • トップレベルの業種: /Finance、/Law & Government、/Computers & Electronics などの幅広いサブジェクト ドメイン。
  • サブカテゴリ: /Finance/Accounting & Auditing/Tax Preparation & Planning など、業種内の特定のサブジェクト。
  • /Other サブカテゴリ: 親カテゴリに一致するが、特定の子サブカテゴリに適合しないコンテンツのカテゴリ。

ドキュメントが複数の異なるトピックをカバーしている場合、モデルは 1 つの PDF オブジェクトに複数の信頼度の高いカテゴリを割り当てることができます。

最上位のカテゴリ

このモデルは、27 個の最上位カテゴリにわたって PDF ドキュメントを分類します。

  • /Adult
  • /Arts & Entertainment
  • /Autos & Vehicles
  • /Beauty & Fitness
  • /Books & Literature
  • /Business & Industrial
  • /Computers & Electronics
  • /Finance
  • /Food & Drink
  • /Games
  • /Health
  • /Hobbies & Leisure
  • /Home & Garden
  • /Internet & Telecom
  • /Jobs & Education
  • /Law & Government
  • /News
  • /Online Communities
  • /People & Society
  • /Pets & Animals
  • /Real Estate
  • /Reference
  • /Science
  • /Sensitive Subjects
  • /Shopping
  • /Sports
  • /Travel & Transportation

サブカテゴリは、これらの最上位カテゴリの下にある階層パス /Top-Level-Vertical/Subcategory に従います。オプションで、より深いレベルを指定することもできます。サポートされているすべてのカテゴリパスの一覧については、PDF 分類カテゴリをご覧ください。

出力例

{
  "modelName": "pdf-classification",
  "modelVersion": "v1",
  "pdfClassificationCategoryList": {
    "categories": [
      {
        "label": "/Finance/Accounting & Auditing/Tax Preparation & Planning",
        "score": 0.85
      },
      {
        "label": "/Business & Industrial/Printing & Publishing/Document & Printing Services",
        "score": 0.25
      }
    ]
  }
}

次のステップ