Adicionar imagens ao seu conjunto de dados - 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á.

Adicionar imagens ao seu conjunto de dados

Depois de criar um conjunto de dados, você pode adicionar mais imagens a ele. Por exemplo, se a avaliação do modelo indicar um modelo ruim, você poderá aprimorar a qualidade do seu modelo adicionando mais imagens. Se você criou um conjunto de dados de teste, adicionar mais imagens pode aumentar a precisão das métricas de desempenho do seu modelo.

Treine novamente seu modelo depois de atualizar seus conjuntos de dados.

Adicionando mais imagens

Você pode adicionar mais imagens aos seus conjuntos de dados fazendo o upload de imagens do seu computador local. Para adicionar mais imagens rotuladas com o SDK, use a operação UpdateDatasetEntries.

Para adicionar mais imagens ao seu conjunto de dados (console)
  1. Escolha Ações e selecione o conjunto de dados ao qual você deseja adicionar imagens.

  2. Escolha as imagens que você deseja enviar para o conjunto de dados. Você pode arrastar as imagens ou escolher as imagens que deseja carregar do seu computador local. Você pode fazer upload de até 30 imagens por vez.

  3. Escolha Fazer upload das imagens.

  4. Escolha Salvar alterações.

Quando terminar de adicionar mais imagens, você precisa rotulá-las para que possam ser usadas para treinar o modelo. Para obter mais informações, consulte Classificação de imagens (console).

Adicionar mais imagens (SDK)

Para adicionar mais imagens rotuladas com o SDK, use a operação UpdateDatasetEntries. Você fornece um arquivo de manifesto que contém as imagens que você deseja adicionar. Você também pode atualizar as imagens existentes especificando a imagem no source-ref campo da linha JSON no arquivo de manifesto. Para obter mais informações, consulte Criar um arquivo de manifesto.

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

  2. Use o código de exemplo a seguir para adicionar mais imagens a um conjunto de dados.

    CLI

    Altere os seguintes valores:

    • project-name ao nome do projeto que contém o conjunto de dados a ser atualizado.

    • dataset-type para o tipo de conjunto de dados que você deseja atualizar (train ou test).

    • changes para o local do arquivo de manifesto que contém atualizações do conjunto de dados.

    aws lookoutvision update-dataset-entries\ --project-name project\ --dataset-type train or test\ --changes fileb://manifest file \ --profile lookoutvision-access
    Python

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

    @staticmethod def update_dataset_entries(lookoutvision_client, project_name, dataset_type, updates_file): """ Adds dataset entries to an Amazon Lookout for Vision dataset. :param lookoutvision_client: The Amazon Rekognition Custom Labels Boto3 client. :param project_name: The project that contains the dataset that you want to update. :param dataset_type: The type of the dataset that you want to update (train or test). :param updates_file: The manifest file of JSON Lines that contains the updates. """ try: status = "" status_message = "" manifest_file = "" # Update dataset entries logger.info(f"""Updating {dataset_type} dataset for project {project_name} with entries from {updates_file}.""") with open(updates_file) as f: manifest_file = f.read() lookoutvision_client.update_dataset_entries( ProjectName=project_name, DatasetType=dataset_type, Changes=manifest_file, ) finished = False while finished == False: dataset = lookoutvision_client.describe_dataset(ProjectName=project_name, DatasetType=dataset_type) status = dataset['DatasetDescription']['Status'] status_message = dataset['DatasetDescription']['StatusMessage'] if status == "UPDATE_IN_PROGRESS": logger.info( (f"Updating {dataset_type} dataset for project {project_name}.")) time.sleep(5) continue if status == "UPDATE_FAILED_ROLLBACK_IN_PROGRESS": logger.info( (f"Update failed, rolling back {dataset_type} dataset for project {project_name}.")) time.sleep(5) continue if status == "UPDATE_COMPLETE": logger.info( f"Dataset updated: {status} : {status_message} : {dataset_type} dataset for project {project_name}.") finished = True continue if status == "UPDATE_FAILED_ROLLBACK_COMPLETE": logger.info( f"Rollback complated after update failure: {status} : {status_message} : {dataset_type} dataset for project {project_name}.") finished = True continue logger.exception( f"Failed. Unexpected state for dataset update: {status} : {status_message} : {dataset_type} dataset for project {project_name}.") raise Exception( f"Failed. Unexpected state for dataset update: {status} : {status_message} :{dataset_type} dataset for project {project_name}.") logger.info(f"Added entries to dataset.") return status, status_message except ClientError as err: logger.exception( f"Couldn't update dataset: {err.response['Error']['Message']}") raise
    Java V2

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

    /** * Updates an Amazon Lookout for Vision dataset from a manifest file. * Returns after Lookout for Vision updates the dataset. * * @param lfvClient An Amazon Lookout for Vision client. * @param projectName The name of the project in which you want to update a * dataset. * @param datasetType The type of the dataset that you want to update (train or * test). * @param manifestFile The name and location of a local manifest file that you want to * use to update the dataset. * @return DatasetStatus The status of the updated dataset. */ public static DatasetStatus updateDatasetEntries(LookoutVisionClient lfvClient, String projectName, String datasetType, String updateFile) throws FileNotFoundException, LookoutVisionException, InterruptedException { logger.log(Level.INFO, "Updating {0} dataset for project {1}", new Object[] { datasetType, projectName }); InputStream sourceStream = new FileInputStream(updateFile); SdkBytes sourceBytes = SdkBytes.fromInputStream(sourceStream); UpdateDatasetEntriesRequest updateDatasetEntriesRequest = UpdateDatasetEntriesRequest.builder() .projectName(projectName) .datasetType(datasetType) .changes(sourceBytes) .build(); lfvClient.updateDatasetEntries(updateDatasetEntriesRequest); boolean finished = false; DatasetStatus status = null; // Wait until update completes. do { DescribeDatasetRequest describeDatasetRequest = DescribeDatasetRequest.builder() .projectName(projectName) .datasetType(datasetType) .build(); DescribeDatasetResponse describeDatasetResponse = lfvClient .describeDataset(describeDatasetRequest); DatasetDescription datasetDescription = describeDatasetResponse.datasetDescription(); status = datasetDescription.status(); switch (status) { case UPDATE_COMPLETE: logger.log(Level.INFO, "{0} Dataset updated for project {1}.", new Object[] { datasetType, projectName }); finished = true; break; case UPDATE_IN_PROGRESS: logger.log(Level.INFO, "{0} Dataset update for project {1} in progress.", new Object[] { datasetType, projectName }); TimeUnit.SECONDS.sleep(5); break; case UPDATE_FAILED_ROLLBACK_IN_PROGRESS: logger.log(Level.SEVERE, "{0} Dataset update failed for project {1}. Rolling back", new Object[] { datasetType, projectName }); TimeUnit.SECONDS.sleep(5); break; case UPDATE_FAILED_ROLLBACK_COMPLETE: logger.log(Level.SEVERE, "{0} Dataset update failed for project {1}. Rollback completed.", new Object[] { datasetType, projectName }); finished = true; break; default: logger.log(Level.SEVERE, "{0} Dataset update failed for project {1}. Unexpected error returned.", new Object[] { datasetType, projectName }); finished = true; } } while (!finished); return status; }
  3. Repita a etapa anterior e forneça valores para o outro tipo de conjunto de dados.