マニフェストファイルを使用したデータセットの作成 (SDK) - Amazon Lookout for Vision

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

マニフェストファイルを使用したデータセットの作成 (SDK)

CreateDataset オペレーションを使用して、Amazon Lookout for Vision プロジェクトに関連付けられたデータセットを作成します。

単一データセットをトレーニングとテストに使用したい場合は、DatasetType 値を train に設定して単一データセットを作成します。トレーニング中、データセットは内部的に分割され、トレーニングデータセットとテストデータセットが作成されます。分割されたトレーニングデータセットとテストデータセットにはアクセスできません。別のテストデータセットが必要な場合は、DatasetType 値を test に設定して CreateDataset を2回呼び出します。トレーニング中、トレーニングデータセットとテストデータセットは、モデルのトレーニングとテストに使用されます。

オプションで、 DatasetSourceパラメータを使用して、データセットの入力に使用される SageMaker Ground Truth 形式のマニフェストファイルの場所を指定できます。この場合、CreateDataset への呼び出しは非同期です。現在のステータスを確認するには、DescribeDataset を呼び出します。詳細については、「データセットの表示」を参照してください。インポート中に検証エラーが発生した場合、 の値は CREATE_FAILED Statusに設定され、ステータスメッセージ (StatusMessage) が設定されます。

ヒント

開始用サンプルデータセットを使用してデータセットを作成する場合は、ステップ1: マニフェストファイルとアップロード画像を作成する でスクリプトが作成するマニフェストファイル (getting-started/dataset-files/manifests/train.manifest) を使用してください。

回路基板サンプル画像によりデータセットを作成する場合は、2 つのオプションがあります:

  1. コードを使用してマニフェストファイルを作成します。Amazon Lookout for Vision Lab Python Notebook は、回路基板サンプル画像のマニフェストファイルを作成する方法を示しています。または、「」の「データセットサンプルコード」を使用します。 AWS コード例リポジトリ。

  2. すでに 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)
  1. まだインストールしていない場合は、 をインストールして設定します。 AWS CLI と AWS SDKs。詳細については、「ステップ 4: をセットアップする AWS CLI また、 AWS SDKs」を参照してください。

  2. 次のサンプルコードを使用して、データセットを作成します。

    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; }
  3. モデルのトレーニング (SDK) の手順に従ってモデルをトレーニングします。