自動機械学習による 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 モデルのトレーニングに使うこともできます。
前提条件
- Computer Vision の自動 ML 実験用に承認された JSONL ファイルのスキーマについて理解を深めます。
ラベル付きデータを取得する
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
型を確実に選択してください。
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
を渡すことができるようになります。