Amazon RekognitionとNuxeo Visionの統合


Thu 19 January 2017 作成者: Rémi Cattiau

毎年re:Inventへ行って、いろいろな人と会って、クラウドを使った仕事を見て、新しい技術を知るのは、いつも楽しいものです。

今年私が最も関心をもった先端テクノロジーは、Alexa(スポイラーアラート:次のブログのトピックです!)とMachine Learning(機械学習)です。機械学習のアプリケーションの1つとして、画像認識があります。AWSは、Amazon Rekognitionという画像認識のパッケージサービスをリリースしました。

昨年リリースしたNuxeo Visionは、画像セーフサーチ、画像内の共通オブジェクトのラベル付け、画像テキストの検出・抽出などの画像検出サービスにGoogle Cloud Vision APIを使用するプラグインです。それで、Nuxeo VisionにRekognitionサービスを追加して、使用するサービスとしてAmazon RekognitionとGoogle Cloud Visionのいずれかを選択するオプションを提供することにしました。この統合は数日後にリリースされます。その前に、設定と結果を簡単に見ておきましょう。

##Rekognitionプロバイダ

nuxeo-visionを少しリファクタリングした後、プロバイダインタフェースを抽出して、Rekognitionを追加するためにAmazon Providerを追加しました。

public interface VisionProvider {

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

}

Amazon Rekognitionは、Google Visionがタグ付け、OCR、画像解析を実行できるのと同じように、顔検出とタグ付けを実行できます。今のところ、Nuxeo VisionではRekognitionのタグ付け機能のみを使用します。

Amazon Providerは次のようになります。

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

##設定

Nuxeoサーバーにコードを追加してインストールしたら、これらの変数を「nuxeo.conf」ファイルに追加して設定する必要があります。

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

それで設定は完了です!

##結果

これで、Nuxeoサーバーに画像を追加するたびに、Amazon Rekognitionから自動的にタグが追加されます。

Amazon Rekognitionによって追加される画像タグ


タグ付き: AWS, Nuxeo Plugin, Nuxeo Vision