Suchen

Bild- und Videoerkennung mit AWS Deep Learning in Amazon Rekognition APIs

| Autor / Redakteur: Sascha Möllering * / Stephan Augsten

„Wir denken darüber nach, Deep-Learning-Algorithmen für die bessere Erkennung von Objekten in Fotos und Videos einzusetzen, möchten aber kein eigenes Modell trainieren. Welcher Service existiert unter AWS?“

Firmen zum Thema

Um zu kategorisieren, was auf einem bestimmten Bild zu sehen ist, arbeitet Amazon Rekognition mit sogenannten Konfidenzwerten.
Um zu kategorisieren, was auf einem bestimmten Bild zu sehen ist, arbeitet Amazon Rekognition mit sogenannten Konfidenzwerten.
(Bild: AWS Germany GmbH)

Deep Learning ist ein Teilbereich des Machine Learning und ein bedeutender Zweig der Künstlichen Intelligenz. Ziel ist es, aus Rohdaten Abstraktionen auf hoher Ebene abzuleiten. Deep Learning orientiert sich an den Fähigkeiten der Informationsverarbeitung und Kommunikation des menschlichen Gehirns. Das Lernen erfolgt durch iteratives Schätzen von Hunderttausenden von Parametern mit effizienten Algorithmen.

Amazon Rekognition ist ein Teil der Amazon KI-Dienstfamilie. Die Amazon KI-Dienste nutzen Deep Learning, um Bilder zu verstehen, Text in lebensechte Sprache zu verwandeln und intuitive Konversationstexte und Sprachschnittstellen aufzubauen.

Um genaue Ergebnisse bei komplexen Aufgaben der Bildverarbeitung wie Objekt- und Szenenerkennung, Gesichtsanalyse und Gesichtserkennung zu erzielen, müssen Deep-Learning-Systeme richtig abgestimmt und mit riesigen Mengen an Daten trainiert werden. Das ist eine zeitaufwändige und teure Aufgabe.

Darüber hinaus ist das Training eines tiefen neuronalen Netzwerks sehr rechenintensiv. Amazon Rekognition wird vollständig verwaltet und ist bereits für Bild- und Videoerkennungsaufgaben trainiert, so dass Zeit und Ressourcen nicht in den Aufbau einer Deep Learning-Pipeline investiert werden müssen.

Nutzung von Amazon Rekognition

Amazon Rekognition bietet zwei unterschiedliche APIs: Amazon Rekognition Image für die Untersuchung von Bildern und Amazon Rekognition Video, um Videos zu analysieren. Beide APIs führen Erkennungs- und Identifizierungsanalysen von Bildern und Videos durch, um Erkenntnisse zu gewinnen, die in eigenen Anwendungen genutzt werden können.

Eine Fotoverwaltungsanwendung ließe sich beispielsweise mit Amazon Rekognition Image verbessern. Lädt ein Kunde ein Foto hoch, kann die Anwendung auf Amazon Rekognition Image zurückgreifen, um reale Objekte oder Gesichter im Bild zu erkennen.

Nachdem die von Amazon Rekognition Image zurückgegebenen Informationen gespeichert wurden, lässt sich eine Fotosammlung nach Bildern mit einem bestimmten Objekt oder Gesicht durchsuchen. Der Benutzer könnte beispielsweise nach lächelnden Gesichtern oder nach Gesichtern in einem bestimmten Alter suchen. Amazon Rekognition arbeitet mit einem sogenannten Konfidenzwert.

Ein Konfidenzwert ist eine Zahl zwischen 0 und 100, die die Wahrscheinlichkeit angibt, dass eine bestimmte Vorhersage korrekt ist. Nehmen wir als Beispiel Foto von einem Strand: Wenn der Objekt- und Szenenerkennungsprozess einen Vertrauenswert von 99 für die Bezeichnung „Wasser“ und 35 für die Bezeichnung „Palme“ liefert, dann ist es wahrscheinlicher, dass das Bild Wasser, aber keine Palme enthält.

Anwendungen, die sehr empfindlich auf Erkennungsfehler (sogenannte „False Positives“) reagieren, sollten Ergebnisse verwerfen, die mit einem Konfidenzwert unter einem bestimmten Schwellenwert verbunden sind. Der optimale Schwellenwert hängt von der Anwendung ab. In vielen Fällen erhalten Kunden die besten Ergebnisse, wenn minimale Schwellwerte festgelegt werden, die höher als der Standardwert sind.

Code-Beispiel für Amazon Rekognition Image

Im Folgenden simulieren wir eine Analyse von Bildern, die in einem Amazon S3-Bucket abgelegt sind. In diesem Beispiel nutzen wir die API-Operation DetectLabels, um Objekte, Konzepte und Szenen in einem Bild (als Formate sind JPEG oder PNG möglich) zu erkennen, das in einem Amazon S3-Bucket gespeichert ist.

Um ein Bild an eine Rekognition-Image-API-Operation zu übergeben, wird der Eingabeparameter Image verwendet. Innerhalb des Image-JSON-Objektes wird der Parameter S3Object genutzt, um auf ein in einem S3-Bucket gespeichertes Bild zu verweisen.

In diesem Beispiel wird der JSON-Request für DetectLabels, das Quellbild (input.jpg) von einem Amazon S3 Bucket namens MyBucket geladen:

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

Mit Hilfe der AWS CLI würde eine entsprechende API-Anfrage folgendermaßen aussehen:

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

Nehmen wir an, die Fotoverwaltungsanwendung ist in Java implementiert und möchte die AWS API direkt nutzen, um Anfragen an die Rekognition-API zu senden:

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();
      }
   }
}

In diesem Beispiel wird das Bild input.jpg aus dem S3-Bucket bucket an die Rekognition-API gesendet, die maximale Anzahl an Labels, die zurückgegeben werden soll, beträgt „10“ bei einem Konfidenzwert von 75 Prozent.

Fazit

Sascha Möllering
Sascha Möllering
(Bild: AWS Germany GmbH)

Amazon Rekognition ist ein einfach zu nutzender, vollständig verwalteter Service zur Bild- und Videoanalyse, der in Anwendungen hinzugefügt werden kann. Der Rekognition API wird einfach ein Bild oder Video zur Verfügung gestellt, und der Dienst kann die Objekte, Personen, Texte, Szenen und Aktivitäten identifizieren.

* Sascha Möllering arbeitet als Solutions Architect bei der Amazon Web Services Germany GmbH.

(ID:46000679)