Erkennen unangemessener Bilder - Amazon Rekognition

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erkennen unangemessener Bilder

Mit dem Vorgang DetectModerationLabels können Sie feststellen, ob ein Bild unangemessenen oder anstößigen Inhalt enthält. Eine Liste der Moderationslabels in Amazon Rekognition finden Sie unter Verwenden der Bild- und Videomoderations-APIs.

Erkennen von unangemessenen Inhalten in einem Bild

Das Bild muss entweder im PNG- oder JPG-Format vorliegen. Sie können das Eingabebild als Array von Bild-Bytes (base64-kodierte Bild-Bytes) bereitstellen oder ein Amazon-S3-Objekt festlegen. In diesen Prozeduren laden Sie ein Bild (JPEG oder PNG) in Ihren S3-Bucket hoch.

Um diese Verfahren ausführen zu können, müssen Sie das AWS CLI oder das entsprechende AWS SDK installiert haben. Weitere Informationen finden Sie unter Erste Schritte mit Amazon Rekognition. Das AWS-Konto, das Sie verwenden, muss über die Zugriffsberechtigungen für die Amazon-Rekognition-API verfügen. Weitere Informationen finden Sie unter Von Amazon Rekognition definierte Aktionen.

Um Moderationslabels in einem Bild zu erkennen (SDK)
  1. Wenn Sie dies noch nicht getan haben:

    1. Erstellen oder aktualisieren Sie einen Benutzer mit AmazonRekognitionFullAccess- und AmazonS3ReadOnlyAccess-Berechtigungen. Weitere Informationen finden Sie unter Schritt 1: Einrichten eines AWS-Kontos und Erstellen eines Benutzers.

    2. Installieren und konfigurieren Sie die AWS CLI und die AWS SDKs. Weitere Informationen finden Sie unter Schritt 2: Richten Sie die AWS CLI und AWS SDKs ein.

  2. Laden Sie ein Bild in Ihren S3-Bucket hoch.

    Weitere Anleitungen finden Sie unter Upload eines Objekts in Amazon S3 im Benutzerhandbuch für Amazon Simple Storage Service.

  3. Verwenden Sie die folgenden Beispiele zum Aufrufen der DetectModerationLabels-Operation.

    Java

    In diesem Beispiel werden die Namen der erkannten Labels unangemessener Inhalte, Wahrscheinlichkeitsgrade und das übergeordnete Label für erkannte Moderationslabels ausgegeben.

    Ersetzen Sie die Werte von bucket und photo durch den S3-Bucket-Namen und den Bilddateinamen, die Sie in Schritt 2 verwendet haben.

    //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

    Dieser Code stammt aus dem AWS Documentation SDK Examples GitHub Repository. Das vollständige Beispiel finden Sie hier.

    //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

    Dieser AWS CLI Befehl zeigt die JSON-Ausgabe für den detect-moderation-labels CLI-Vorgang an.

    Ersetzen Sie bucket und input.jpg mit dem S3-Bucket-Namen und dem Bilddateinamen, die Sie in Schritt 2 verwendet haben. Ersetzen Sie den Wert von profile_name mit dem Namen Ihres Entwicklerprofils. Um einen Adapter zu verwenden, geben Sie den ARN der Projektversion für den project-version-Parameter an.

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

    Wenn Sie auf einem Windows-Gerät auf die CLI zugreifen, verwenden Sie doppelte Anführungszeichen anstelle von einfachen Anführungszeichen und maskieren Sie die inneren doppelten Anführungszeichen durch einen Backslash (d. h. \), um eventuell auftretende Parserfehler zu beheben. Sehen Sie sich zum Beispiel Folgendes an:

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

    In diesem Beispiel werden die Namen der erkannten unangemessenen oder anstößigen Inhaltslabels, die Vertrauensstufen und das übergeordnete Label für erkannte unangemessene Inhaltslabels ausgegeben.

    Ersetzen Sie in der main-Funktion die Werte von bucket und photo durch den S3-Bucket-Namen und den Bilddateinamen, die Sie in Schritt 2 verwendet haben. Ersetzen Sie den Wert von profile_name in der Zeile, die die Rekognition-Sitzung erstellt, durch den Namen Ihres Entwicklerprofils.

    #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

    In diesem Beispiel werden die Namen der erkannten Labels unangemessener oder anstößiger Inhalte, Wahrscheinlichkeitsgrade und das übergeordnete Label für erkannte Moderationslabels ausgegeben.

    Ersetzen Sie die Werte von bucket und photo durch den S3-Bucket-Namen und den Bilddateinamen, die Sie in Schritt 2 verwendet haben.

    //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 Operationsanforderung

Die Eingabe in DetectModerationLabels ist ein Bild. In dieser Beispiel-JSON-Eingabe wird das Quellbild aus einem Amazon-S3-Bucket geladen. ist MinConfidence das minimale Vertrauen, das Amazon Rekognition Image in die Genauigkeit des erkannten Labels haben muss, damit es in der Antwort zurückgegeben wird.

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

DetectModerationLabels Antwort auf die Operation

DetectModerationLabels kann Eingabebilder aus einem S3-Bucket abrufen oder als Image-Bytes zur Verfügung stellen. Das folgende Beispiel zeigt die Antwort auf eine Anforderung an DetectModerationLabels.

In der folgenden Beispiel-JSON-Antwort sollte Folgendes beachtet werden:

  • Informationen zur Erkennung unangemessener Bilder: Das Beispiel zeigt eine Liste mit Labels für unangemessene oder anstößige Inhalte, die im Bild gefunden wurden. Die Liste umfasst das auf dem Bild erkannte Label der Oberkategorie sowie jedes Label von Kategorien zweiter Stufe.

    Label – Jedes Label verfügt über einen Namen, einen geschätzten Zuverlässigkeitswert von Amazon Rekognition in Bezug auf die Exaktheit des Labels sowie den Namen des übergeordneten Labels. Der übergeordnete Name für ein übergeordnetes Label ist "".

    Zuverlässigkeitswert für das Label – Jedes Label verfügt über einen Zuverlässigkeitswert zwischen 0 und 100. Dieser gibt an, zu wie viel Prozent Amazon Rekognition sicher ist, dass das Label korrekt ist. Sie geben den erforderlichen Zuverlässigkeitswert für ein Label an, das bei der Erstellung der Antwort durch die API-Operation gelten soll.

{ "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" } ] }