Détection d’images inappropriées - Amazon 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.

Détection d’images inappropriées

Vous pouvez utiliser cette DetectModerationLabelsopération pour déterminer si une image contient un contenu inapproprié ou offensant. Pour obtenir la liste des labels de modération dans Amazon Rekognition, consultez Utilisation de la modération des images et des vidéos. APIs

Détection d’un contenu inapproprié dans une image

L’image doit être au format .jpg ou .png. Vous pouvez fournir l’image d’entrée sous la forme d’un tableau d’octets d’image (octets d’image encodés en base64), ou spécifier un objet Amazon S3. Dans ces procédures, vous chargez une image (.jpg ou .png) dans votre compartiment S3.

Pour exécuter ces procédures, vous devez avoir AWS SDK installé le AWS CLI ou le logiciel approprié. Pour de plus amples informations, veuillez consulter Premiers pas avec Amazon Rekognition. Le AWS compte que vous utilisez doit disposer des autorisations d'accès à Amazon Rekognition. API Pour plus d’informations, consultez Actions définies par Amazon Rekognition.

Pour détecter les libellés de modération dans une image (SDK)
  1. Si vous ne l’avez pas déjà fait :

    1. Créez ou mettez à jour un utilisateur avec les autorisations AmazonRekognitionFullAccess et AmazonS3ReadOnlyAccess. Pour de plus amples informations, veuillez consulter Étape 1 : créer un AWS compte et créer un utilisateur.

    2. Installez et configurez le AWS CLI et le AWS SDKs. Pour de plus amples informations, veuillez consulter Étape 2 : configurer le AWS CLI et AWS SDKs.

  2. Chargez une image dans votre compartiment S3.

    Pour en savoir plus, consultez Chargement d’objets dans Amazon S3 dans le Guide de l’utilisateur Amazon Simple Storage Service.

  3. Utilisez les exemples suivants pour appeler l’opération DetectModerationLabels.

    Java

    Cet exemple génère les noms des étiquettes de contenu inapproprié détecté, les niveaux de fiabilité et l’étiquette parent des étiquettes de modération détectées.

    Remplacez les valeurs de bucket et de photo par le nom du compartiment S3 et le nom du fichier image utilisés à l’étape 2.

    //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.) package aws.example.rekognition.image; import com.amazonaws.services.rekognition.AmazonRekognition; import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder; import com.amazonaws.services.rekognition.model.AmazonRekognitionException; import com.amazonaws.services.rekognition.model.DetectModerationLabelsRequest; import com.amazonaws.services.rekognition.model.DetectModerationLabelsResult; import com.amazonaws.services.rekognition.model.Image; import com.amazonaws.services.rekognition.model.ModerationLabel; import com.amazonaws.services.rekognition.model.S3Object; import java.util.List; public class DetectModerationLabels { public static void main(String[] args) throws Exception { String photo = "input.jpg"; String bucket = "bucket"; AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient(); DetectModerationLabelsRequest request = new DetectModerationLabelsRequest() .withImage(new Image().withS3Object(new S3Object().withName(photo).withBucket(bucket))) .withMinConfidence(60F); try { DetectModerationLabelsResult result = rekognitionClient.detectModerationLabels(request); List<ModerationLabel> labels = result.getModerationLabels(); System.out.println("Detected labels for " + photo); for (ModerationLabel label : labels) { System.out.println("Label: " + label.getName() + "\n Confidence: " + label.getConfidence().toString() + "%" + "\n Parent:" + label.getParentName()); } } catch (AmazonRekognitionException e) { e.printStackTrace(); } } }
    Java V2

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

    //snippet-start:[rekognition.java2.recognize_video_text.import] //snippet-start:[rekognition.java2.detect_mod_labels.import] import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider; import software.amazon.awssdk.core.SdkBytes; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.rekognition.RekognitionClient; import software.amazon.awssdk.services.rekognition.model.RekognitionException; import software.amazon.awssdk.services.rekognition.model.Image; import software.amazon.awssdk.services.rekognition.model.DetectModerationLabelsRequest; import software.amazon.awssdk.services.rekognition.model.DetectModerationLabelsResponse; import software.amazon.awssdk.services.rekognition.model.ModerationLabel; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.util.List; //snippet-end:[rekognition.java2.detect_mod_labels.import] /** * Before running this Java V2 code example, set up your development environment, including your credentials. * * For more information, see the following documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html */ public class ModerateLabels { public static void main(String[] args) { final String usage = "\n" + "Usage: " + " <sourceImage>\n\n" + "Where:\n" + " sourceImage - The path to the image (for example, C:\\AWS\\pic1.png). \n\n"; if (args.length < 1) { System.out.println(usage); System.exit(1); } String sourceImage = args[0]; Region region = Region.US_WEST_2; RekognitionClient rekClient = RekognitionClient.builder() .region(region) .credentialsProvider(ProfileCredentialsProvider.create("profile-name")) .build(); detectModLabels(rekClient, sourceImage); rekClient.close(); } // snippet-start:[rekognition.java2.detect_mod_labels.main] public static void detectModLabels(RekognitionClient rekClient, String sourceImage) { try { InputStream sourceStream = new FileInputStream(sourceImage); SdkBytes sourceBytes = SdkBytes.fromInputStream(sourceStream); Image souImage = Image.builder() .bytes(sourceBytes) .build(); DetectModerationLabelsRequest moderationLabelsRequest = DetectModerationLabelsRequest.builder() .image(souImage) .minConfidence(60F) .build(); DetectModerationLabelsResponse moderationLabelsResponse = rekClient.detectModerationLabels(moderationLabelsRequest); List<ModerationLabel> labels = moderationLabelsResponse.moderationLabels(); System.out.println("Detected labels for image"); for (ModerationLabel label : labels) { System.out.println("Label: " + label.name() + "\n Confidence: " + label.confidence().toString() + "%" + "\n Parent:" + label.parentName()); } } catch (RekognitionException | FileNotFoundException e) { e.printStackTrace(); System.exit(1); } } // snippet-end:[rekognition.java2.detect_mod_labels.main]
    AWS CLI

    Cette AWS CLI commande affiche le JSON résultat de l'detect-moderation-labelsCLIopération.

    Remplacez bucket et input.jpg par le nom du compartiment S3 et le nom du fichier image utilisés à l’étape 2. Remplacez la valeur de profile_name par le nom de votre profil de développeur. Pour utiliser un adaptateur, indiquez la version ARN du projet dans le project-version paramètre.

    aws rekognition detect-moderation-labels --image "{S3Object:{Bucket:<bucket-name>,Name:<image-name>}}" \ --profile profile-name \ --project-version "ARN"

    Si vous y accédez CLI sur un appareil Windows, utilisez des guillemets doubles au lieu de guillemets simples et évitez les guillemets doubles intérieurs par une barre oblique inverse (c'est-à-dire \) pour corriger les erreurs d'analyse que vous pourriez rencontrer. Pour un exemple, consultez ce qui suit :

    aws rekognition detect-moderation-labels --image "{\"S3Object\":{\"Bucket\":\"bucket-name\",\"Name\":\"image-name\"}}" \ --profile profile-name
    Python

    Cet exemple génère des noms d’étiquettes de contenu inapproprié détecté, des niveaux de confiance et l’étiquette parent pour les étiquettes de contenu inapproprié détecté.

    Dans la fonction main, remplacez les valeurs de bucket et photo par le nom du compartiment S3 et le nom du fichier image que vous avez utilisés à l’étape 2. Remplacez la valeur de profile_name dans la ligne qui crée la session de Rekognition par le nom de votre profil de développeur.

    #Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. #PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.) import boto3 def moderate_image(photo, bucket): session = boto3.Session(profile_name='profile-name') client = session.client('rekognition') response = client.detect_moderation_labels(Image={'S3Object':{'Bucket':bucket,'Name':photo}}) print('Detected labels for ' + photo) for label in response['ModerationLabels']: print (label['Name'] + ' : ' + str(label['Confidence'])) print (label['ParentName']) return len(response['ModerationLabels']) def main(): photo='image-name' bucket='bucket-name' label_count=moderate_image(photo, bucket) print("Labels detected: " + str(label_count)) if __name__ == "__main__": main()
    .NET

    Cet exemple génère les noms des étiquettes de contenu inapproprié détecté, les niveaux de fiabilité et l’étiquette parent des étiquettes de modération détectées.

    Remplacez les valeurs de bucket et de photo par le nom du compartiment S3 et le nom du fichier image utilisés à l’étape 2.

    //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.) using System; using Amazon.Rekognition; using Amazon.Rekognition.Model; public class DetectModerationLabels { public static void Example() { String photo = "input.jpg"; String bucket = "bucket"; AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient(); DetectModerationLabelsRequest detectModerationLabelsRequest = new DetectModerationLabelsRequest() { Image = new Image() { S3Object = new S3Object() { Name = photo, Bucket = bucket }, }, MinConfidence = 60F }; try { DetectModerationLabelsResponse detectModerationLabelsResponse = rekognitionClient.DetectModerationLabels(detectModerationLabelsRequest); Console.WriteLine("Detected labels for " + photo); foreach (ModerationLabel label in detectModerationLabelsResponse.ModerationLabels) Console.WriteLine("Label: {0}\n Confidence: {1}\n Parent: {2}", label.Name, label.Confidence, label.ParentName); } catch (Exception e) { Console.WriteLine(e.Message); } } }

DetectModerationLabels demande d'opération

La valeur d’entrée de DetectModerationLabels est une image. Dans cet exemple JSON d'entrée, l'image source est chargée depuis un compartiment Amazon S3. MinConfidenceest le niveau de confiance minimal qu'Amazon Rekognition Image doit avoir quant à l'exactitude de l'étiquette détectée pour qu'elle soit renvoyée dans la réponse.

{ "Image": { "S3Object": { "Bucket": "bucket", "Name": "input.jpg" } }, "MinConfidence": 60 }

DetectModerationLabels réponse à l'opération

DetectModerationLabels permet de récupérer des images d’entrée à partir d’un compartiment S3. Vous pouvez également les fournir sous forme d’octets d’image. L’exemple suivant est la réponse d’un appel à DetectModerationLabels.

Dans l'exemple de JSON réponse suivant, notez ce qui suit :

  • Informations de détection d’image inappropriées : l’exemple montre une liste d’étiquettes indiquant le contenu inapproprié ou offensant trouvé dans l’image. La liste comprend l’étiquette de premier niveau et chaque étiquette de second niveau détectée dans l’image.

    Etiquette :chaque étiquette possède un nom, une estimation de la fiabilité attribuée par Amazon Rekognition quant à l’exactitude de l’étiquette, et le nom de son étiquette parent. Le nom parent d’une étiquette de premier niveau est "".

    Fiabilité de l’étiquette : chaque étiquette a une valeur de fiabilité comprise entre 0 et 100 qui indique le pourcentage de fiabilité attribuée par Amazon Rekognition à l’exactitude de l’étiquette. Vous spécifiez le niveau de confiance requis pour une étiquette à renvoyer dans la réponse à la demande API d'opération.

{ "ModerationLabels": [ { "Confidence": 99.44782257080078, "Name": "Smoking", "ParentName": "Drugs & Tobacco Paraphernalia & Use", "TaxonomyLevel": 3 }, { "Confidence": 99.44782257080078, "Name": "Drugs & Tobacco Paraphernalia & Use", "ParentName": "Drugs & Tobacco", "TaxonomyLevel": 2 }, { "Confidence": 99.44782257080078, "Name": "Drugs & Tobacco", "ParentName": "", "TaxonomyLevel": 1 } ], "ModerationModelVersion": "7.0", "ContentTypes": [ { "Confidence": 99.9999008178711, "Name": "Illustrated" } ] }