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

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

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

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

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

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

ヒント

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

回路基板サンプル画像を使用してデータセットを作成する場合は、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 line) を表示するには、を呼び出しますListDatasetEntries。ラベル付き画像を追加するには、UpdateDatasetEntries を呼び出します。

テストデータセットとトレーニングデータセットに関する情報を表示するには、「データセットの表示」を参照してください。

データセット (SDK) を作成するには
  1. まだの場合は、 以下のことを実行してください。

    1. Amazon Lookout for Vision にアクセスするためのアクセス許可を持つ IAM ユーザーを作成または更新します。詳細については、「ステップ 3: アクセス許可の設定」を参照してください。

    2. AWS CLI と AWS SDK をインストールして設定します。詳細については、「ステップ 5: AWS CLI と AWS SDK をセットアップする」を参照してください。

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