Amazon S3 バケットに保存されているイメージの分析 - Amazon Rekognition

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

Amazon S3 バケットに保存されているイメージの分析

Amazon REKognition Image は、Amazon S3 バケットに保存されたイメージ、またはイメージのバイトとして提供されたイメージを分析できます。

このトピックでは、 DetectLabels API オペレーションを使用して、Amazon S3 バケットに保存されたイメージ (JPEG または PNG) 内のオブジェクト、概念、シーンを検出します。Amazon Rekognition イメージ API オペレーションに画像を渡すには、 Image 入力パラメータ。Image 内で S3Object オブジェクトプロパティを指定し、S3 バケットに保存されたイメージを参照します。Amazon S3 バケットに保存されているイメージのバイトは base64 でエンコードする必要はありません。詳細については、「イメージの仕様」を参照してください。

リクエストの例

この例では、の JSON リクエストでDetectLabels、ソース画像 (input.jpgという名前の Amazon S3 バケットからロードされます。MyBucket。S3 オブジェクトが含まれている S3 バケットのリージョンと Amazon REKognition Image オペレーションで使用するリージョンが一致している必要があります。

{ "Image": { "S3Object": { "Bucket": "MyBucket", "Name": "input.jpg" } }, "MaxLabels": 10, "MinConfidence": 75 }

以下の例では、さまざまな AWS SDK と AWS CLI を使用して DetectLabels を呼び出します。DetectLabels オペレーションからのレスポンスの詳細については、「DetectLabels レスポンス」を参照してください。

イメージ内のラベルを検出するには

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

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

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

  2. 1 つ以上のオブジェクト (樹木、家、ボートなど) が含まれているイメージを S3 バケットにアップロードします。イメージは、.jpg 形式または .png 形式にする必要があります。

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

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

    Java

    この例では、入力イメージ内で検出されたラベルのリストを表示します。の値を置換します。bucketおよびphotoステップ 2 で使用した Amazon 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 com.amazonaws.samples; 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.DetectLabelsRequest; import com.amazonaws.services.rekognition.model.DetectLabelsResult; import com.amazonaws.services.rekognition.model.Image; import com.amazonaws.services.rekognition.model.Label; import com.amazonaws.services.rekognition.model.S3Object; import java.util.List; public class DetectLabels { public static void main(String[] args) throws Exception { String photo = "input.jpg"; String bucket = "bucket"; AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient(); DetectLabelsRequest request = new DetectLabelsRequest() .withImage(new Image() .withS3Object(new S3Object() .withName(photo).withBucket(bucket))) .withMaxLabels(10) .withMinConfidence(75F); try { DetectLabelsResult result = rekognitionClient.detectLabels(request); List <Label> labels = result.getLabels(); System.out.println("Detected labels for " + photo); for (Label label: labels) { System.out.println(label.getName() + ": " + label.getConfidence().toString()); } } catch(AmazonRekognitionException e) { e.printStackTrace(); } } }
    AWS CLI

    この例では、CLI の detect-labels オペレーションの JSON 出力を表示します。の値を置換します。bucketおよびphotoステップ 2 で使用した Amazon S3 バケット名とイメージ名に置き換えます。

    aws rekognition detect-labels \ --image '{"S3Object":{"Bucket":"bucket","Name":"file"}}'
    Java V2

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

    public static void getLabelsfromImage(RekognitionClient rekClient, String bucket, String image) { try { S3Object s3Object = S3Object.builder() .bucket(bucket) .name(image) .build() ; Image myImage = Image.builder() .s3Object(s3Object) .build(); DetectLabelsRequest detectLabelsRequest = DetectLabelsRequest.builder() .image(myImage) .maxLabels(10) .build(); DetectLabelsResponse labelsResponse = rekClient.detectLabels(detectLabelsRequest); List<Label> labels = labelsResponse.labels(); System.out.println("Detected labels for the given photo"); for (Label label: labels) { System.out.println(label.name() + ": " + label.confidence().toString()); } } catch (RekognitionException e) { System.out.println(e.getMessage()); System.exit(1); } }
    Python

    この例では、入力イメージ内で検出されたラベルを表示します。の値を置換します。bucketおよびphotoステップ 2 で使用した Amazon 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 detect_labels(photo, bucket): client=boto3.client('rekognition') response = client.detect_labels(Image={'S3Object':{'Bucket':bucket,'Name':photo}}, MaxLabels=10) print('Detected labels for ' + photo) print() for label in response['Labels']: print ("Label: " + label['Name']) print ("Confidence: " + str(label['Confidence'])) print ("Instances:") for instance in label['Instances']: print (" Bounding box") print (" Top: " + str(instance['BoundingBox']['Top'])) print (" Left: " + str(instance['BoundingBox']['Left'])) print (" Width: " + str(instance['BoundingBox']['Width'])) print (" Height: " + str(instance['BoundingBox']['Height'])) print (" Confidence: " + str(instance['Confidence'])) print() print ("Parents:") for parent in label['Parents']: print (" " + parent['Name']) print ("----------") print () return len(response['Labels']) def main(): photo='' bucket='' label_count=detect_labels(photo, bucket) print("Labels detected: " + str(label_count)) if __name__ == "__main__": main()
    .NET

    この例では、入力イメージ内で検出されたラベルのリストを表示します。の値を置換します。bucketおよびphotoステップ 2 で使用した Amazon 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 DetectLabels { public static void Example() { String photo = "input.jpg"; String bucket = "bucket"; AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient(); DetectLabelsRequest detectlabelsRequest = new DetectLabelsRequest() { Image = new Image() { S3Object = new S3Object() { Name = photo, Bucket = bucket }, }, MaxLabels = 10, MinConfidence = 75F }; try { DetectLabelsResponse detectLabelsResponse = rekognitionClient.DetectLabels(detectlabelsRequest); Console.WriteLine("Detected labels for " + photo); foreach (Label label in detectLabelsResponse.Labels) Console.WriteLine("{0}: {1}", label.Name, label.Confidence); } catch (Exception e) { Console.WriteLine(e.Message); } } }
    Ruby

    この例では、入力イメージ内で検出されたラベルのリストを表示します。の値を置換します。bucketおよびphotoステップ 2 で使用した Amazon S3 バケット名とイメージ名に置き換えます。

    #Copyright 2020 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.) # Add to your Gemfile # gem 'aws-sdk-rekognition' require 'aws-sdk-rekognition' credentials = Aws::Credentials.new( ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'] ) bucket = 'bucket' # the bucket name without s3:// photo = 'photo' # the name of file client = Aws::Rekognition::Client.new credentials: credentials attrs = { image: { s3_object: { bucket: bucket, name: photo }, }, max_labels: 10 } response = client.detect_labels attrs puts "Detected labels for: #{photo}" response.labels.each do |label| puts "Label: #{label.name}" puts "Confidence: #{label.confidence}" puts "Instances:" label['instances'].each do |instance| box = instance['bounding_box'] puts " Bounding box:" puts " Top: #{box.top}" puts " Left: #{box.left}" puts " Width: #{box.width}" puts " Height: #{box.height}" puts " Confidence: #{instance.confidence}" end puts "Parents:" label.parents.each do |parent| puts " #{parent.name}" end puts "------------" puts "" end

レスポンスの例

DetectLabels からのレスポンスは、イメージ内で検出されたラベルとラベルの検出に使用された信頼度の配列です。

実行すると、DetectLabelsオペレーションを実行すると、Amazon REKognition が次のレスポンス例のような出力を返します。

このレスポンスは、オペレーションが Person、Vehicle、Car を含む複数のラベルを検出したことを示しています。各ラベルに信頼度が関連付けられています。たとえば、イメージに人物が含まれている確率として、検出アルゴリズムの信頼度は 98.991432% です。

レスポンスには Parents 配列内のラベルの先祖ラベルも含まれます。たとえば、ラベル Automobile には、Vehicle と Transportation という名前の 2 つの親ラベルがあります。

共通オブジェクトラベルに対するレスポンスは、入力画像上のラベルの位置に対する境界ボックス情報を含みます。たとえば、Person ラベルには、2 つの境界ボックスを含むインスタンス配列があります。これらは、画像内で検出された 2 人の人物の位置です。

フィールド LabelModelVersion には DetectLabels で使用される検出モデルのバージョン番号が含まれます。

の使用方法の詳細については、DetectLabels操作の詳細については、ラベルの検出

{ { "Labels": [ { "Name": "Vehicle", "Confidence": 99.15271759033203, "Instances": [], "Parents": [ { "Name": "Transportation" } ] }, { "Name": "Transportation", "Confidence": 99.15271759033203, "Instances": [], "Parents": [] }, { "Name": "Automobile", "Confidence": 99.15271759033203, "Instances": [], "Parents": [ { "Name": "Vehicle" }, { "Name": "Transportation" } ] }, { "Name": "Car", "Confidence": 99.15271759033203, "Instances": [ { "BoundingBox": { "Width": 0.10616336017847061, "Height": 0.18528179824352264, "Left": 0.0037978808395564556, "Top": 0.5039216876029968 }, "Confidence": 99.15271759033203 }, { "BoundingBox": { "Width": 0.2429988533258438, "Height": 0.21577216684818268, "Left": 0.7309805154800415, "Top": 0.5251884460449219 }, "Confidence": 99.1286392211914 }, { "BoundingBox": { "Width": 0.14233611524105072, "Height": 0.15528248250484467, "Left": 0.6494812965393066, "Top": 0.5333095788955688 }, "Confidence": 98.48368072509766 }, { "BoundingBox": { "Width": 0.11086395382881165, "Height": 0.10271988064050674, "Left": 0.10355594009160995, "Top": 0.5354844927787781 }, "Confidence": 96.45606231689453 }, { "BoundingBox": { "Width": 0.06254628300666809, "Height": 0.053911514580249786, "Left": 0.46083059906959534, "Top": 0.5573825240135193 }, "Confidence": 93.65448760986328 }, { "BoundingBox": { "Width": 0.10105438530445099, "Height": 0.12226245552301407, "Left": 0.5743985772132874, "Top": 0.534368634223938 }, "Confidence": 93.06217193603516 }, { "BoundingBox": { "Width": 0.056389667093753815, "Height": 0.17163699865341187, "Left": 0.9427769780158997, "Top": 0.5235804319381714 }, "Confidence": 92.6864013671875 }, { "BoundingBox": { "Width": 0.06003860384225845, "Height": 0.06737709045410156, "Left": 0.22409997880458832, "Top": 0.5441341400146484 }, "Confidence": 90.4227066040039 }, { "BoundingBox": { "Width": 0.02848697081208229, "Height": 0.19150497019290924, "Left": 0.0, "Top": 0.5107086896896362 }, "Confidence": 86.65286254882812 }, { "BoundingBox": { "Width": 0.04067881405353546, "Height": 0.03428703173995018, "Left": 0.316415935754776, "Top": 0.5566273927688599 }, "Confidence": 85.36471557617188 }, { "BoundingBox": { "Width": 0.043411049991846085, "Height": 0.0893595889210701, "Left": 0.18293385207653046, "Top": 0.5394920110702515 }, "Confidence": 82.21705627441406 }, { "BoundingBox": { "Width": 0.031183116137981415, "Height": 0.03989990055561066, "Left": 0.2853088080883026, "Top": 0.5579366683959961 }, "Confidence": 81.0157470703125 }, { "BoundingBox": { "Width": 0.031113790348172188, "Height": 0.056484755128622055, "Left": 0.2580395042896271, "Top": 0.5504819750785828 }, "Confidence": 56.13441467285156 }, { "BoundingBox": { "Width": 0.08586374670267105, "Height": 0.08550430089235306, "Left": 0.5128012895584106, "Top": 0.5438792705535889 }, "Confidence": 52.37760925292969 } ], "Parents": [ { "Name": "Vehicle" }, { "Name": "Transportation" } ] }, { "Name": "Human", "Confidence": 98.9914321899414, "Instances": [], "Parents": [] }, { "Name": "Person", "Confidence": 98.9914321899414, "Instances": [ { "BoundingBox": { "Width": 0.19360728561878204, "Height": 0.2742200493812561, "Left": 0.43734854459762573, "Top": 0.35072067379951477 }, "Confidence": 98.9914321899414 }, { "BoundingBox": { "Width": 0.03801717236638069, "Height": 0.06597328186035156, "Left": 0.9155802130699158, "Top": 0.5010883808135986 }, "Confidence": 85.02790832519531 } ], "Parents": [] } ], "LabelModelVersion": "2.0" } }