自動機械学習による Computer Vision タスク用にデータを準備する

適用対象:Azure CLI ml extension v2 (現行)Python SDK azure-ai-ml v2 (現行)

重要

Azure Machine Learning の自動 ML による Computer Vision モデルのトレーニングのサポートは、試験的なパブリック プレビュー機能です。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。

この記事では、Azure Machine Learning の自動機械学習で、Computer Vision モデルのトレーニング用画像データを準備する方法について説明します。

自動機械学習を使用して Computer Vision タスクのモデルを生成するには、ラベル付き画像データを MLTable の形式でモデル トレーニングの入力として取り込む必要があります。

MLTable は JSONL 形式のラベル付きトレーニング データから作成できます。 ラベル付きトレーニング データが異なる形式の場合 (pascal VOC や COCO など)、変換スクリプトで JSONL に変換してから MLTable を作成できます。 また、Azure Machine Learning のデータのラベル付けツールを使って手動で画像にラベルを付け、ラベル付きデータをエクスポートして AutoML モデルのトレーニングに使うこともできます。

前提条件

ラベル付きデータを取得する

AutoML を使ってコンピューター ビジョン モデルをトレーニングするには、まずラベル付きトレーニング データを取得する必要があります。 画像をクラウドにアップロードする必要があります。また、ラベルの注釈は JSONL 形式にする必要があります。 Azure Machine Learning データのラベル付けツールを使ってデータにラベルを付けることができます。または、事前にラベル付けされた画像データから始めることができます。

Azure Machine Learning データのラベル付けツールを使ったトレーニング データのラベル付け

事前にラベル付けされたデータを持っていない場合は、Azure Machine Learning のデータのラベル付けツールを使用して、画像に手動でラベルを付けることができます。 このツールは、トレーニングに必要なデータを承認された形式で自動的に生成します。

以下のようなデータのラベル付けタスクを作成、管理、および監視するのに役立ちます

  • 画像分類 (複数クラスおよび複数ラベル)
  • オブジェクトの検出 (境界ボックス)
  • インスタンスのセグメント化 (ポリゴン)

使用するラベル付きデータが既にある場合は、ラベル付きデータを Azure Machine Learning データセットとしてエクスポートし、Azure Machine Learning スタジオの [データセット] タブでデータセットにアクセスします。 このエクスポートされたデータセットは、azureml:<tabulardataset_name>:<version> 形式を使用して入力として渡すことができます。 コンピューター ビジョン モデルをトレーニングするための入力として既存のデータセットを渡す方法の例を次に示します。

適用対象: Azure CLI ML 拡張機能 v2 (現行)

training_data:
  path: azureml:odFridgeObjectsTrainingDataset:1
  type: mltable
  mode: direct

ローカル コンピューターからのラベル付け済みのトレーニング データを使用する

モデルのトレーニングに使用するデータにラベルを付けた場合は、イメージを Azure にアップロードする必要があります。 イメージを Azure Machine Learning ワークスペースの既定の Azure Blob Storage にアップロードし、データ資産として登録できます。

次のスクリプトでは、ローカル コンピューター上のパス "./data/odFridgeObjects" にある画像データを Azure Blob Storage のデータストアにアップロードします。 その後、Azure Machine Learning ワークスペースに "fridge-items-images-object-detection" という名前の新しいデータ資産を作成します。

Azure Machine Learning ワークスペースに "fridge-items-images-object-detection" という名前のデータ資産が既に存在する場合は、データ資産のバージョン番号を更新し、画像データがアップロードされた新しい場所を指すようにします。

適用対象: Azure CLI ML 拡張機能 v2 (現行)

次の構成で .yml ファイルを作成します。

$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: fridge-items-images-object-detection
description: Fridge-items images Object detection
path: ./data/odFridgeObjects
type: uri_folder

画像をデータ資産としてアップロードするには、.yml ファイルへのパス、ワークスペース名、リソース グループ、サブスクリプション ID を指定して、次の CLI v2 コマンドを実行します。

az ml data create -f [PATH_TO_YML_FILE] --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]

既存のデータストアにデータが既に存在し、それからデータ資産を作成する場合は、ローカル コンピューターのパスを指定するのではなく、データストア内のデータへのパスを指定することで作成できます。 次のスニペットで上記のコードを更新します。

適用対象: Azure CLI ML 拡張機能 v2 (現行)

次の構成で .yml ファイルを作成します。

$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: fridge-items-images-object-detection
description: Fridge-items images Object detection
path: azureml://subscriptions/<my-subscription-id>/resourcegroups/<my-resource-group>/workspaces/<my-workspace>/datastores/<my-datastore>/paths/<path_to_image_data_folder>
type: uri_folder

次に、JSONL 形式でラベルの注釈を取得する必要があります。 ラベル付きデータのスキーマは、実際のコンピューター ビジョン タスクによって異なります。 各タスクの種類に必要な JSONL スキーマについては、AutoML コンピューター ビジョン実験用 JSONL ファイルのスキーマに関する記事を参照してください。

トレーニング データが異なる形式の場合 (pascal VOC や COCO など)、データを JSONL に変換するヘルパー スクリプトノートブック例のページに掲載されています。

上記の手順に従って jsonl ファイルを作成したら、UI を使用してデータ資産として登録できます。 次に示すように、スキーマ セクションで stream 型を確実に選択してください。

jsonl ファイルからデータ資産を登録する方法を示すアニメーション

Azure Blob Storage からのラベル付け済みのトレーニング データを使用する

ラベル付きのトレーニング データが Azure Blob Storage 内のコンテナーに存在する場合は、そのコンテナーを参照するデータストアを作成することで、そこから直接アクセスできます。

MLTable を作成する

JSONL 形式のラベル付きデータを用意したら、それを使って、この YAML スニペットに示されているように MLTable を作成します。 MLtable によって、データがトレーニングに使用可能なオブジェクトにパッケージ化されます。

paths:
  - file: ./train_annotations.jsonl
transformations:
  - read_json_lines:
        encoding: utf8
        invalid_lines: error
        include_path_column: false
  - convert_column_types:
      - columns: image_url
        column_type: stream_info

これで、AutoML トレーニング ジョブのデータ入力として MLTable を渡すことができるようになります。

次のステップ