向项目添加数据集 - Rekognition

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

向项目添加数据集

您可以向现有项目添加训练数据集或测试数据集。如果要替换现有数据集,请先将现有数据集删除。有关更多信息,请参阅删除数据集。然后,添加新的数据集。

向项目添加数据集(控制台)

您可以使用 Amazon Rekognition Custom Labels 控制台向项目添加训练或测试数据集。

向项目添加数据集
  1. 通过以下网址打开 Amazon Rekognition 控制台:https://console.aws.amazon.com/rekognition/

  2. 在左侧窗格中,选择使用自定义标签。随后将显示 Amazon Rekognition Custom Labels 登录页面。

  3. 在左侧导航窗格中,选择项目。随后将显示“项目”视图。

  4. 选择要添加数据集的项目。

  5. 在左侧导航窗格中,于项目名称下选择数据集

  6. 如果项目没有现有数据集,则会显示创建数据集页面。执行以下操作:

    1. 创建数据集页面上,输入图像源信息。有关更多信息,请参阅使用图像创建训练和测试数据集

    2. 选择创建数据集以创建数据集。

  7. 如果项目已有数据集(训练或测试),则会显示项目详细信息页面。执行以下操作:

    1. 在项目详细信息页面上,选择操作

    2. 如果想添加训练数据集,请选择创建训练数据集

    3. 如果想添加训练数据集,请选择创建训练数据集

    4. 创建数据集页面上,输入图像源信息。有关更多信息,请参阅使用图像创建训练和测试数据集

    5. 选择创建数据集以创建数据集。

  8. 向数据集中添加图像。有关更多信息,请参阅添加更多图像(控制台)

  9. 向数据集中添加标签。有关更多信息,请参阅添加新标签(控制台)

  10. 为图像添加标签。如果要添加图像级标签,请参阅为图像分配图像级标签。如果要添加边界框,请参阅使用边界框标注物体。有关更多信息,请参阅确定数据集用途

向项目添加数据集 (SDK)

您可以通过以下方式向现有项目添加训练或测试数据集:

主题
    向项目添加数据集 (SDK)
    1. 安装并配置 AWS CLI 和 AWS SDK(如果尚未如此)。有关更多信息,请参阅步骤 4:设置 AWS CLI 以及 AWS SDKs

    2. 使用以下示例向数据集添加 JSON 行。

      CLI

      project_arn 替换为要添加数据集的项目。将 dataset_type 替换为 TRAIN 可创建训练数据集,替换为 TEST 可创建测试数据集。

      aws rekognition create-dataset --project-arn project_arn \ --dataset-type dataset_type \ --profile custom-labels-access
      Python

      使用以下代码创建数据集。提供以下命令行选项:

      • project_arn:要添加测试数据集的项目的 ARN。

      • type:要创建的数据集的类型(train 或 test)

      # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 import argparse import logging import time import boto3 from botocore.exceptions import ClientError logger = logging.getLogger(__name__) def create_empty_dataset(rek_client, project_arn, dataset_type): """ Creates an empty Amazon Rekognition Custom Labels dataset. :param rek_client: The Amazon Rekognition Custom Labels Boto3 client. :param project_arn: The ARN of the project in which you want to create a dataset. :param dataset_type: The type of the dataset that you want to create (train or test). """ try: #Create the dataset. logger.info("Creating empty %s dataset for project %s", dataset_type, project_arn) dataset_type=dataset_type.upper() response = rek_client.create_dataset( ProjectArn=project_arn, DatasetType=dataset_type ) dataset_arn=response['DatasetArn'] logger.info("dataset ARN: %s", dataset_arn) finished=False while finished is False: dataset=rek_client.describe_dataset(DatasetArn=dataset_arn) status=dataset['DatasetDescription']['Status'] if status == "CREATE_IN_PROGRESS": logger.info(("Creating dataset: %s ", dataset_arn)) time.sleep(5) continue if status == "CREATE_COMPLETE": logger.info("Dataset created: %s", dataset_arn) finished=True continue if status == "CREATE_FAILED": error_message = f"Dataset creation failed: {status} : {dataset_arn}" logger.exception(error_message) raise Exception(error_message) error_message = f"Failed. Unexpected state for dataset creation: {status} : {dataset_arn}" logger.exception(error_message) raise Exception(error_message) return dataset_arn except ClientError as err: logger.exception("Couldn't create dataset: %s", err.response['Error']['Message']) raise def add_arguments(parser): """ Adds command line arguments to the parser. :param parser: The command line parser. """ parser.add_argument( "project_arn", help="The ARN of the project in which you want to create the empty dataset." ) parser.add_argument( "dataset_type", help="The type of the empty dataset that you want to create (train or test)." ) def main(): logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") try: # Get command line arguments. parser = argparse.ArgumentParser(usage=argparse.SUPPRESS) add_arguments(parser) args = parser.parse_args() print(f"Creating empty {args.dataset_type} dataset for project {args.project_arn}") # Create the empty dataset. session = boto3.Session(profile_name='custom-labels-access') rekognition_client = session.client("rekognition") dataset_arn=create_empty_dataset(rekognition_client, args.project_arn, args.dataset_type.lower()) print(f"Finished creating empty dataset: {dataset_arn}") except ClientError as err: logger.exception("Problem creating empty dataset: %s", err) print(f"Problem creating empty dataset: {err}") except Exception as err: logger.exception("Problem creating empty dataset: %s", err) print(f"Problem creating empty dataset: {err}") if __name__ == "__main__": main()
      Java V2

      使用以下代码创建数据集。提供以下命令行选项:

      • project_arn:要添加测试数据集的项目的 ARN。

      • type:要创建的数据集的类型(train 或 test)

      /* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 */ package com.example.rekognition; import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.rekognition.RekognitionClient; import software.amazon.awssdk.services.rekognition.model.CreateDatasetRequest; import software.amazon.awssdk.services.rekognition.model.CreateDatasetResponse; import software.amazon.awssdk.services.rekognition.model.DatasetDescription; import software.amazon.awssdk.services.rekognition.model.DatasetStatus; import software.amazon.awssdk.services.rekognition.model.DatasetType; import software.amazon.awssdk.services.rekognition.model.DescribeDatasetRequest; import software.amazon.awssdk.services.rekognition.model.DescribeDatasetResponse; import software.amazon.awssdk.services.rekognition.model.RekognitionException; import java.net.URI; import java.util.logging.Level; import java.util.logging.Logger; public class CreateEmptyDataset { public static final Logger logger = Logger.getLogger(CreateEmptyDataset.class.getName()); public static String createMyEmptyDataset(RekognitionClient rekClient, String projectArn, String datasetType) throws Exception, RekognitionException { try { logger.log(Level.INFO, "Creating empty {0} dataset for project : {1}", new Object[] { datasetType.toString(), projectArn }); DatasetType requestDatasetType = null; switch (datasetType) { case "train": requestDatasetType = DatasetType.TRAIN; break; case "test": requestDatasetType = DatasetType.TEST; break; default: logger.log(Level.SEVERE, "Unrecognized dataset type: {0}", datasetType); throw new Exception("Unrecognized dataset type: " + datasetType); } CreateDatasetRequest createDatasetRequest = CreateDatasetRequest.builder().projectArn(projectArn) .datasetType(requestDatasetType).build(); CreateDatasetResponse response = rekClient.createDataset(createDatasetRequest); boolean created = false; //Wait until updates finishes do { DescribeDatasetRequest describeDatasetRequest = DescribeDatasetRequest.builder() .datasetArn(response.datasetArn()).build(); DescribeDatasetResponse describeDatasetResponse = rekClient.describeDataset(describeDatasetRequest); DatasetDescription datasetDescription = describeDatasetResponse.datasetDescription(); DatasetStatus status = datasetDescription.status(); logger.log(Level.INFO, "Creating dataset ARN: {0} ", response.datasetArn()); switch (status) { case CREATE_COMPLETE: logger.log(Level.INFO, "Dataset created"); created = true; break; case CREATE_IN_PROGRESS: Thread.sleep(5000); break; case CREATE_FAILED: String error = "Dataset creation failed: " + datasetDescription.statusAsString() + " " + datasetDescription.statusMessage() + " " + response.datasetArn(); logger.log(Level.SEVERE, error); throw new Exception(error); default: String unexpectedError = "Unexpected creation state: " + datasetDescription.statusAsString() + " " + datasetDescription.statusMessage() + " " + response.datasetArn(); logger.log(Level.SEVERE, unexpectedError); throw new Exception(unexpectedError); } } while (created == false); return response.datasetArn(); } catch (RekognitionException e) { logger.log(Level.SEVERE, "Could not create dataset: {0}", e.getMessage()); throw e; } } public static void main(String args[]) { String datasetType = null; String datasetArn = null; String projectArn = null; final String USAGE = "\n" + "Usage: " + "<project_arn> <dataset_type>\n\n" + "Where:\n" + " project_arn - the ARN of the project that you want to add copy the datast to.\n\n" + " dataset_type - the type of the empty dataset that you want to create (train or test).\n\n"; if (args.length != 2) { System.out.println(USAGE); System.exit(1); } projectArn = args[0]; datasetType = args[1]; try { // Get the Rekognition client RekognitionClient rekClient = RekognitionClient.builder() .credentialsProvider(ProfileCredentialsProvider.create("custom-labels-access")) .region(Region.US_WEST_2) .build(); // Create the dataset datasetArn = createMyEmptyDataset(rekClient, projectArn, datasetType); System.out.println(String.format("Created dataset: %s", datasetArn)); rekClient.close(); } catch (RekognitionException rekError) { logger.log(Level.SEVERE, "Rekognition client error: {0}", rekError.getMessage()); System.exit(1); } catch (Exception rekError) { logger.log(Level.SEVERE, "Error: {0}", rekError.getMessage()); System.exit(1); } } }
    3. 向数据集中添加图像。有关更多信息,请参阅添加更多图像 (SDK)