Amazon Rekognition mit Nuxeo Vision


Thu 19 January 2017 Von Rémi Cattiau

Es ist jedes Jahr eine Freude, an der re:Invent teilzunehmen, neue Leute zu treffen, etwas über ihre Arbeit in der Cloud zu erfahren und neue Technologien kennenzulernen.

Von den dieses Jahr neu aufkommenden Technologien haben mich Alexa (Überraschung: dies wird mein nächster Blogeintrag) und maschinelles Lernen am meisten interessiert. Eine der Anwendungen für maschinelles Lernen ist die Bilderkennung. AWS hat dafür unter dem Namen Amazon Rekognition ein Servicepaket herausgebracht.

Anfang letzten Jahres haben wir Nuxeo Vision veröffentlicht, ein Plug-in, das die Google Cloud Vision API für die Bilderkennung verwendet, etwa zur sicheren Bildsuche, die Kennzeichnung öffentlicher Gebäude in einem Bild oder die Erkennung und Extraktion von Bildtext. Als weitere Verbesserung habe ich beschlossen, Rekognition Nuxeo Vision hinzuzufügen, um Ihnen eine Auswahl zwischen diesen Diensten zu ermöglichen: Amazon Rekognition oder Google Cloud Vision. Diese Integration wird in den nächsten Tagen verfügbar sein. Werfen wir vorab einen kurzen Blick auf die Konfiguration und das Ergebnis.

Rekognition Provider

Nach einer kleinen Überarbeitung von nuxeo-vision habe ich eine Provider-Schnittstelle extrahiert, um einen Amazon Provider für Rekognition hinzuzufügen:

public interface VisionProvider {

  List<VisionResponse> execute(List<Blob> blobs, List<VisionFeature> features, i nt maxResults) throws IOException, GeneralSecurityException, IllegalStateException;

}

Amazon Rekognition führt Gesichtserkennung und Tagging durch, genau wie Google Vision Tagging, OCR und Bildanalysen durchführt. Vorerst verwenden wir in Nuxeo Vision nur die Taggingfunktion von Rekognition.

Hier sehen Sie, wie unser Amazon Provider aussieht:

public class AmazonProvider implements VisionProvider {
  ...
  @Override

  public List<VisionResponse> execute(List<Blob> blobs, List<VisionFeature> features, int maxResults) throws IOException, GeneralSecurityException, IllegalStateException {
    ArrayList<VisionResponse> result = new ArrayList<>();
    for (Blob blob : blobs) {
      result.add(new AmazonRekognitionResponse(client.detectLabels(new DetectLabelsRequest().withImage(
        new com.amazonaws.services.rekognition.model.Image()
          .withBytes(ByteBuffer.wrap(blob.getByteArray())))
          .withMaxLabels(maxResults).withMinConfidence(0.9f))));
    }
  return result;
  }
}

Die Konfiguration

Sobald unser Code auf unserem Nuxeo Server hinzugefügt und installiert wurde, müssen wir ihn konfigurieren, indem wir dir diese Variablen unserer "nuxeo.conf"-Datei hinzufügen.

org.nuxeo.vision.provider=amazon
org.nuxeo.vision.amazon.access_key=AKIA...UA
org.nuxeo.vision.amazon.secret_key=F0..../e

Das ist schon alles.

Das Ergebnis

Sobald wir nun ein Bild auf den Nuxeo Server hochladen, werden automatisch Tags durch Amazon Rekognition hinzugefügt:

Image tags hinzugefügt von Amazon Rekognition


Etikettiert: AWS, Nuxeo Plugin, Nuxeo Vision