毎年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によって追加される画像タグ