使用資訊清單檔案 (SDK) 建立資料集 - Amazon Lookout for Vision

支援終止通知:在 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。在訓練期間,資料集會在內部分割,以建立訓練和測試資料集。您無法存取分割訓練和測試資料集。如果您想要單獨的測試資料集,請對 進行第二次呼叫,CreateDataset並將DatasetType值設定為 test。在訓練期間,訓練和測試資料集會用來訓練和測試模型。

您可以選擇性地使用 DatasetSource 參數來指定用來填入資料集的 SageMaker Ground Truth 格式資訊清單檔案的位置。在此情況下, 呼叫CreateDataset為非同步。若要檢查目前狀態,請呼叫 DescribeDataset。如需詳細資訊,請參閱檢視資料集。如果在匯入期間發生驗證錯誤,則 的值Status會設為 CREATE_FAILED,且狀態訊息 (StatusMessage) 會設為 。

提示

如果您要使用入門範例資料集建立資料集,請使用指令碼在 中建立的資訊清單檔案 (getting-started/dataset-files/manifests/train.manifest步驟 1:建立清單檔案並上傳圖片

如果您要使用電路板範例映像建立資料集,有兩個選項:

  1. 使用程式碼建立資訊清單檔案。Amazon Lookout for Vision Lab Python Notebook 示範如何為電路板範例映像建立資訊清單檔案。或者,使用 Code Example Repository 中的資料集範例程式碼。 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 您想要建立的資料集類型 (traintest)。

    • 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)