Detección de imágenes inapropiadas - Amazon Rekognition

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Detección de imágenes inapropiadas

Puede utilizar la DetectModerationLabelsoperación para determinar si una imagen contiene contenido inapropiado u ofensivo. Para ver una lista de las etiquetas de moderación en Amazon Rekognition, consulte Uso de la moderación de imágenes y vídeos. APIs

Detección de contenido inapropiado en una imagen

La imagen debe estar en formato .jpg o .png. Puede proporcionar la imagen de entrada como una matriz de bytes de imagen (con codificación en base64) o especificar un objeto de Amazon S3. En estos procedimientos carga una imagen (.jpg o .png) en su bucket de S3.

Para ejecutar estos procedimientos, debe tener instalado el AWS CLI o el apropiado. AWS SDK Para obtener más información, consulte Introducción a Amazon Rekognition. La AWS cuenta que utilice debe tener permisos de acceso a Amazon Rekognition. API Para obtener más información, consulte Acciones definidas por Amazon Rekognition.

Para detectar etiquetas de moderación en una imagen () SDK
  1. Si aún no lo ha hecho:

    1. Cree o actualice un usuario con los permisos AmazonRekognitionFullAccess y AmazonS3ReadOnlyAccess. Para obtener más información, consulte Paso 1: Configure una AWS cuenta y cree un usuario.

    2. Instale y configure el AWS CLI y el AWS SDKs. Para obtener más información, consulte Paso 2: Configura el AWS CLI y AWS SDKs.

  2. Suba una imagen en su bucket de S3.

    Para ver las instrucciones, consulte Carga de objetos en Amazon S3 en la Guía del usuario de Amazon Simple Storage Service.

  3. Consulte los siguientes ejemplos para llamar a la operación DetectModerationLabels.

    Java

    El resultado de este ejemplo son los nombres de las etiquetas de contenido inapropiado y los niveles de confianza detectados, así como la etiqueta principal de las etiquetas de moderación detectadas.

    Reemplace los valores de bucket y photo por el nombre del bucket de S3 y el nombre de archivo de imagen que utilizó en el paso 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

    Este código se ha tomado del GitHub repositorio de SDK ejemplos de AWS documentación. Consulte el ejemplo completo aquí.

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

    Este AWS CLI comando muestra el JSON resultado de la detect-moderation-labels CLI operación.

    Reemplace bucket y input.jpg por el nombre del bucket de S3 y el nombre de archivo de imagen que utilizó en el Paso 2. Sustituya el valor de profile_name de por el nombre de su perfil de desarrollador. Para usar un adaptador, proporcione ARN la versión del proyecto al project-version parámetro.

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

    Si está accediendo a él desde un dispositivo Windows, utilice comillas dobles CLI en lugar de comillas simples y evite las comillas dobles interiores con una barra invertida (es decir,\) para corregir cualquier error que pueda producirse en el analizador. Por ver un ejemplo, consulte lo siguiente:

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

    El resultado de este ejemplo son los nombres de las etiquetas de contenido ofensivo o inapropiado y los niveles de confianza detectados, así como la etiqueta principal de las etiquetas de contenido inapropiado detectadas.

    En la función main, reemplace los valores de bucket y photo por el nombre del bucket de S3 y el nombre del archivo de imagen que utilizó en el paso 2. Sustituya el valor de profile_name en la línea que crea la sesión de Rekognition por el nombre de su perfil de desarrollador.

    #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

    El resultado de este ejemplo son los nombres de las etiquetas de contenido ofensivo o inapropiado y los niveles de confianza detectados, así como la etiqueta principal de las etiquetas de moderación detectadas.

    Reemplace los valores de bucket y photo por el nombre del bucket de S3 y el nombre de archivo de imagen que utilizó en el paso 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 solicitud de operación

La entrada de DetectModerationLabels es una imagen. En esta JSON entrada de ejemplo, la imagen de origen se carga desde un bucket de Amazon S3. MinConfidencees la confianza mínima que Amazon Rekognition Image debe tener en la precisión de la etiqueta detectada para poder devolverla en la respuesta.

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

DetectModerationLabels respuesta operativa

DetectModerationLabels puede recuperar imágenes de entrada desde un bucket de S3 o puede proporcionarlas como bytes de imagen. El siguiente ejemplo es la respuesta de una llamada a DetectModerationLabels.

En el siguiente ejemplo de JSON respuesta, tenga en cuenta lo siguiente:

  • Información de detección de imágenes inapropiada: el ejemplo muestra una lista de etiquetas para el contenido inapropiado u ofensivo que se encuentra en la imagen. La lista incluye la etiqueta de nivel superior y todas las etiquetas de segundo nivel que se detectan en la imagen.

    Etiqueta: cada etiqueta tiene un nombre, una estimación de la confianza que Amazon Rekognition tiene de que la etiqueta es correcta y el nombre de su etiqueta principal. El nombre de entidad principal de una etiqueta de nivel superior es "".

    Confianza de etiqueta: cada etiqueta tiene un valor de confianza comprendido entre 0 y 100 que indica el porcentaje de confianza que Amazon Rekognition tiene de que la etiqueta es correcta. En la respuesta de la solicitud de API operación, debe especificar el nivel de confianza necesario para que se devuelva una etiqueta.

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