不適切な画像の検出 - Amazon Rekognition

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

不適切な画像の検出

次に示すように、DetectModerationLabelsオペレーションを使用して、イメージに不適切または攻撃的なコンテンツが含まれているかどうかを判断します。Amazon Rekognition のモデレーションラベルのリストについては、画像および動画のモデレート API の使用

イメージ内の不適切なコンテンツを検出するには

イメージは、.jpg または .png 形式である必要があります。入力イメージとして、イメージバイト配列 (base64 でエンコードされたイメージバイト) を指定するか、Amazon S3 オブジェクトを指定できます。以下の手順では、イメージ (.jpg または .png) を S3 バケットにアップロードします。

これらの手順を実行するには、AWS CLI または適切な AWS SDK がインストールされている必要があります。詳細については、「Amazon REKognition の開始方法」を参照してください。使用する AWS アカウントには、Amazon Rekognition API に対するアクセス権限が必要です。詳細については、「」を参照してください。Amazon Rekognition で定義されるアクション

イメージでモデレーションラベルを検出するには (SDK)

  1. まだ実行していない場合:

    1. IAM ユーザーを作成または更新するにはAmazonRekognitionFullAccessおよびAmazonS3ReadOnlyAccessアクセス許可。詳細については、「ステップ 1: AWS アカウントをセットアップして IAM ユーザーを作成する」を参照してください。

    2. AWS CLI と AWS SDK をインストールして設定します。詳細については、「ステップ 2: のセットアップAWS CLIおよびAWSSDK」を参照してください。

  2. イメージを S3 バケットにアップロードします。

    手順については、以下を参照してください。Amazon S3 へのオブジェクトのアップロード()Amazon Simple Storage Service コンソールのユーザーガイド

  3. 以下の例を使用して、DetectModerationLabels オペレーションを呼び出します。

    Java

    この例では、検出された不適切なコンテンツのラベル名、信頼度、検出されたモデレーションラベルの親ラベルを出力します。

    bucketphoto の値は、ステップ 2 で使用した S3 バケット名とイメージファイル名に置き換えます。

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

    このコードはAWSドキュメンテーションSDKの例GitHub リポジトリです。完全な例を参照してくださいここ

    public static void detectModLabels(RekognitionClient rekClient, String sourceImage) { try { InputStream sourceStream = new FileInputStream(new File(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); // Display the results 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); }
    AWS CLI

    この AWS CLI コマンドでは、detect-moderation-labels CLI オペレーションの JSON 出力を表示します。

    bucketinput.jpg は、ステップ 2 で使用した S3 バケット名とイメージファイル名に置き換えます。

    aws rekognition detect-moderation-labels \ --image '{"S3Object":{"Bucket":"bucket","Name":"input.jpg"}}'
    Python

    この例では、検出された不適切なコンテンツのラベル名、信頼レベル、検出されたモデレーションラベルの親ラベルを出力します。

    関数 main で、bucketphoto の値は、ステップ 2 で使用した S3 バケット名とイメージファイル名に置き換えます。

    #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): client=boto3.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='photo' bucket='bucket' label_count=moderate_image(photo, bucket) print("Labels detected: " + str(label_count)) if __name__ == "__main__": main()
    .NET

    この例では、検出された不適切または攻撃的なコンテンツのラベル名、信頼度、検出されたモデレーションラベルの親ラベルを出力します。

    bucketphoto の値は、ステップ 2 で使用した S3 バケット名とイメージファイル名に置き換えます。

    //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 オペレーションのリクエスト

DetectModerationLabels への入力はイメージです。以下の JSON 入力の例では、ソースイメージを Amazon S3 バケットからロードします。MinConfidenceは、Amazon Rekognition イメージが、必要最小限のの信頼度であり、これ以上の精度の検出済みラベルがレスポンスで返されます。

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

DetectModerationLabels オペレーションレスポンス

DetectModerationLabels は、S3 バケットから入力イメージを取得できます。または、これらをイメージのバイトとしてユーザーが提供できます。DetectModerationLabels への呼び出しのレスポンス例を以下に示します。

ここで示す JSON レスポンスの例では、以下の点に留意してください。

  • 不適切なイメージ検出情報この例では、イメージ内で検出された不適切または攻撃的なコンテンツのラベルのリストを示しています。この一覧には、イメージで検出された最上位ラベルと第 2 レベルの各ラベルが表示されます。

    ラベル— ラベルごとに、名前、ラベルの精度を示す Amazon Rekognition の推定信頼度、および親ラベルの名前があります。最上位ラベルの親の名前は "" です。

    ラベルの信頼度— ラベルの精度を示す Amazon Rekognition の推定信頼度が 0 ~ 100 のパーセント値で示されます。レスポンスで返させるラベルの必要な信頼度は、API オペレーションリクエストで指定できます。

{ "ModerationLabels": [ { "Confidence": 99.24723052978516, "ParentName": "", "Name": "Explicit Nudity" }, { "Confidence": 99.24723052978516, "ParentName": "Explicit Nudity", "Name": "Graphic Male Nudity" }, { "Confidence": 88.25341796875, "ParentName": "Explicit Nudity", "Name": "Sexual Activity" } ] }