Erkennen von Prominenten in einem Bild - 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 von Prominenten in einem Bild

Um Prominente in Bildern zu erkennen und um zusätzliche Informationen über sie zu erhalten, verwenden Sie die nicht speichernde API-Operation RecognizeCelebrities. Sie können beispielsweise in sozialen Medien oder Nachrichten- und Unterhaltungsindustrien, in denen das Sammeln von Informationen oft zeitkritisch sein kann, mit der Operation RecognizeCelebritiesbis zu 64 Prominente in einem Bild identifizieren und Links zu Webseiten von Prominenten zurückgeben, sofern diese verfügbar sind. Amazon Rekognition merkt sich nicht, in welchem Bild die Prominenten entdeckt wurden. Ihre Anwendung muss diese Informationen speichern.

Wenn Sie die zusätzlichen Informationen für einen Prominenten nicht gespeichert haben, die von RecognizeCelebrities zurückgegeben wurden, diese aber erhalten möchten, ohne das Bild erneut zu analysieren, verwenden Sie GetCelebrityInfo. Um GetCelebrityInfo aufzurufen, benötigen Sie die eindeutige Kennung, die Amazon Rekognition jedem Prominenten zuweist. Die Kennung wird als Teil der RecognizeCelebrities-Antwort für jeden erkannten Prominenten zurückgegeben.

Wenn Sie eine große Sammlung von Bildern für die Erkennung von Prominenten verarbeiten, empfiehlt sich der Einsatz von AWS Batch zum Verarbeiten von Aufrufen an RecognizeCelebrities in Stapeln im Hintergrund. Wenn Sie Ihrer Sammlung ein neues Bild hinzufügen, können Sie für die Erkennung von Prominenten eine AWS Lambda-Funktion verwenden, indem Sie RecognizeCelebrities aufrufen, sobald ein Bild in einen S3-Bucket hochgeladen wird.

Aufrufen von RecognizeCelebrities

Sie können das Eingabebild als Bild-Byte-Array (base64-codierte Bild-Bytes) oder als AWS Command Line Interface-Objekt bereitstellen. Dazu verwenden Sie entweder die (AWS CLI) oder das AWS-SDK. Im AWS CLI-Verfahren laden Sie ein Bild im JPG- oder PNG-Format in einen S3-Bucket hoch. In den Verfahren mit dem AWS SDK verwenden Sie ein Abbild, das aus Ihrem lokalen Dateisystem geladen wird. Weitere Informationen zu Eingabebild-Empfehlungen finden Sie unter Arbeiten mit Bildern.

Zum Ausführen dieses Verfahrens benötigen Sie eine Bilddatei mit einem oder mehreren Gesichtern von Prominenten.

Erkennen von Prominenten in einem Bild
  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 AWS CLI und AWS SDKs. Weitere Informationen finden Sie unter Schritt 2: Richten Sie die AWS CLI und AWS SDKs ein.

  2. Verwenden Sie die folgenden Beispiele zum Aufrufen der RecognizeCelebrities-Operation.

    Java

    Dieses Beispiel zeigt Informationen über die Prominenten an, die in einem Bild erkannt werden.

    Ändern Sie den Wert von photo in den Pfad und Dateinamen einer Bilddatei mit einem oder mehreren prominenten Gesichtern.

    //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.Image; import com.amazonaws.services.rekognition.model.BoundingBox; import com.amazonaws.services.rekognition.model.Celebrity; import com.amazonaws.services.rekognition.model.RecognizeCelebritiesRequest; import com.amazonaws.services.rekognition.model.RecognizeCelebritiesResult; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.nio.ByteBuffer; import com.amazonaws.util.IOUtils; import java.util.List; public class RecognizeCelebrities { public static void main(String[] args) { String photo = "moviestars.jpg"; AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient(); ByteBuffer imageBytes=null; try (InputStream inputStream = new FileInputStream(new File(photo))) { imageBytes = ByteBuffer.wrap(IOUtils.toByteArray(inputStream)); } catch(Exception e) { System.out.println("Failed to load file " + photo); System.exit(1); } RecognizeCelebritiesRequest request = new RecognizeCelebritiesRequest() .withImage(new Image() .withBytes(imageBytes)); System.out.println("Looking for celebrities in image " + photo + "\n"); RecognizeCelebritiesResult result=rekognitionClient.recognizeCelebrities(request); //Display recognized celebrity information List<Celebrity> celebs=result.getCelebrityFaces(); System.out.println(celebs.size() + " celebrity(s) were recognized.\n"); for (Celebrity celebrity: celebs) { System.out.println("Celebrity recognized: " + celebrity.getName()); System.out.println("Celebrity ID: " + celebrity.getId()); BoundingBox boundingBox=celebrity.getFace().getBoundingBox(); System.out.println("position: " + boundingBox.getLeft().toString() + " " + boundingBox.getTop().toString()); System.out.println("Further information (if available):"); for (String url: celebrity.getUrls()){ System.out.println(url); } System.out.println(); } System.out.println(result.getUnrecognizedFaces().size() + " face(s) were unrecognized."); } }
    Java V2

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

    //snippet-start:[rekognition.java2.recognize_celebs.import] import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.rekognition.RekognitionClient; import software.amazon.awssdk.core.SdkBytes; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.util.List; import software.amazon.awssdk.services.rekognition.model.RecognizeCelebritiesRequest; import software.amazon.awssdk.services.rekognition.model.RecognizeCelebritiesResponse; import software.amazon.awssdk.services.rekognition.model.RekognitionException; import software.amazon.awssdk.services.rekognition.model.Image; import software.amazon.awssdk.services.rekognition.model.Celebrity; //snippet-end:[rekognition.java2.recognize_celebs.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 RecognizeCelebrities { 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_EAST_1; RekognitionClient rekClient = RekognitionClient.builder() .region(region) .credentialsProvider(ProfileCredentialsProvider.create("profile-name")) .build(); System.out.println("Locating celebrities in " + sourceImage); recognizeAllCelebrities(rekClient, sourceImage); rekClient.close(); } // snippet-start:[rekognition.java2.recognize_celebs.main] public static void recognizeAllCelebrities(RekognitionClient rekClient, String sourceImage) { try { InputStream sourceStream = new FileInputStream(sourceImage); SdkBytes sourceBytes = SdkBytes.fromInputStream(sourceStream); Image souImage = Image.builder() .bytes(sourceBytes) .build(); RecognizeCelebritiesRequest request = RecognizeCelebritiesRequest.builder() .image(souImage) .build(); RecognizeCelebritiesResponse result = rekClient.recognizeCelebrities(request) ; List<Celebrity> celebs=result.celebrityFaces(); System.out.println(celebs.size() + " celebrity(s) were recognized.\n"); for (Celebrity celebrity: celebs) { System.out.println("Celebrity recognized: " + celebrity.name()); System.out.println("Celebrity ID: " + celebrity.id()); System.out.println("Further information (if available):"); for (String url: celebrity.urls()){ System.out.println(url); } System.out.println(); } System.out.println(result.unrecognizedFaces().size() + " face(s) were unrecognized."); } catch (RekognitionException | FileNotFoundException e) { System.out.println(e.getMessage()); System.exit(1); } } // snippet-end:[rekognition.java2.recognize_celebs.main] }
    AWS CLI

    Dieser AWS CLI-Befehl zeigt die JSON-Ausgabe für die recognize-celebrities-CLI-Operation an.

    Ändern Sie bucketname in den Namen eines Amazon-S3-Buckets, der ein Bild enthält. Ändern Sie input.jpg in den Dateinamen eines Bildes mit einem oder mehreren prominenten Gesichtern.

    Ersetzen Sie den Wert von profile_name mit dem Namen Ihres Entwicklerprofils.

    aws rekognition recognize-celebrities \ --image "S3Object={Bucket=bucketname,Name=input.jpg}"

    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 recognize-celebrities --image \ "{\"S3Object\":{\"Bucket\":\"bucket-name\",\"Name\":\"image-name\"}}" --profile profile-name
    Python

    Dieses Beispiel zeigt Informationen über die Prominenten an, die in einem Bild erkannt werden.

    Ändern Sie den Wert von photo in den Pfad und Dateinamen einer Bilddatei mit einem oder mehreren prominenten Gesichtern.

    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 recognize_celebrities(photo): session = boto3.Session(profile_name='profile-name') client = session.client('rekognition') with open(photo, 'rb') as image: response = client.recognize_celebrities(Image={'Bytes': image.read()}) print('Detected faces for ' + photo) for celebrity in response['CelebrityFaces']: print('Name: ' + celebrity['Name']) print('Id: ' + celebrity['Id']) print('KnownGender: ' + celebrity['KnownGender']['Type']) print('Smile: ' + str(celebrity['Face']['Smile']['Value'])) print('Position:') print(' Left: ' + '{:.2f}'.format(celebrity['Face']['BoundingBox']['Height'])) print(' Top: ' + '{:.2f}'.format(celebrity['Face']['BoundingBox']['Top'])) print('Info') for url in celebrity['Urls']: print(' ' + url) print() return len(response['CelebrityFaces']) def main(): photo = 'photo-name' celeb_count = recognize_celebrities(photo) print("Celebrities detected: " + str(celeb_count)) if __name__ == "__main__": main()
    Node.Js

    Dieses Beispiel zeigt Informationen über die Prominenten an, die in einem Bild erkannt werden.

    Ändern Sie den Wert von photo in den Pfad und Dateinamen einer Bilddatei mit einem oder mehreren prominenten Gesichtern. Ändern Sie den Wert von bucket in den Namen des S3-Buckets, der die angegebene Bilddatei enthält. Ändern Sie den Wert von REGION in den Namen der Region, die Ihrem Benutzer zugeordnet ist. Ersetzen Sie den Wert von profile_name in der Zeile, die die Rekognition-Sitzung erstellt, durch den Namen Ihres Entwicklerprofils.

    // Import required AWS SDK clients and commands for Node.js import { RecognizeCelebritiesCommand } from "@aws-sdk/client-rekognition"; import { RekognitionClient } from "@aws-sdk/client-rekognition"; // Set the AWS Region. const REGION = "region-name"; //e.g. "us-east-1" const profileName = "profile-name"; // Create SNS service object. const rekogClient = new RekognitionClient({region: REGION, credentials: fromIni({profile: profileName,}), }); const bucket = 'bucket-name' const photo = 'photo-name' // Set params const params = { Image: { S3Object: { Bucket: bucket, Name: photo }, }, } const recognize_celebrity = async() => { try { const response = await rekogClient.send(new RecognizeCelebritiesCommand(params)); console.log(response.Labels) response.CelebrityFaces.forEach(celebrity =>{ console.log(`Name: ${celebrity.Name}`) console.log(`ID: ${celebrity.Id}`) console.log(`KnownGender: ${celebrity.KnownGender.Type}`) console.log(`Smile: ${celebrity.Smile}`) console.log('Position: ') console.log(` Left: ${celebrity.Face.BoundingBox.Height}`) console.log(` Top : ${celebrity.Face.BoundingBox.Top}`) }) return response.length; // For unit tests. } catch (err) { console.log("Error", err); } } recognize_celebrity()
    .NET

    Dieses Beispiel zeigt Informationen über die Prominenten an, die in einem Bild erkannt werden.

    Ändern Sie den Wert von photo in den Pfad und Dateinamen einer Bilddatei mit einem oder mehreren prominenten Gesichtern (JPG- oder PNG-Format).

    //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 System.IO; using Amazon.Rekognition; using Amazon.Rekognition.Model; public class CelebritiesInImage { public static void Example() { String photo = "moviestars.jpg"; AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient(); RecognizeCelebritiesRequest recognizeCelebritiesRequest = new RecognizeCelebritiesRequest(); Amazon.Rekognition.Model.Image img = new Amazon.Rekognition.Model.Image(); byte[] data = null; try { using (FileStream fs = new FileStream(photo, FileMode.Open, FileAccess.Read)) { data = new byte[fs.Length]; fs.Read(data, 0, (int)fs.Length); } } catch(Exception) { Console.WriteLine("Failed to load file " + photo); return; } img.Bytes = new MemoryStream(data); recognizeCelebritiesRequest.Image = img; Console.WriteLine("Looking for celebrities in image " + photo + "\n"); RecognizeCelebritiesResponse recognizeCelebritiesResponse = rekognitionClient.RecognizeCelebrities(recognizeCelebritiesRequest); Console.WriteLine(recognizeCelebritiesResponse.CelebrityFaces.Count + " celebrity(s) were recognized.\n"); foreach (Celebrity celebrity in recognizeCelebritiesResponse.CelebrityFaces) { Console.WriteLine("Celebrity recognized: " + celebrity.Name); Console.WriteLine("Celebrity ID: " + celebrity.Id); BoundingBox boundingBox = celebrity.Face.BoundingBox; Console.WriteLine("position: " + boundingBox.Left + " " + boundingBox.Top); Console.WriteLine("Further information (if available):"); foreach (String url in celebrity.Urls) Console.WriteLine(url); } Console.WriteLine(recognizeCelebritiesResponse.UnrecognizedFaces.Count + " face(s) were unrecognized."); } }
  3. Notieren Sie den Wert einer Prominenten-ID, die angezeigt werden. Sie brauchen sie in Abrufen von Informationen über einen Prominenten.

RecognizeCelebrities -Operationsanforderung

Die Eingabe in RecognizeCelebrities ist ein Bild. In diesem Beispiel wird das Bild als Bild-Bytes übergeben. Weitere Informationen finden Sie unter Arbeiten mit Bildern.

{ "Image": { "Bytes": "/AoSiyvFpm....." } }

RecognizeCelebrities -Operationsantwort

Es folgt ein Beispiel für die Eingabe und Ausgabe im JSON-Format für RecognizeCelebrities.

RecognizeCelebrities gibt ein Array von erkannten Prominenten und ein Array von nicht erkannten Gesichtern zurück. Beachten Sie im Beispiel Folgendes:

  • Erkannte Prominente – Celebrities ist ein Array erkannter Prominenter. Jedes Prominenten-Objekt im Array enthält die prominenten Namen und eine Liste mit URLs auf verbundene Inhalte, z. B. den IMDB- oder Wikidata-Link des Prominenten. Amazon Rekognition gibt ein ComparedFace Objekt zurück, mit dem Ihre Anwendung feststellen kann, wo sich das Gesicht des Prominenten auf dem Bild befindet, und eine eindeutige Kennung für den Prominenten. Verwenden Sie die eindeutige Kennung zum Abrufen von Prominenten-Informationen zu einem späteren Zeitpunkt mit der API-Operation GetCelebrityInfo.

  • Nicht erkannte Gesichter – UnrecognizedFacesist ein Array von Gesichtern, die keinen Prominenten entsprechen. Jedes ComparedFace-Objekt im Array enthält einen Begrenzungsrahmen (sowie andere Informationen), die Sie für die Lokalisierung des Gesichts im Bild verwenden können.

{ "CelebrityFaces": [{ "Face": { "BoundingBox": { "Height": 0.617123007774353, "Left": 0.15641026198863983, "Top": 0.10864841192960739, "Width": 0.3641025722026825 }, "Confidence": 99.99589538574219, "Emotions": [{ "Confidence": 96.3981749057023, "Type": "Happy" } ], "Landmarks": [{ "Type": "eyeLeft", "X": 0.2837241291999817, "Y": 0.3637104034423828 }, { "Type": "eyeRight", "X": 0.4091649055480957, "Y": 0.37378931045532227 }, { "Type": "nose", "X": 0.35267341136932373, "Y": 0.49657556414604187 }, { "Type": "mouthLeft", "X": 0.2786353826522827, "Y": 0.5455248355865479 }, { "Type": "mouthRight", "X": 0.39566439390182495, "Y": 0.5597742199897766 }], "Pose": { "Pitch": -7.749263763427734, "Roll": 2.004552125930786, "Yaw": 9.012002944946289 }, "Quality": { "Brightness": 32.69192123413086, "Sharpness": 99.9305191040039 }, "Smile": { "Confidence": 95.45394855702342, "Value": True } }, "Id": "3Ir0du6", "KnownGender": { "Type": "Male" }, "MatchConfidence": 98.0, "Name": "Jeff Bezos", "Urls": ["www.imdb.com/name/nm1757263"] }], "OrientationCorrection": "NULL", "UnrecognizedFaces": [{ "BoundingBox": { "Height": 0.5345501899719238, "Left": 0.48461538553237915, "Top": 0.16949152946472168, "Width": 0.3153846263885498 }, "Confidence": 99.92860412597656, "Landmarks": [{ "Type": "eyeLeft", "X": 0.5863404870033264, "Y": 0.36940744519233704 }, { "Type": "eyeRight", "X": 0.6999204754829407, "Y": 0.3769848346710205 }, { "Type": "nose", "X": 0.6349524259567261, "Y": 0.4804527163505554 }, { "Type": "mouthLeft", "X": 0.5872702598571777, "Y": 0.5535582304000854 }, { "Type": "mouthRight", "X": 0.6952020525932312, "Y": 0.5600858926773071 }], "Pose": { "Pitch": -7.386096477508545, "Roll": 2.304218292236328, "Yaw": -6.175624370574951 }, "Quality": { "Brightness": 37.16635513305664, "Sharpness": 99.9305191040039 }, "Smile": { "Confidence": 95.45394855702342, "Value": True } }] }