自動機械学習による 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 Visual Object Classes (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 スキーマの詳細については、「自動機械学習を使用してコンピューター ビジョン モデルをトレーニングするためのデータ スキーマ」を参照してください。
トレーニング データの形式が、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
を渡すことができるようになります。 詳細については、「Computer Vision モデルをトレーニングするために AutoML を設定する」を参照してください。