トレーニング データの準備

画像の準備

  • 画像にはサポート対象のファイル形式が使用されている必要があります(下記のリストを参照)。

  • AutoML Vision モデルは、現実世界にある物体の写真に対して最も効果的に動作します。

  • トレーニング用のデータは、予測を行うデータにできる限り近いものである必要があります。たとえば、ユースケースに低解像度のぼやけた画像(セキュリティ カメラの画像など)が含まれている場合、トレーニング用のデータも低解像度でぼやけた画像から構成する必要があります。一般に、複数の視点、解像度、背景を持つトレーニング画像を用意することも検討します。

  • 一般的に、AutoML Vision モデルは、人間が割り当てることができないラベルを予測することはできません。そのため、画像を 1~2 秒間見てラベルを割り当てるように人間をトレーニングすることができなければ、モデルもそのようにトレーニングすることはできません。

  • ラベルごとに約 1,000 個のトレーニング画像をおすすめします。ラベルあたりの最小の動画数は 10 件(高度なモデルでは 50 件)です。一般的に、画像ごとに複数のラベルを使用してモデルをトレーニングする場合は、各ラベルにより多くのサンプルが必要になります。また、結果として得られるスコアは、より解釈が難しくなります。

  • モデルをトレーニングする際には、次の画像形式がサポートされています。ファイルの最大サイズは 30 MB です。

    • JPEG
    • PNG
    • GIF
    • BMP
    • ICO

    モデルをクエリして予測をリクエストする際には、次の画像形式がサポートされています。最大ファイルサイズは 1.5 MB です。

    • JPEG
    • PNG
    • GIF
  • モデルは、最も一般的なラベルの画像数が、最も一般的でないラベルの画像数よりも最大で 100 倍存在する場合に最適に動作します。非常に低い頻度のラベルは削除することをおすすめします。

  • None_of_the_above ラベルと、定義されたラベルのいずれとも一致しない画像を含めることを検討してください。たとえば、花のデータセットの場合、ラベルが付けられた品種以外の花の画像を含め、それらに None_of_the_above のラベルを付けます。そうすることで、モデルの精度が向上します。ラベル名は何でも構いませんが、None_of_the_above はシステムによって特別に扱われるため、常に UI のラベルリストの最後に表示されます。

トレーニングと評価データセット

データセットのデータは、モデルをトレーニングするときに、トレーニング データセット、検証データセット、テスト データセットの 3 つのデータセットに分割されます。

モデルの構築にはトレーニング データセットが使用されます。モデルは、複数のアルゴリズムとパラメータを試行してトレーニング データのパターンを検索します。パターンを識別すると、検証データセットを使用してアルゴリズムとパターンをテストします。トレーニング ステージで特定されたものから、最適なアルゴリズムとパターンが選択されます。

最適なアルゴリズムとパターンが特定されたら、テスト データセットを使用してエラーレート、品質、および精度がテストされます。

モデルのバイアスを避けるために、検証データセットとテスト データセットの両方が使用されます。検証ステージでは最適なモデル パラメータが使用されますが、指標に偏りが生じる可能性があります。検証ステージの後でテスト データセットを使用してモデルの品質を評価することにより、モデル品質を偏りなく評価できます。

デフォルトでは、AutoML Vision はデータセットを 3 つの別個のセットにランダムに分割します。

  • 80% の画像がトレーニングに使用されます。
  • 10% の画像が、ハイパーパラメータの調整と、トレーニングを停止するタイミングの決定に使用されます。
  • 10% の画像がモデルの評価に使用されます。これらの画像はトレーニングには使用されません。

CSV ファイル内の各画像をどのデータセットに所属させるかを指定する場合は、次のセクションで説明するように .csv ファイルを使用できます。

画像の URI とラベルを含む CSV ファイルの作成

必要な形式(gs://bucket-name-vcm)でファイルを Cloud Storage バケットにアップロードしたら、すべてのトレーニング データとそのデータのカテゴリラベルを一覧表示する CSV ファイルを作成できます。この CSV ファイルには任意のファイル名を付けることができますが、画像ファイルと同じバケットに配置し、UTF-8 でエンコードして、.csv 拡張子で終わる必要があります。ファイルには、アップロードするセット内の画像ごとに 1 つの行があり、各行には次の列があります。

  1. この行内のコンテンツを割り当てるセット。このフィールドはオプションで、次の値のいずれかを指定できます。

    • TRAIN - image を使用してモデルをトレーニングします。
    • VALIDATION - imageを使用して、トレーニング中にモデルが返す結果を検証します。
    • TEST - imageを使用して、モデルのトレーニング後にモデルの結果を検証します。

    行内の画像のセットを指定しない場合、AutoML Vision は自動的にそれを 3 つのセットのいずれかに配置し、トレーニング、検証、テストのコンテンツが十分になるようにします。AutoML Vision は、コンテンツ ドキュメントの 80% をトレーニングに、10% を検証に、10% をテストに使用します。テスト データセットの最大サイズは 50,000 画像です。このサイズは、例え合計データセットの 10% がその最大値を超えていても変わりません。

  2. 分類するコンテンツ。このフィールドには、画像の Google Cloud Storage URI が含まれます。Google Cloud Storage URI では大文字と小文字が区別されます。

  3. 画像の分類方法を識別するラベルのカンマ区切りリスト。ラベルは文字で始まり、文字、数字、アンダースコア以外を含まないようにする必要があります。画像ごとに最大 20 個のラベルを含めることができます。UI またはヒューマン ラベリング サービスによる手動のラベル付けのために、ラベルを空白のままにできます。

例:

  • ラベル付き: gs://my-storage-bucket-vcm/flowers/images/img100.jpg,daisy
  • ラベルなし: gs://my-storage-bucket-vcm/flowers/images/img403.jpg
  • マルチラベル: gs://my-storage-bucket-vcm/flowers/images/img384.jpg,dandelion,tulip,rose
  • セットに割り当て済み: TEST,gs://my-storage-bucket-vcm/flowers/images/img805.jpg,daisy

コンテンツを CSV ファイルとして Cloud Storage バケットに保存します。

Cloud Storage に保存されているラベルのない画像の CSV ファイルを生成する

ラベルのない画像を Cloud Storage にアップロードしていて、それを参照する CSV を生成する場合は、Cloud Shell で次のコードを実行します。

for f in $(gcloud storage ls gs://YOUR_BUCKET/YOUR_IMAGES_FOLDER/);
do echo UNASSIGNED,$f;
done >> labels.csv;

生成された CSV ファイルを Google Storage バケットにコピーします。

gcloud storage cp labels.csv gs://YOUR_BUCKET/labels.csv

CSV の一般的なエラー

  • ラベルに Unicode 文字を使用する。たとえば、日本語の文字はサポートされていません。
  • ラベルにスペースと英数字以外の文字を使用する。
  • 空の行。
  • 空の列(2 つの連続するカンマを含む行)。
  • Cloud Storage の画像のパスの大文字と小文字が正しくない。
  • 画像ファイルに構成されたアクセス制御が正しくない。サービス アカウントに読み取り以上のアクセス権があるか、ファイルが一般公開されている必要があります。
  • 画像以外のファイル(PDF や PSD などのファイル)を参照している。同様に、画像ファイルでないファイルが画像の拡張子を使用して名前変更されている場合もエラーが発生します。
  • 画像の URI が現在のプロジェクトとは異なるバケットを指定する。プロジェクト バケット内の画像にのみアクセスできます。
  • CSV 以外の形式のファイル。