概要
AWS re:Invent 2016で発表された新機能の中にAWS Rekognitionという画像内の物体、シーン、および顔を検出するサービスが発表されました。
今更感ありますが、Rekognitionで画像内の物体名を取得する方法を書きます。
Lambdaでの処理
'use strict'; const AWS = require("aws-sdk"); AWS.config.region = 'us-west-2'; AWS.config.apiVersions = { rekognition: '2016-06-27', }; const rekognition = new AWS.Rekognition(); module.exports.handle = (event, context, callback) => { var params = { Image: { S3Object: { Bucket: "BUCKET_NAME", Name: "OBJECT_KEY" } } }; rekognition.detectLabels(params, function(err, data) { if (err) console.log(err, err.stack); // an error occurred else console.log(data); // successful response }); };
こんだけ!!
基本的にはS3のバケットとオブジェクトのキーをparamsに指定するだけです。
処理速度は2秒かかることもあるので、バッチ処理以外ではあまり使えなさそうです。
また、当たり前ですが、固有名詞は出てきませんし、返却されるラベルは全て英語です。
そのため、例えば、東京タワーの画像を解析した場合Building
とかTower
というラベルが返却されます。
注意事項
Rekognitionは使用できるリージョンがとても少ないです。記事投稿時点では下記の3リージョンでしか使用できません。
- us-east-1
- us-west-2
- eu-west-2
Tokyoリージョンに来ることを期待!
まとめ
たった数十行で画像内の物体を検出できるとは、未来に生きている気がしました。
Rekognitionは他にも、人物の顔を認識して傾きとかを検出したり、人物画像同士の比較をし、同一人物かを検出したり、アダルト画像か検出したりできます。価格も100万枚まで1,000枚あたり1.00USDだったり、低価格なのも魅力です。
一方GCPのVision APIはAWSと比較して高機能である代わりに1,000ユニットあたり$1.50 と多少割高になります。
Rekognitionに存在しない機能を使いたい時はGCPを使う感じですかね。