Amazon Rekognition ile Tanışalım

rekognition
iam
aws

(Batuhan Küçükali) #1

Uzun zamandır bir proje geliştirmek istiyordum ve bir ay önce bu fırsatı buldum. Geliştirdiğim proje üzerinde resim üzerindeki yazıları text haline getirmem gerekiyordu. Kısa bir araştırma ile AWS nin Rekognition servisi buldum.

Amazon Rekognition Nedir ?

Amazon Rekognition servisi ile kolayca resim ve video analizi yapabilirsiniz. Servis ile resim ve videolardaki objeleri, yazıları, insanları, aktiviteleri ve sahneleri belirleyebilirsiniz. Ayrıca hassas yüz analizi ve karşılaştırması yapabilir bunları doğrulayabilir ve kataloglayabilirsiniz.

Neler Yapılabilir ?

Örnek vermek gerekirse uygulamanıza kullanıcılar tarafından resim yüklendiği zaman bu resimde bulunan objeleri bulabilir, yazıları algılayabilir, mevcut yüzler arasında arama yapabilir, resimdeki ünlüyü (celebrity) bulabilirsiniz.

Eğer içinde video olan bir uygulama geliştiriyorsanız videoda insanları algılayabilir nerede bulunduklarını bulabilirsiniz. Ayrıca daha önce kayıt ettiğiniz insan yüzleri ile stream üzerindeki videoda eşleştirebilirsiniz.

Spring Boot Framework ile Örnek

Senaryo : Bir viral reklam kampanyası düzenlediniz ve kullanıcılardan heryerde bulunan mağazanızın önüne gidip tabelanız gözükecek şekilde resim çekip sisteme yüklemesini istediniz. Tek tek kontrol etmek başlı başına büyük bir sorun olabilir. Bunun yerine kullanıcılar resmi yüklediği zaman o resimde mağazanızın adı geçmiş mi kolaylıkla bulabilirsiniz.

Öncelikle https://console.aws.amazon.com/iam/ a giriş yaparak rekognition servisini kullanmak için bir IAM user oluşturmamız gerekiyor.

IAM servisi altında Users (Kullanıcı) seçeneğinden aşağıdaki adamları takip ederek ihtiyacımız olan kullanıcıyı oluşturuyoruz.

Bir kullanıcı adı belirliyoruz.

Gerekli olan rolü veriyoruz.

Create user diyerek api da kullanıcağımız kullanıcıyı oluşturuyoruz.

Elde ettiğimiz apiKey ve secretKey i uygulamada kullanacağız.

Şimdi geliştirme ortamına geçelim.

build.gradle

Bağımlılık (dependencies) olarak uygulamada sadece rekognition kullanıcağım için maven repositorysinden gerekli sdk yı bulup projeye ekledim. Uzun uzun getter setter yapmayı sevmediğim için lombok, testler içinde spock framework bağımlılıklarını ekledim.

application.yml

Rekognition servisini kullanmak için gerekli apiKey ve secretKey’ i application.yml (config) dosyasına taşıdım.

AwsConfig.java

Gerekli ayarlara uygulama içinden ulaşmak için ayar (config) dosyasını oluşturdum.

ImageRecognitionService.java

AmazonRekognitionServiceImpl.java

ImageRecognitionServiceServiceTest.groovy

Yukarıdaki ilk test metodundaki resimde herhangi bir kelime olmadığını için servisden null değeri alıyoruz. Beklediğimiz gibi sonuçlandırıyoruz.

İkinci test metodunda ise resimde amazon kelimesi geçmiş mi diye kontrol ediyoruz ve testi başarıyla sonuçlandırıyoruz.

Örnek uygulamaya buradan https://github.com/AWSTalks/aws-rekognition-example ulaşabilirsiniz.

Ücretlendirme

Rekognition servisi Amazon Free Tier’ ın bir parçası. Ücretsiz olarak ayda 1000 dakika video, 5000 resim analiz edebilir, her ay 1000 yüz meta datası saklayabilirsiniz.

Genel Fiyatlandırma

Not: Fiyatlandırmalar bölgeye (region) göre değişiyor. Tüm fiyatlandırmaları US East üzerinden hesaplayıp anlatacağım.

Video Api:

Örnek 1

Uygulamanın 100 000 dakika arşivlenmiş videoda yüz tanıma yaptığını (Face Detection API) ve 10 000 dakika arşivlenmiş video üzerinde kişi takibi (PersonTracking API) yaptığını varsayalım.

Toplamda 110 000 dakika arşivlenmiş video analizi.

Dakika başına arşivlenmiş video analizi $0.10.

Toplam tutar: 110 000 x $0.10 = $11 000

Örnek 2

Uygulamanın 500 000 dakika arşivlenmiş video üzerinde etiket algılama (Label Detection API) yaptığını ve 600 000 dakika canlı akış api (Live Stream API) sini kullandığını varsayalım.

500 000 dakika arşivlenmiş video analizi.

Dakika başına arşivlenmiş video analizi $0.10.

600 000 canlı akış api (Live Stream API) kullanımı.

Dakika başına canlı akış api $0.12.

Toplamda $0.10 * 500,000 + $0.12 * 600,000 = $122,000

Resim Api:

1 milyon resim için etiket tanıma apinı kullanırsak resim başına $0.001 ödeyeceğiz toplamda ödeyeceğimiz tutar $1000. Resim başına ödediğimiz tutar aylık olarak kullanımımıza göre düşebiliyor.

Aylık olarak

0-1 milyon resim arası her api kullanımı için $0.001.

1-10 milyon resim arası her api kullanımı için $0.0008.

10-100 milyon resim arası her api kullanımı için $0.0006.

100 milyon ve üzeri için $0.0004 ödeyeceğiz.

Daha detaylı ücretlendirme örnekleri için buraya göz atabilirsiniz.

Servis Limitleri Nelerdir ?

  • Amazon S3 de barındırarak maksimum 15 mb lık bir obje üzerinde işlem yapabilirsiniz.
  • Minumum 80×80 pixel çözünürlük ile işlem yapabilirsiniz.
  • Sadece png ve jpg uzantılı resimlere destek veriliyor.
  • Algılanacak bir yüz 1920×1080 pixel resimde 40×40 pixel den daha küçük olmamalı. 1920×1080 pixel den daha büyük bir resimde orantılı olarak büyük olmalı.
  • Bir api requestinde bir resmin boyutu 5 mb dan daha büyük olamaz.
  • Video analizinde daha önce kayıt edilmiş bir videoda işlem yapmak için videonun boyutunun maksimum 8 gb olması gereklidir.

AWS de tüm servisler sürekli geliştiği için bu limitler sıklıkla güncellenebilir. Buradan diğer limitlere bakabilir güncel limitleri kontrol edebilirsiniz.

Ekstra :
AWS re:Invent 2017 de Amazon Rekognition Tanıtımı

Dökümantasyon Kaynağı : https://docs.aws.amazon.com/rekognition/latest/dg/what-is.html