Detectando imagens inapropriadas - Amazon Rekognition

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Detectando imagens inapropriadas

Você pode usar a DetectModerationLabelsoperação para determinar se uma imagem contém conteúdo impróprio ou ofensivo. Para obter uma lista de rótulos de moderação no Amazon Rekognition, consulte Uso da moderação de imagens e vídeos. APIs

Detectando conteúdo impróprio em uma imagem

A imagem deve estar em um formato .jpg ou .png. Você pode fornecer a imagem de entrada como uma matriz de bytes de imagem (bytes de imagem codificados em base64) ou especificar um objeto Amazon S3. Nestes procedimentos, você faz upload de uma imagem (.jpg ou .png) em seu bucket do S3.

Para executar esses procedimentos, você precisa ter o AWS CLI ou o apropriado AWS SDK instalado. Para obter mais informações, consulte Comece a usar o Amazon Rekognition. A AWS conta que você usa deve ter permissões de acesso ao Amazon RekognitionAPI. Para obter mais informações, consulte Ações definidas pelo Amazon Rekognition.

Para detectar rótulos de moderação em uma imagem () SDK
  1. Se ainda não tiver feito isso:

    1. Crie ou atualize um usuário com permissões AmazonRekognitionFullAccess e AmazonS3ReadOnlyAccess. Para obter mais informações, consulte Etapa 1: configurar uma AWS conta e criar um usuário.

    2. Instale e configure o AWS CLI e AWS SDKs o. Para obter mais informações, consulte Etapa 2: configurar o AWS CLI e AWS SDKs.

  2. Faça upload de uma imagem no bucket do S3.

    Para obter instruções, consulte Como fazer upload de objetos no Amazon S3 no Guia do usuário do Amazon Simple Storage Service.

  3. Use os exemplos a seguir para chamar a operação DetectModerationLabels.

    Java

    Este exemplo mostra nomes de rótulos de conteúdo inadequados, níveis de confiança e o rótulo principal detectados para rótulos de moderação detectados.

    Substitua os valores de bucket e photo pelo nome do bucket do S3 e o nome do arquivo de imagem usado na etapa 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

    Esse código foi retirado do GitHub repositório de SDK exemplos de AWS documentação. Veja o exemplo completo aqui.

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

    Esse AWS CLI comando exibe a JSON saída da detect-moderation-labels CLI operação.

    Substitua bucket e input.jpg pelo nome do bucket do S3 e o nome do arquivo de imagem usado na etapa 2. Substitua o valor de profile_name com o nome do seu perfil de desenvolvedor. Para usar um adaptador, forneça a ARN versão do projeto ao project-version parâmetro.

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

    Se você estiver acessando o CLI em um dispositivo Windows, use aspas duplas em vez de aspas simples e escape das aspas duplas internas usando barra invertida (ou seja,\) para solucionar quaisquer erros do analisador que você possa encontrar. Para obter um exemplo, veja o seguinte:

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

    Este exemplo mostra nomes de rótulos de conteúdo inadequados ou ofensivos detectados, níveis de confiança e o rótulo principal para rótulos de conteúdo inadequados detectados.

    Na função main, substitua os valores de bucket e photo pelo nome do bucket do S3 e o nome do arquivo de imagem usado na etapa 2. Substitua o valor de profile_name na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor.

    #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

    Este exemplo mostra nomes de rótulos de conteúdo impróprios ou ofensivos, níveis de confiança e o rótulo principal detectados para rótulos de moderação detectados.

    Substitua os valores de bucket e photo pelo nome do bucket do S3 e o nome do arquivo de imagem usado na etapa 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 solicitação de operação

A entrada de DetectModerationLabels é uma imagem. Neste exemplo JSON de entrada, a imagem de origem é carregada de um bucket do Amazon S3. MinConfidenceé a confiança mínima que o Amazon Rekognition Image deve ter na precisão da etiqueta detectada para que ela seja retornada na resposta.

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

DetectModerationLabels resposta da operação

O DetectModerationLabels pode recuperar imagens de entrada a partir de um bucket do S3 ou você pode fornecê-las como bytes de imagens. O exemplo a seguir é a resposta de uma chamada para DetectModerationLabels.

No exemplo de JSON resposta a seguir, observe o seguinte:

  • Informações de detecção de imagem impróprias — O exemplo mostra uma lista de rótulos para conteúdo impróprio ou ofensivo encontrado na imagem. A lista inclui o rótulo de nível superior e cada rótulo de segundo nível detectado na imagem.

    Rótulo — Cada rótulo tem um nome, uma estimativa da confiança que o Amazon Rekognition tem de que a etiqueta é precisa e o nome do rótulo principal. O nome pai de um rótulo de nível superior é "".

    Confiança do rótulo — Cada rótulo tem um valor de confiança entre 0 e 100 que indica a porcentagem de confiança que o Amazon Rekognition tem de que o rótulo está correto. Você especifica o nível de confiança necessário para que uma etiqueta seja retornada na resposta na solicitação de API operação.

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