Aggiungere immagini al set di dati - Amazon Lookout per Vision

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Aggiungere immagini al set di dati

Dopo aver creato un set di dati, potresti voler aggiungere altre immagini al set di dati. Ad esempio, se la valutazione del modello indica che il modello è scadente, è possibile migliorarne la qualità aggiungendo altre immagini. Se avete creato un set di dati di test, l'aggiunta di altre immagini può aumentare la precisione delle metriche prestazionali del modello.

Riaddestrate il modello dopo aver aggiornato i set di dati.

Aggiungere altre immagini

Puoi aggiungere altre immagini ai tuoi set di dati caricando immagini dal tuo computer locale. Per aggiungere altre immagini etichettate con l'SDK, utilizzate l'operazione. UpdateDatasetEntries

Per aggiungere altre immagini al tuo set di dati (console)
  1. Scegli Azioni e seleziona il set di dati a cui desideri aggiungere immagini.

  2. Scegli le immagini che desideri caricare nel set di dati. Puoi trascinare le immagini o scegliere le immagini che desideri caricare dal tuo computer locale. Puoi caricare fino a 30 immagini alla volta.

  3. Scegli Carica immagini.

  4. Sceglie Save changes (Salva modifiche).

Quando hai finito di aggiungere altre immagini, devi etichettarle in modo che possano essere utilizzate per addestrare il modello. Per ulteriori informazioni, consulta Classificazione delle immagini (console).

Aggiungere altre immagini (SDK)

Per aggiungere altre immagini etichettate con l'SDK, utilizzate l'operazione. UpdateDatasetEntries Fornite un file manifesto che contiene le immagini che desiderate aggiungere. È inoltre possibile aggiornare le immagini esistenti specificando l'immagine nel source-ref campo della riga JSON nel file manifest. Per ulteriori informazioni, consulta Creazione di un file manifesto.

Per aggiungere altre immagini a un set di dati (SDK)
  1. Se non l'hai già fatto, installa e configura gli AWS CLI e gli AWS SDK. Per ulteriori informazioni, consulta Fase 4: Configurare gli SDK AWS CLI e AWS.

  2. Usa il codice di esempio seguente per aggiungere altre immagini a un set di dati.

    CLI

    Modificate i seguenti valori:

    • project-nameal nome del progetto che contiene il set di dati che desideri aggiornare.

    • dataset-typeal tipo di set di dati che desideri aggiornare (trainotest).

    • changesalla posizione del file manifesto che contiene gli aggiornamenti dei set di dati.

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

    Questo codice è tratto dal repository degli esempi GitHub di AWS Documentation SDK. Vedi l'esempio completo qui.

    @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

    Questo codice è tratto dal GitHub repository degli esempi di AWS Documentation SDK. Vedi l'esempio completo qui.

    /** * 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. Ripeti il passaggio precedente e fornisci i valori per l'altro tipo di set di dati.