分類用の画像トレーニング データを準備する

このページでは、Vertex AI データセットで使用する画像トレーニング データを準備して、画像分類モデルをトレーニングする方法について説明します。

次の目標セクションには、データ要件、入出力スキーマ ファイル、スキーマによって定義されるデータ インポート ファイル(JSON Lines と CSV)の形式に関する情報が含まれています。

単一ラベル分類

データ要件

  • トレーニング データ: モデルをトレーニングするときにサポートされる画像形式は次のとおりです。Vertex AI API は、インポートした画像を前処理して、モデルのトレーニングに使用するデータとして使用します。ファイルの最大サイズは 30 MB です。
    • JPEG
    • GIF
    • PNG
    • BMP
    • ICO
  • 予測データ: モデルから予測(クエリ)をリクエストする場合、次の画像形式がサポートされます。最大ファイルサイズは 1.5 MB です。
    • JPEG
    • GIF
    • PNG
    • WEBP
    • BMP
    • TIFF
    • ICO

    AutoML モデルのトレーニングに使用する画像データに関するベスト プラクティス

    以下のベスト プラクティスは、AutoML を使用してモデルをトレーニングするデータセットに適用されます。

  • AutoML モデルは、現実世界にある物体の写真に対して最も効果的に動作します。
  • トレーニング用のデータは、予測を行うデータにできる限り近いものである必要があります。たとえば、ユースケースに低解像度のぼやけた画像(セキュリティ カメラの画像など)が含まれている場合、トレーニング用のデータも低解像度でぼやけた画像から構成する必要があります。一般に、複数の視点、解像度、背景を持つトレーニング画像を用意することも検討します。
  • 一般的に、Vertex AI モデルは、人間が割り当てることができないラベルを予測することはできません。そのため、画像を 1~2 秒間見てラベルを割り当てるように人間をトレーニングすることができなければ、モデルもそのようにトレーニングすることはできません。
  • ラベルごとに約 1,000 個のトレーニング画像をおすすめします。ラベルあたりの最小数は 10 です。一般的に、画像ごとに複数のラベルを使用してモデルをトレーニングする場合は、各ラベルにより多くのサンプルが必要になります。また、結果として得られるスコアは、より解釈が難しくなります。
  • モデルは、最も一般的なラベルの画像数が、最も一般的でないラベルの画像数よりも最大で 100 倍存在する場合に最適に動作します。非常に低い頻度のラベルは削除することをおすすめします。
  • None_of_the_above ラベルと、定義されたラベルのいずれとも一致しない画像を含めることを検討してください。たとえば、花のデータセットの場合、ラベルが付けられた品種以外の花の画像を含め、それらに None_of_the_above のラベルを付けます。

YAML スキーマ ファイル

単一ラベルの画像分類アノテーションをインポートするには、一般公開されている次のスキーマ ファイルを使用します。このスキーマ ファイルにより、データ入力ファイルの形式が決まります。このファイルの構造は OpenAPI スキーマに準拠しています。

gs://google-cloud-aiplatform/schema/dataset/ioformat/image_classification_single_label_io_format_1.0.0.yaml

完全なスキーマ ファイル

title: ImageClassificationSingleLabel
description: >
 Import and export format for importing/exporting images together with
 single-label classification annotation. Can be used in
 Dataset.import_schema_uri field.
type: object
required:
- imageGcsUri
properties:
 imageGcsUri:
   type: string
   description: >
     A Cloud Storage URI pointing to an image. Up to 30MB in size.
     Supported file mime types: `image/jpeg`, `image/gif`, `image/png`,
     `image/webp`, `image/bmp`, `image/tiff`, `image/vnd.microsoft.icon`.
 classificationAnnotation:
   type: object
   description: Single classification Annotation on the image.
   properties:
     displayName:
       type: string
       description: >
         It will be imported as/exported from AnnotationSpec's display name,
         i.e. the name of the label/class.
     annotationResourceLabels:
       description: Resource labels on the Annotation.
       type: object
       additionalProperties:
         type: string
 dataItemResourceLabels:
   description: Resource labels on the DataItem.
   type: object
   additionalProperties:
     type: string

入力ファイル

JSON Lines

各行の JSON:



{
  "imageGcsUri": "gs://bucket/filename.ext",
  "classificationAnnotation": {
    "displayName": "LABEL",
    "annotationResourceLabels": {
        "aiplatform.googleapis.com/annotation_set_name": "displayName",
        "env": "prod"
      }
   },
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training/test/validation"
  }
}

フィールドに関する注意事項:

  • imageGcsUri - 必須フィールドです。
  • annotationResourceLabels - 任意の数の Key-Value の文字列ペアを含めることができます。システム予約の Key-Value ペアは次のとおりです。
    • "aiplatform.googleapis.com/annotation_set_name" : "value"

    value は、データセット内の既存のアノテーション セットの表示名の 1 つです。

  • dataItemResourceLabels - 任意の数の Key-Value の文字列ペアを含めることができます。システム予約の Key-Value ペアは次のとおりです。これにより、機械学習が使用するデータ項目のセットが指定されます。
    • "aiplatform.googleapis.com/ml_use" : "training/test/validation"

JSON Lines の例 - image_classification_single_label.jsonl:



{"imageGcsUri": "gs://bucket/filename1.jpeg",  "classificationAnnotation": {"displayName": "daisy"}, "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "test"}}
{"imageGcsUri": "gs://bucket/filename2.gif",  "classificationAnnotation": {"displayName": "dandelion"}, "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename3.png",  "classificationAnnotation": {"displayName": "roses"}, "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename4.bmp",  "classificationAnnotation": {"displayName": "sunflowers"}, "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename5.tiff",  "classificationAnnotation": {"displayName": "tulips"}, "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "validation"}}
...

CSV

CSV 形式:

[ML_USE],GCS_FILE_PATH,[LABEL]
列のリスト
  • ML_USE(省略可) - モデルをトレーニングする場合のデータ分割に使用します。TRAINING、TEST、または VALIDATION を使用します。手動データ分割の詳細については、AutoML モデルのデータ分割についてをご覧ください。
  • GCS_FILE_PATH - このフィールドには、画像の Cloud Storage URI が含まれます。Cloud Storage URI では大文字と小文字が区別されます。
  • LABEL(省略可) - ラベルは文字で始まり、文字、数字、アンダースコア以外を含まないようにする必要があります。

CSV の例 - image_classification_single_label.csv:

test,gs://bucket/filename1.jpeg,daisy
training,gs://bucket/filename2.gif,dandelion
gs://bucket/filename3.png
gs://bucket/filename4.bmp,sunflowers
validation,gs://bucket/filename5.tiff,tulips
...
    

マルチラベル分類

データ要件

  • トレーニング データ: モデルをトレーニングするときにサポートされる画像形式は次のとおりです。Vertex AI API は、インポートした画像を前処理して、モデルのトレーニングに使用するデータとして使用します。ファイルの最大サイズは 30 MB です。
    • JPEG
    • GIF
    • PNG
    • BMP
    • ICO
  • 予測データ: モデルから予測(クエリ)をリクエストする場合、次の画像形式がサポートされます。最大ファイルサイズは 1.5 MB です。
    • JPEG
    • GIF
    • PNG
    • WEBP
    • BMP
    • TIFF
    • ICO

    AutoML モデルのトレーニングに使用する画像データに関するベスト プラクティス

    以下のベスト プラクティスは、AutoML を使用してモデルをトレーニングするデータセットに適用されます。

  • AutoML モデルは、現実世界にある物体の写真に対して最も効果的に動作します。
  • トレーニング用のデータは、予測を行うデータにできる限り近いものである必要があります。たとえば、ユースケースに低解像度のぼやけた画像(セキュリティ カメラの画像など)が含まれている場合、トレーニング用のデータも低解像度でぼやけた画像から構成する必要があります。一般に、複数の視点、解像度、背景を持つトレーニング画像を用意することも検討します。
  • 一般的に、Vertex AI モデルは、人間が割り当てることができないラベルを予測することはできません。そのため、画像を 1~2 秒間見てラベルを割り当てるように人間をトレーニングすることができなければ、モデルもそのようにトレーニングすることはできません。
  • ラベルごとに約 1,000 個のトレーニング画像をおすすめします。ラベルあたりの最小数は 10 です。一般的に、画像ごとに複数のラベルを使用してモデルをトレーニングする場合は、各ラベルにより多くのサンプルが必要になります。また、結果として得られるスコアは、より解釈が難しくなります。
  • モデルは、最も一般的なラベルの画像数が、最も一般的でないラベルの画像数よりも最大で 100 倍存在する場合に最適に動作します。非常に低い頻度のラベルは削除することをおすすめします。
  • None_of_the_above ラベルと、定義されたラベルのいずれとも一致しない画像を含めることを検討してください。たとえば、花のデータセットの場合、ラベルが付けられた品種以外の花の画像を含め、それらに None_of_the_above のラベルを付けます。

YAML スキーマ ファイル

マルチラベルの画像分類アノテーションをインポートするには、一般公開されている次のスキーマ ファイルを使用します。このスキーマ ファイルにより、データ入力ファイルの形式が決まります。このファイルの構造は OpenAPI スキーマに準拠しています。

gs://google-cloud-aiplatform/schema/dataset/ioformat/image_classification_multi_label_io_format_1.0.0.yaml

完全なスキーマ ファイル

title: ImageClassificationMultiLabel
description: >
 Import and export format for importing/exporting images together with
 multi-label classification annotations. Can be used in
 Dataset.import_schema_uri field.
type: object
required:
- imageGcsUri
properties:
 imageGcsUri:
   type: string
   description: >
     A Cloud Storage URI pointing to an image. Up to 30MB in size.
     Supported file mime types: `image/jpeg`, `image/gif`, `image/png`,
     `image/webp`, `image/bmp`, `image/tiff`, `image/vnd.microsoft.icon`.
 classificationAnnotations:
   type: array
   description: Multiple classification Annotations on the image.
   items:
     type: object
     description: Classification annotation.
     properties:
       displayName:
         type: string
         description: >
           It will be imported as/exported from AnnotationSpec's display name,
           i.e. the name of the label/class.
       annotationResourceLabels:
         description: Resource labels on the Annotation.
         type: object
         additionalProperties:
           type: string
 dataItemResourceLabels:
   description: Resource labels on the DataItem.
   type: object
   additionalProperties:
     type: string

入力ファイル

JSON Lines

各行の JSON:


{
  "imageGcsUri": "gs://bucket/filename.ext",
  "classificationAnnotations": [
    {
      "displayName": "LABEL1",
      "annotationResourceLabels": {
        "aiplatform.googleapis.com/annotation_set_name":"displayName",
        "label_type": "flower_type"
      }
    },
    {
      "displayName": "LABEL2",
      "annotationResourceLabels": {
        "aiplatform.googleapis.com/annotation_set_name":"displayName",
        "label_type": "image_shot_type"
      }
    }
  ],
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training/test/validation"
  }
}

フィールドに関する注意事項:

  • imageGcsUri - 必須フィールドです。
  • annotationResourceLabels - 任意の数の Key-Value の文字列ペアを含めることができます。システム予約の Key-Value ペアは次のとおりです。
    • "aiplatform.googleapis.com/annotation_set_name" : "value"

    value は、データセット内の既存のアノテーション セットの表示名の 1 つです。

  • dataItemResourceLabels - 任意の数の Key-Value の文字列ペアを含めることができます。システム予約の Key-Value ペアは次のとおりです。これにより、機械学習が使用するデータ項目のセットが指定されます。
    • "aiplatform.googleapis.com/ml_use" : "training/test/validation"

JSON Lines の例 - image_classification_multi_label.jsonl:



{"imageGcsUri": "gs://bucket/filename1.jpeg",  "classificationAnnotations": [{"displayName": "daisy"}, {"displayName": "full_shot"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "test"}}
{"imageGcsUri": "gs://bucket/filename2.gif",  "classificationAnnotations": [{"displayName": "dandelion"}, {"displayName": "medium_shot"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename3.png",  "classificationAnnotations": [{"displayName": "roses"}, {"displayName": "extreme_closeup"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename4.bmp",  "classificationAnnotations": [{"displayName": "sunflowers"}, {"displayName": "closeup"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename5.tiff",  "classificationAnnotations": [{"displayName": "tulips"}, {"displayName": "extreme_closeup"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "validation"}}
...

CSV

CSV 形式:

[ML_USE],GCS_FILE_PATH,[LABEL1,LABEL2,...LABELn]
列のリスト
  • ML_USE(省略可) - モデルをトレーニングする場合のデータ分割に使用します。TRAINING、TEST、または VALIDATION を使用します。手動データ分割の詳細については、AutoML モデルのデータ分割についてをご覧ください。
  • GCS_FILE_PATH - このフィールドには、画像の Cloud Storage URI が含まれます。Cloud Storage URI では大文字と小文字が区別されます。
  • LABEL(省略可) - ラベルは文字で始まり、文字、数字、アンダースコア以外を含まないようにする必要があります。

CSV の例 - image_classification_multi_label.csv:

test,gs://bucket/filename1.jpeg,daisy,full_shot
training,gs://bucket/filename2.gif,dandelion,medium_shot
gs://bucket/filename3.png
gs://bucket/filename4.bmp,sunflowers,closeup
validation,gs://bucket/filename5.tiff,tulips,extreme_closeup
...