Criação de um conjunto de dados com um arquivo de manifesto (SDK) - Amazon Lookout for Vision

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Criação de um conjunto de dados com um arquivo de manifesto (SDK)

Você usa a CreateDatasetoperação para criar os conjuntos de dados associados a um projeto Amazon Lookout for Vision.

Se você quiser usar um único conjunto de dados para treinamento e teste, crie um único conjunto de dados com o valor de DatasetType definido como train. Durante o treinamento, o conjunto de dados é dividido internamente para criar um conjunto de dados de treinamento e teste. Você não tem acesso aos conjuntos de dados de treinamento e teste divididos. Se você quiser um conjunto de dados de teste separado, faça uma segunda chamada para CreateDataset com o valor de DatasetType definido como test. Durante o treinamento, os conjuntos de dados de treinamento e teste são usados para treinar e testar o modelo.

Opcionalmente, você pode usar o DatasetSource parâmetro para especificar a localização de um arquivo de manifesto no formato SageMaker Ground Truth usado para preencher o conjunto de dados. Nesse caso, a chamada para CreateDataset é assíncrona. Para verificar o status atual, chame DescribeDataset. Para ter mais informações, consulte Visualizar seus conjuntos de dados. Se ocorrer um erro de validação durante a importação, o valor de Status será definido como CREATE_FAILED e a mensagem de status (StatusMessage) será definida.

dica

Se você estiver criando um conjunto de dados com o conjunto de dados de exemplo de introdução, use o arquivo de manifesto (getting-started/dataset-files/manifests/train.manifest) no qual o script cria. Etapa 1: criar o arquivo de manifesto e fazer upload de imagens

Se você estiver criando um conjunto de dados com as imagens de exemplo da placa de circuito, você tem duas opções:

  1. Crie o arquivo de manifesto usando código. O notebook Python do Amazon Lookout for Vision Lab mostra como criar o arquivo de manifesto para as imagens de exemplo da placa de circuito. Como alternativa, use o código de exemplo de conjuntos de dados no Repositório de exemplos de AWS código.

  2. Se você já usou o console Amazon Lookout for Vision para criar um conjunto de dados com as imagens de exemplo da placa de circuito, reutilize os arquivos de manifesto criados para você pelo Amazon Lookout for Vision. Os locais dos arquivos do manifesto de treinamento e teste sãos3://bucket/datasets/project name/train or test/manifests/output/output.manifest.

Se você não especificar DatasetSource, será criado um conjunto de dados vazio. Nesse caso, a chamada para CreateDataset é síncrona. Posteriormente, você pode rotular imagens para o conjunto de dados chamando. UpdateDatasetEntries Para ver um código demonstrativo, consulte Adicionar mais imagens (SDK).

Se você quiser substituir um conjunto de dados, primeiro exclua o conjunto de dados existente DeleteDatasete, em seguida, crie um novo conjunto de dados do mesmo tipo de conjunto de dados chamando. CreateDataset Para ter mais informações, consulte Excluir um conjunto de dados.

Depois de criar os conjuntos de dados, você pode criar o modelo. Para ter mais informações, consulte Treinando um modelo (SDK).

Você pode visualizar as imagens rotuladas (linhas JSON) em um conjunto de dados chamando. ListDatasetEntries Você pode adicionar imagens rotuladas chamando UpdateDatasetEntries.

Para ver informações sobre os conjuntos de dados de teste e treinamento, consulteVisualizar seus conjuntos de dados.

Para criar um conjunto de dados (SDK)
  1. Se você ainda não tiver feito isso, instale e configure o AWS CLI e os AWS SDKs. Para ter mais informações, consulte Etapa 4: configurar os AWS SDKs AWS CLI e.

  2. Use o código de exemplo a seguir para criar um conjunto de dados.

    CLI

    Altere os seguintes valores:

    • project-name ao nome do projeto ao qual você deseja associar o conjunto de dados.

    • dataset-type para o tipo de conjunto de dados que você deseja criar (trainoutest).

    • dataset-source para o local do arquivo de manifesto no Amazon S3.

    • Bucket para o nome do bucket do Amazon S3 que contém o arquivo de manifesto.

    • Keyao caminho e nome do arquivo de manifesto no bucket do 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

    Esse código foi retirado do GitHub repositório de exemplos do SDK de AWS documentação. Veja o exemplo completo aqui.

    @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

    Esse código foi retirado do GitHub repositório de exemplos do SDK de AWS documentação. Veja o exemplo completo aqui.

    /** * 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. Treine seu modelo seguindo as etapas emTreinando um modelo (SDK).