Transformation des fichiers manifestes de SageMaker Ground Truth à étiquettes multiples - Rekognition

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.

Transformation des fichiers manifestes de SageMaker Ground Truth à étiquettes multiples

Cette rubrique explique comment transformer un fichier manifeste Amazon SageMaker Ground Truth multi-étiquettes en un fichier manifeste au format Amazon Rekognition Custom Labels.

SageMaker Les fichiers manifestes de Ground Truth pour les tâches à étiquettes multiples sont formatés différemment des fichiers manifestes au format Amazon Rekognition Custom Labels. La classification à plusieurs étiquettes a lieu lorsqu’une image est classée dans un ensemble de classes, mais qu’elle peut appartenir à plusieurs classes à la fois. Dans ce cas, l’image peut potentiellement comporter plusieurs étiquettes, telles que football et ballon.

Pour plus d'informations sur les tâches SageMaker Ground Truth à étiquettes multiples, consultez la section Classification d'images (étiquettes multiples). Pour plus d’informations sur les fichiers manifestes Étiquettes personnalisées Amazon Rekognition à plusieurs étiquettes, consultez Ajout de plusieurs étiquettes au niveau de l’image à une image.

Obtenir le fichier manifeste pour une tâche de SageMaker Ground Truth

La procédure suivante explique comment obtenir le fichier manifeste de sortie (output.manifest) pour une tâche Amazon SageMaker Ground Truth. Utilisez output.manifest comme entrée pour la procédure suivante.

Pour télécharger un fichier manifeste de travail de SageMaker Ground Truth
  1. Ouvrez le https://console.aws.amazon.com/sagemaker/.

  2. Dans le volet de navigation, choisissez Ground Truth, puis Étiquetage des tâches.

  3. Choisissez la tâche d’étiquetage qui contient le fichier manifeste que vous souhaitez utiliser.

  4. Sur la page de détails, cliquez sur le lien sous Emplacement de l’ensemble de données de sortie. La console Amazon S3 s’ouvre à l’emplacement du jeu de données.

  5. Choisissez Manifests, output puis output.manifest.

  6. Pour télécharger le fichier manifeste, choisissez Actions d’objet, puis Télécharger.

Transformation d'un fichier SageMaker manifeste à étiquettes multiples

La procédure suivante crée un fichier manifeste Amazon Rekognition Custom Labels au format multi-étiquettes à partir d'un fichier manifeste au format multi-étiquettes existant. SageMaker GroundTruth

Note

Pour exécuter le code, vous avez besoin de la version 3 de Python ou d’une version supérieure.

Pour transformer un fichier SageMaker manifeste à étiquettes multiples
  1. Exécutez le code Python suivant. Indiquez le nom du fichier manifeste que vous avez créé dans Obtenir le fichier manifeste pour une tâche de SageMaker Ground Truth en tant qu’argument de ligne de commande.

    # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 """ Purpose Shows how to create and Amazon Rekognition Custom Labels format manifest file from an Amazon SageMaker Ground Truth Image Classification (Multi-label) format manifest file. """ import json import logging import argparse import os.path logger = logging.getLogger(__name__) def create_manifest_file(ground_truth_manifest_file): """ Creates an Amazon Rekognition Custom Labels format manifest file from an Amazon SageMaker Ground Truth Image Classification (Multi-label) format manifest file. :param: ground_truth_manifest_file: The name of the Ground Truth manifest file, including the relative path. :return: The name of the new Custom Labels manifest file. """ logger.info('Creating manifest file from %s', ground_truth_manifest_file) new_manifest_file = f'custom_labels_{os.path.basename(ground_truth_manifest_file)}' # Read the SageMaker Ground Truth manifest file into memory. with open(ground_truth_manifest_file) as gt_file: lines = gt_file.readlines() #Iterate through the lines one at a time to generate the #new lines for the Custom Labels manifest file. with open(new_manifest_file, 'w') as the_new_file: for line in lines: #job_name - The of the Amazon Sagemaker Ground Truth job. job_name = '' # Load in the old json item from the Ground Truth manifest file old_json = json.loads(line) # Get the job name keys = old_json.keys() for key in keys: if 'source-ref' not in key and '-metadata' not in key: job_name = key new_json = {} # Set the location of the image new_json['source-ref'] = old_json['source-ref'] # Temporarily store the list of labels labels = old_json[job_name] # Iterate through the labels and reformat to Custom Labels format for index, label in enumerate(labels): new_json[f'{job_name}{index}'] = index metadata = {} metadata['class-name'] = old_json[f'{job_name}-metadata']['class-map'][str(label)] metadata['confidence'] = old_json[f'{job_name}-metadata']['confidence-map'][str(label)] metadata['type'] = 'groundtruth/image-classification' metadata['job-name'] = old_json[f'{job_name}-metadata']['job-name'] metadata['human-annotated'] = old_json[f'{job_name}-metadata']['human-annotated'] metadata['creation-date'] = old_json[f'{job_name}-metadata']['creation-date'] # Add the metadata to new json line new_json[f'{job_name}{index}-metadata'] = metadata # Write the current line to the json file the_new_file.write(json.dumps(new_json)) the_new_file.write('\n') logger.info('Created %s', new_manifest_file) return new_manifest_file def add_arguments(parser): """ Adds command line arguments to the parser. :param parser: The command line parser. """ parser.add_argument( "manifest_file", help="The Amazon SageMaker Ground Truth manifest file" "that you want to use." ) 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() # Create the manifest file manifest_file = create_manifest_file(args.manifest_file) print(f'Manifest file created: {manifest_file}') except FileNotFoundError as err: logger.exception('File not found: %s', err) print(f'File not found: {err}. Check your manifest file.') if __name__ == "__main__": main()
  2. Notez le nom du nouveau fichier manifeste affiché par le script. Vous l’utiliserez à l’étape suivante.

  3. Chargez les fichiers manifestes dans le compartiment Amazon S3 que vous souhaitez utiliser pour stocker ce type de fichier.

    Note

    Assurez-vous qu'Amazon Rekognition Custom Labels a accès au compartiment Amazon S3 référencé source-ref dans le champ des lignes du fichier manifeste. JSON Pour de plus amples informations, veuillez consulter Accès à des compartiments Amazon S3 externes. Si la tâche Ground Truth stocke des images dans le compartiment de la console Étiquettes personnalisées Amazon Rekognition, vous n’avez pas besoin d’ajouter d’autorisations.

  4. Suivez les instructions sous Création d'un ensemble de données à l'aide d'un fichier manifeste de SageMaker Ground Truth (Console) pour créer un jeu de données avec le fichier manifeste chargé. Pour l'étape 8, dans l'emplacement du fichier .manifest, entrez Amazon S3 URL comme emplacement du fichier manifeste. Si vous utilisez le AWS SDK, faites-leCréation d'un jeu de données avec un fichier manifeste de SageMaker Ground Truth (SDK).