Création d'un ensemble de données à l'aide d'un fichier manifeste (SDK) - Amazon Lookout for Vision

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Création d'un ensemble de données à l'aide d'un fichier manifeste (SDK)

Vous utilisez cette CreateDatasetopération pour créer les ensembles de données associés à un projet Amazon Lookout for Vision.

Si vous souhaitez utiliser un seul ensemble de données pour l'entraînement et les tests, créez un ensemble de données unique dont la DatasetType valeur est définie surtrain. Pendant l'entraînement, l'ensemble de données est divisé en interne pour former un ensemble de données d'entraînement et de test. Vous n'avez pas accès aux ensembles de données d'entraînement et de test divisés. Si vous souhaitez un ensemble de données de test distinct, effectuez un deuxième appel CreateDataset avec le jeu de DatasetType valeurstest. Pendant l'entraînement, les ensembles de données d'entraînement et de test sont utilisés pour entraîner et tester le modèle.

Vous pouvez éventuellement utiliser le DatasetSource paramètre pour spécifier l'emplacement d'un fichier manifeste au format SageMaker Ground Truth utilisé pour remplir le jeu de données. Dans ce cas, l'appel à CreateDataset est asynchrone. Pour vérifier le statut actuel, appelez DescribeDataset. Pour plus d’informations, consultez Afficher vos ensembles de données. Si une erreur de validation se produit lors de l'importation, la valeur de Status est définie sur CREATE_FAILED et le message d'état (StatusMessage) est défini.

Astuce

Si vous créez un ensemble de données à partir de l'exemple de jeu de données Getting Started, utilisez le fichier manifeste (getting-started/dataset-files/manifests/train.manifest) dans lequel le script créeÉtape 1 : Création du fichier manifeste et téléchargement des images.

Si vous créez un jeu de données à partir des exemples d'images du circuit imprimé, deux options s'offrent à vous :

  1. Créez le fichier manifeste à l'aide du code. Le bloc-notes Python Amazon Lookout for Vision Lab explique comment créer le fichier manifeste pour les exemples d'images du circuit imprimé. Vous pouvez également utiliser l'exemple de code Datasets dans le référentiel d'exemples de AWS code.

  2. Si vous avez déjà utilisé la console Amazon Lookout for Vision pour créer un ensemble de données avec les exemples d'images du circuit imprimé, réutilisez les fichiers manifestes créés pour vous par Amazon Lookout for Vision. Les emplacements des fichiers manifestes de formation et de test sonts3://bucket/datasets/project name/train or test/manifests/output/output.manifest.

Si vous ne le spécifiez pasDatasetSource, un ensemble de données vide est créé. Dans ce cas, l'appel à CreateDataset est synchrone. Plus tard, vous pouvez étiqueter des images dans le jeu de données en appelant UpdateDatasetEntries. Pour obtenir un exemple de code, consultez Ajouter d'autres images (SDK).

Si vous souhaitez remplacer un ensemble de données, supprimez d'abord le jeu de données existant par, DeleteDatasetpuis créez un nouveau jeu de données du même type en appelantCreateDataset. Pour plus d’informations, consultez Supprimer un jeu de données.

Après avoir créé les ensembles de données, vous pouvez créer le modèle. Pour plus d’informations, consultez Entraînement d’un modèle (kit SDK).

Vous pouvez afficher les images étiquetées (lignes JSON) dans un ensemble de données en appelant ListDatasetEntries. Vous pouvez ajouter des images étiquetées en appelantUpdateDatasetEntries.

Pour consulter les informations relatives aux ensembles de données de test et d'entraînement, consultezAfficher vos ensembles de données.

Pour créer un ensemble de données (SDK)
  1. Si ce n'est pas déjà fait, installez et configurez les AWS CLI AWS SDK. Pour plus d’informations, consultez Étape 4 : Configuration des AWS SDK AWS CLI et.

  2. Utilisez l'exemple de code suivant pour créer un ensemble de données.

    CLI

    Remplacez les valeurs suivantes :

    • project-nameau nom du projet auquel vous souhaitez associer le jeu de données.

    • dataset-typeau type de jeu de données que vous souhaitez créer (trainoutest).

    • dataset-sourceà l'emplacement du fichier manifeste sur Amazon S3.

    • Bucketau nom du compartiment Amazon S3 qui contient le fichier manifeste.

    • Keyau chemin et au nom du fichier manifeste dans le compartiment 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

    Ce code est extrait du GitHub référentiel d'exemples du SDK de AWS documentation. Voir l’exemple complet ici.

    @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

    Ce code est extrait du GitHub référentiel d'exemples du SDK de AWS documentation. Voir l’exemple complet ici.

    /** * 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. Entraînez votre modèle en suivant les étapes décrites dansEntraînement d’un modèle (kit SDK).