サポート終了通知: 2025 年 10 月 31 日、 AWS は Amazon Lookout for Vision のサポートを終了します。2025 年 10 月 31 日以降、Lookout for Vision コンソールまたは Lookout for Vision リソースにアクセスできなくなります。詳細については、このブログ記事 を参照してください。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
マニフェストファイルを使用したデータセットの作成 (SDK)
CreateDataset オペレーションを使用して、Amazon Lookout for Vision プロジェクトに関連付けられたデータセットを作成します。
単一データセットをトレーニングとテストに使用したい場合は、DatasetType
値を train
に設定して単一データセットを作成します。トレーニング中、データセットは内部的に分割され、トレーニングデータセットとテストデータセットが作成されます。分割されたトレーニングデータセットとテストデータセットにはアクセスできません。別のテストデータセットが必要な場合は、DatasetType
値を test
に設定して CreateDataset
を2回呼び出します。トレーニング中、トレーニングデータセットとテストデータセットは、モデルのトレーニングとテストに使用されます。
必要に応じて、 DatasetSource
パラメータを使用して、データセットの入力に使用される SageMaker Ground Truth 形式のマニフェストファイルの場所を指定できます。この場合、CreateDataset
への呼び出しは非同期です。現在のステータスを確認するには、DescribeDataset
を呼び出します。詳細については、「データセットの表示」を参照してください。インポート中に検証エラーが発生した場合、 Status
の値は CREATE_FAILED に設定され、ステータスメッセージ (StatusMessage
) が設定されます。
開始用サンプルデータセットを使用してデータセットを作成する場合は、ステップ1: マニフェストファイルとアップロード画像を作成する でスクリプトが作成するマニフェストファイル (getting-started/dataset-files/manifests/train.manifest
) を使用してください。
回路基板サンプル画像によりデータセットを作成する場合は、2 つのオプションがあります:
-
コードを使用してマニフェストファイルを作成します。Amazon Lookout for Vision Lab Python Notebook は、回路基板サンプル画像のマニフェストファイルを作成する方法を示しています。または、Code Examples Repository のデータセットサンプル AWS コードを使用します。
-
すでに Amazon Lookout for Vision コンソールを使って回路基板サンプル画像でデータセットを作成した場合は、Amazon Lookout for Vision で作成されたマニフェストファイルを再利用してください。トレーニングおよびテストマニフェストファイルの場所は s3://bucket
/datasets/project
name
/train or
test
/manifests/output/output.manifest
です。
DatasetSource
指定しない場合では、空のデータセットが作成されます。この場合、CreateDataset
への呼び出しは同期します。その後、 を呼び出すことで、データセットにラベル付けされたイメージを使用することができますUpdateDatasetEntries。サンプルコードについては、「イメージの追加 (SDK)」を参照してください。
データセットを置き換える場合は、まず既存のデータセットを で削除DeleteDatasetしてから、 を呼び出して同じデータセットタイプの新しいデータセットを作成しますCreateDataset
。詳細については、「データセットの削除」を参照してください。
データセットを作成すると、モデルを作成できます。詳細については、「モデルのトレーニング (SDK)」を参照してください。
を呼び出すことで、データセット内のラベル付きイメージ (JSON 行) を表示できますListDatasetEntries。ラベル付き画像を追加するには、UpdateDatasetEntries
を呼び出します。
テストデータセットとトレーニングデータセットに関する情報を表示するには、「データセットの表示」を参照してください。
データセットを作成するには (SDK)
-
まだインストールしていない場合は、 と をインストール AWS CLI して設定します AWS SDKs。詳細については、「ステップ 4: AWS CLI と をセットアップする AWS SDKs」を参照してください。
-
次のサンプルコードを使用して、データセットを作成します。
- CLI
-
以下の値を変更します:
-
project-name
をデータセットと関連付けるプロジェクトの名前に。
-
dataset-type
を作成したいデータセットのタイプ (train
または test
) に。
-
dataset-source
をマニフェストファイルの Amazon S3 の保存場所に設定します。
-
Bucket
をマニフェストファイルを含む Amazon S3 バケットの名前に。
-
Key
を Amazon S3 バケット内のマニフェストファイルのパスとファイル名に。
aws lookoutvision create-dataset --project-name project
\
--dataset-type train or test
\
--dataset-source '{ "GroundTruthManifest": { "S3Object": { "Bucket": "bucket
", "Key": "manifest file
" } } }' \
--profile lookoutvision-access
- Python
-
このコードは、 AWS ドキュメントSDKサンプル GitHub リポジトリから取得されます。詳しい事例はこちらです。
@staticmethod
def create_dataset(lookoutvision_client, project_name, manifest_file, dataset_type):
"""
Creates a new Lookout for Vision dataset
:param lookoutvision_client: A Lookout for Vision Boto3 client.
:param project_name: The name of the project in which you want to
create a dataset.
:param bucket: The bucket that contains the manifest file.
:param manifest_file: The path and name of the manifest file.
:param dataset_type: The type of the dataset (train or test).
"""
try:
bucket, key = manifest_file.replace("s3://", "").split("/", 1)
logger.info("Creating %s dataset type...", dataset_type)
dataset = {
"GroundTruthManifest": {"S3Object": {"Bucket": bucket, "Key": key}}
}
response = lookoutvision_client.create_dataset(
ProjectName=project_name,
DatasetType=dataset_type,
DatasetSource=dataset,
)
logger.info("Dataset Status: %s", response["DatasetMetadata"]["Status"])
logger.info(
"Dataset Status Message: %s",
response["DatasetMetadata"]["StatusMessage"],
)
logger.info("Dataset Type: %s", response["DatasetMetadata"]["DatasetType"])
# Wait until either created or failed.
finished = False
status = ""
dataset_description = {}
while finished is False:
dataset_description = lookoutvision_client.describe_dataset(
ProjectName=project_name, DatasetType=dataset_type
)
status = dataset_description["DatasetDescription"]["Status"]
if status == "CREATE_IN_PROGRESS":
logger.info("Dataset creation in progress...")
time.sleep(2)
elif status == "CREATE_COMPLETE":
logger.info("Dataset created.")
finished = True
else:
logger.info(
"Dataset creation failed: %s",
dataset_description["DatasetDescription"]["StatusMessage"],
)
finished = True
if status != "CREATE_COMPLETE":
message = dataset_description["DatasetDescription"]["StatusMessage"]
logger.exception("Couldn't create dataset: %s", message)
raise Exception(f"Couldn't create dataset: {message}")
except ClientError:
logger.exception("Service error: Couldn't create dataset.")
raise
- Java V2
-
このコードは、 AWS ドキュメントSDKサンプル GitHub リポジトリから取得されます。詳しい例はこちらで参照できます。
/**
* Creates an Amazon Lookout for Vision dataset from a manifest file.
* Returns after Lookout for Vision creates the dataset.
*
* @param lfvClient An Amazon Lookout for Vision client.
* @param projectName The name of the project in which you want to create a
* dataset.
* @param datasetType The type of dataset that you want to create (train or
* test).
* @param bucket The S3 bucket that contains the manifest file.
* @param manifestFile The name and location of the manifest file within the S3
* bucket.
* @return DatasetDescription The description of the created dataset.
*/
public static DatasetDescription createDataset(LookoutVisionClient lfvClient,
String projectName,
String datasetType,
String bucket,
String manifestFile)
throws LookoutVisionException, InterruptedException {
logger.log(Level.INFO, "Creating {0} dataset for project {1}",
new Object[] { projectName, datasetType });
// Build the request. If no bucket supplied, setup for empty dataset creation.
CreateDatasetRequest createDatasetRequest = null;
if (bucket != null && manifestFile != null) {
InputS3Object s3Object = InputS3Object.builder()
.bucket(bucket)
.key(manifestFile)
.build();
DatasetGroundTruthManifest groundTruthManifest = DatasetGroundTruthManifest.builder()
.s3Object(s3Object)
.build();
DatasetSource datasetSource = DatasetSource.builder()
.groundTruthManifest(groundTruthManifest)
.build();
createDatasetRequest = CreateDatasetRequest.builder()
.projectName(projectName)
.datasetType(datasetType)
.datasetSource(datasetSource)
.build();
} else {
createDatasetRequest = CreateDatasetRequest.builder()
.projectName(projectName)
.datasetType(datasetType)
.build();
}
lfvClient.createDataset(createDatasetRequest);
DatasetDescription datasetDescription = null;
boolean finished = false;
// Wait until dataset is created, or failure occurs.
while (!finished) {
datasetDescription = describeDataset(lfvClient, projectName, datasetType);
switch (datasetDescription.status()) {
case CREATE_COMPLETE:
logger.log(Level.INFO, "{0}dataset created for project {1}",
new Object[] { datasetType, projectName });
finished = true;
break;
case CREATE_IN_PROGRESS:
logger.log(Level.INFO, "{0} dataset creating for project {1}",
new Object[] { datasetType, projectName });
TimeUnit.SECONDS.sleep(5);
break;
case CREATE_FAILED:
logger.log(Level.SEVERE,
"{0} dataset creation failed for project {1}. Error {2}",
new Object[] { datasetType, projectName,
datasetDescription.statusAsString() });
finished = true;
break;
default:
logger.log(Level.SEVERE, "{0} error when creating {1} dataset for project {2}",
new Object[] { datasetType, projectName,
datasetDescription.statusAsString() });
finished = true;
break;
}
}
logger.log(Level.INFO, "Dataset info. Status: {0}\n Message: {1} }",
new Object[] { datasetDescription.statusAsString(),
datasetDescription.statusMessage() });
return datasetDescription;
}
モデルのトレーニング (SDK) の手順に従ってモデルをトレーニングします。