Utilizzo di un file manifesto per importare immagini - Rekognition

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à.

Utilizzo di un file manifesto per importare immagini

Puoi creare un set di dati utilizzando un file manifest in formato Amazon SageMaker Ground Truth. Puoi utilizzare il file manifest da un job di Amazon SageMaker Ground Truth. Se le immagini e le etichette non sono nel formato di un file manifest di SageMaker Ground Truth, puoi creare un file manifest in SageMaker formato e utilizzarlo per importare le immagini etichettate.

L'CreateDatasetoperazione viene aggiornata per consentire di specificare facoltativamente i tag durante la creazione di un nuovo set di dati. I tag sono coppie chiave-valore che è possibile utilizzare per classificare e gestire le risorse.

Creazione di un set di dati con un file manifest SageMaker Ground Truth (Console)

La procedura seguente mostra come creare un set di dati utilizzando un file manifest in formato SageMaker Ground Truth.

  1. Creare un file manifest per il set di dati di addestramento in uno dei seguenti modi:

    Se si desidera creare un set di dati di test, ripetere il passaggio 1 per creare il set di dati di test.

  2. Apri la console Amazon Rekognition all'indirizzo. https://console.aws.amazon.com/rekognition/

  3. Scegli Usa etichette personalizzate.

  4. Scegli Avvia.

  5. Nel pannello di navigazione a sinistra, scegli Progetti.

  6. Nella pagina Progetti, scegliere il progetto a cui aggiungere un set di dati. Viene visualizzata la pagina dei dettagli del progetto.

  7. Scegli Crea set di dati. Viene visualizzata la pagina Creare set di dati.

  8. In Configurazione iniziale, scegliere Iniziare con un singolo set di dati o Iniziare con un set di dati di addestramento. Per creare un modello di qualità superiore, consigliamo di iniziare con set di dati di addestramento e test separati.

    Single dataset
    1. Nella sezione Dettagli del set di dati di addestramento, scegli Importa immagini etichettate da SageMaker Ground Truth.

    2. In.manifest file location, inserire la posizione del file manifest che è stata creata al passaggio 1.

    3. Scegli Crea set di dati. Si apre la pagina dei set di dati per il progetto.

    Separate training and test datasets
    1. Nella sezione Dettagli del set di dati di addestramento, scegli Importa immagini etichettate da SageMaker Ground Truth.

    2. In.manifest file location, inserire la posizione del file manifest del set di dati di addestramento che è stata creata al passaggio 1.

    3. Nella sezione Dettagli del set di dati di test, scegli Importa immagini etichettate da SageMaker Ground Truth.

      Nota

      I set di dati di addestramento e test possono avere diverse fonti di immagini.

    4. In.manifest file location, inserire la posizione del file manifest del set di dati di test che è stata creata al passaggio 1.

    5. Scegli Crea database. Si apre la pagina dei set di dati per il progetto.

  9. Se si deve aggiungere o modificare etichette, fare Immagini etichettate.

  10. Seguire i passaggi indicati in Addestramento di un modello (Console) per addestrare il modello.

Creazione di un set di dati con un file manifest SageMaker Ground Truth () SDK

La procedura seguente mostra come creare set di dati di addestramento o test da un file manifest utilizzando il. CreateDatasetAPI

È possibile utilizzare un file manifest esistente, ad esempio l'output di un job SageMaker Ground Truth, o creare il proprio file manifest.

  1. Se non l'hai ancora fatto, installa e configura il AWS CLI AWS SDKs. Per ulteriori informazioni, consulta Passaggio 4: configura il AWS CLI e AWS SDKs.

  2. Creare un file manifest per il set di dati di addestramento in uno dei seguenti modi:

    Se si desidera creare un set di dati di test, ripetere il passaggio 2 per creare il set di dati di test.

  3. Utilizzare il seguente codice di esempio per creare il set di dati di addestramento e test.

    AWS CLI

    Usa il seguente codice per creare un set di dati. Sostituisci quanto segue:

    • project_arn— il ARN progetto a cui si desidera aggiungere il set di dati di test.

    • type— il tipo di set di dati che vuoi creare (TRAINo) TEST

    • bucket: il bucket che contiene il file manifest per il set di dati.

    • manifest_file: il nome e il percorso del file manifest.

    aws rekognition create-dataset --project-arn project_arn \ --dataset-type type \ --dataset-source '{ "GroundTruthManifest": { "S3Object": { "Bucket": "bucket", "Name": "manifest_file" } } }' \ --profile custom-labels-access --tags '{"key1": "value1", "key2": "value2"}'
    Python

    Usare i seguenti valori per creare un set di dati. Fornisci i seguenti parametri di riga di comando:

    • project_arn— il ARN progetto a cui si desidera aggiungere il set di dati di test.

    • dataset_type: il tipo di set di dati che si desidera creare (train o test).

    • bucket: il bucket che contiene il file manifest per il set di dati.

    • manifest_file: il nome e il percorso del file manifest.

    #Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. #PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-custom-labels-developer-guide/blob/master/LICENSE-SAMPLECODE.) import argparse import logging import time import json import boto3 from botocore.exceptions import ClientError logger = logging.getLogger(__name__) def create_dataset(rek_client, project_arn, dataset_type, bucket, manifest_file): """ Creates an 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). :param bucket: The S3 bucket that contains the manifest file. :param manifest_file: The path and filename of the manifest file. """ try: #Create the project logger.info("Creating %s dataset for project %s",dataset_type, project_arn) dataset_type = dataset_type.upper() dataset_source = json.loads( '{ "GroundTruthManifest": { "S3Object": { "Bucket": "' + bucket + '", "Name": "' + manifest_file + '" } } }' ) response = rek_client.create_dataset( ProjectArn=project_arn, DatasetType=dataset_type, DatasetSource=dataset_source ) 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 dataset." ) parser.add_argument( "dataset_type", help="The type of the dataset that you want to create (train or test)." ) parser.add_argument( "bucket", help="The S3 bucket that contains the manifest file." ) parser.add_argument( "manifest_file", help="The path and filename of the manifest file." ) 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 {args.dataset_type} dataset for project {args.project_arn}") #Create the dataset. session = boto3.Session(profile_name='custom-labels-access') rekognition_client = session.client("rekognition") dataset_arn=create_dataset(rekognition_client, args.project_arn, args.dataset_type, args.bucket, args.manifest_file) print(f"Finished creating dataset: {dataset_arn}") except ClientError as err: logger.exception("Problem creating dataset: %s", err) print(f"Problem creating dataset: {err}") if __name__ == "__main__": main()
    Java V2

    Usare i seguenti valori per creare un set di dati. Fornisci i seguenti parametri di riga di comando:

    • project_arn— il nome ARN del progetto a cui si desidera aggiungere il set di dati di test.

    • dataset_type: il tipo di set di dati che si desidera creare (train o test).

    • bucket: il bucket che contiene il file manifest per il set di dati.

    • manifest_file: il nome e il percorso del file manifest.

    /* 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.DatasetSource; 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.GroundTruthManifest; import software.amazon.awssdk.services.rekognition.model.RekognitionException; import software.amazon.awssdk.services.rekognition.model.S3Object; import java.util.logging.Level; import java.util.logging.Logger; public class CreateDatasetManifestFiles { public static final Logger logger = Logger.getLogger(CreateDatasetManifestFiles.class.getName()); public static String createMyDataset(RekognitionClient rekClient, String projectArn, String datasetType, String bucket, String name) throws Exception, RekognitionException { try { logger.log(Level.INFO, "Creating {0} dataset for project : {1} from s3://{2}/{3} ", new Object[] { datasetType, projectArn, bucket, name }); DatasetType requestDatasetType = null; switch (datasetType) { case "train": requestDatasetType = DatasetType.TRAIN; break; case "test": requestDatasetType = DatasetType.TEST; break; default: logger.log(Level.SEVERE, "Could not create dataset. Unrecognized dataset type: {0}", datasetType); throw new Exception("Could not create dataset. Unrecognized dataset type: " + datasetType); } GroundTruthManifest groundTruthManifest = GroundTruthManifest.builder() .s3Object(S3Object.builder().bucket(bucket).name(name).build()).build(); DatasetSource datasetSource = DatasetSource.builder().groundTruthManifest(groundTruthManifest).build(); CreateDatasetRequest createDatasetRequest = CreateDatasetRequest.builder().projectArn(projectArn) .datasetType(requestDatasetType).datasetSource(datasetSource).build(); CreateDatasetResponse response = rekClient.createDataset(createDatasetRequest); boolean created = false; 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 bucket = null; String name = null; String projectArn = null; String datasetArn = null; final String USAGE = "\n" + "Usage: " + "<project_arn> <dataset_type> <dataset_arn>\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 dataset that you want to create (train or test).\n\n" + " bucket - the S3 bucket that contains the manifest file.\n\n" + " name - the location and name of the manifest file within the bucket.\n\n"; if (args.length != 4) { System.out.println(USAGE); System.exit(1); } projectArn = args[0]; datasetType = args[1]; bucket = args[2]; name = args[3]; 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 = createMyDataset(rekClient, projectArn, datasetType, bucket, name); 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); } } }
  4. Se è necessario aggiungere o modificare etichette, confrontare Gestione delle etichette (SDK).

  5. Seguire i passaggi indicati in Addestramento di un modello (SDK) per addestrare il modello.

Crea una richiesta di set di dati

Di seguito è riportato il formato della richiesta di operazione: CreateDataset

{ "DatasetSource": { "DatasetArn": "string", "GroundTruthManifest": { "S3Object": { "Bucket": "string", "Name": "string", "Version": "string" } } }, "DatasetType": "string", "ProjectArn": "string", "Tags": { "string": "string" } }