AWS Türkçe Blog

Amazon Bedrock ile sunucusuz web uygulaması kullanarak görüntü düzenleme

Orijinal makale: Link

Üretken yapay zekanın çeşitli sektörlerde benimsenmesi, görüntü düzenleme dahil olmak üzere farklı uygulama türlerinde devrim yaratıyor. Görüntü düzenleme; grafik tasarım, pazarlama ve sosyal medya gibi çeşitli sektörlerde kullanılıyor. Kullanıcılar görüntü düzenlemek için özel araçlara güvenirken, bu amaç için özel bir çözüm geliştirmek karmaşık olabilir. Ancak, çeşitli AWS servislerini kullanarak, görüntü düzenlemek için sunucusuz bir çözümü hızlı bir şekilde dağıtabilirsiniz. Bu yaklaşım, ekiplerinize Amazon Bedrock kullanarak görüntü düzenleme altyapı modellerine (foundation models – FM’ler) erişim sağlayabilir.

Amazon Bedrock, önde gelen yapay zeka şirketlerinin ve Amazon’un altyapı modellerini tek bir API aracılığıyla kullanıma sunan, tam yönetilen bir hizmettir; böylece kullanım durumunuza en uygun modeli bulmak üzere çeşitli FM’ler arasından seçim yapabilirsiniz. Amazon Bedrock sunucusuzdur, bu sayede hızlıca başlayabilir, FM’leri kendi verilerinizle özel olarak özelleştirebilir ve altyapıyı yönetmek zorunda kalmadan AWS araçlarını kullanarak uygulamalarınıza entegre edip dağıtabilirsiniz.

Amazon Titan Image Generator G1, metinden bir görüntü oluşturmanıza veya kendi görüntünüzü yüklemenize ve düzenlemenize olanak tanıyan ve Amazon Bedrock ile kullanılabilen bir yapay zeka (AI) FM’dir. Odaklandığımız bazı temel özellikler arasında inpainting ve outpainting bulunmaktadır.

Bu makale, görüntü düzenleme için AWS sunucusuz hizmetlerini kullanarak bir web uygulamasının dağıtımını basitleştiren bir çözümü tanıtmaktadır. AWS Amplify, Amazon Cognito, Amazon API Gateway, AWS Lambda ve Amazon Bedrock ile Amazon Titan Image Generator G1 modelini kullanarak istemleri (prompts) kullanarak görüntüleri düzenlemek için bir uygulama oluşturuyoruz. Her bir servisin işlevini ve size eksiksiz bir çözüm sunmak için nasıl entegre olduklarını anlamanıza yardımcı olmak için çözümün iç işleyişini ele alıyoruz. Bu yazının yazıldığı sırada Amazon Titan Image Generator G1’in iki sürümü bulunuyordu; bu yazı için sürüm 2’yi kullandık.

Çözüme genel bakış

Aşağıdaki diyagram genel bir bakış sağlamakta ve temel bileşenleri vurgulamaktadır. Mimaride kullanıcı kimlik doğrulaması için Amazon Cognito’yu ve ön uç uygulamamız için barındırma ortamı olarak Amplify kullanmaktadır. Arka uç hizmetlerimiz için API Gateway ve Lambda fonksiyonunun bir kombinasyonu kullanılıyor ve Amazon Bedrock, FM modeliyle entegre olarak kullanıcıların istemleri kullanarak görüntüyü düzenlemelerini sağlıyor.

Solution Overview

Ön Koşullar

Bu yazıdaki çözümü tamamlamak için aşağıdakilere sahip olmanız gerekir:

 AWS CloudFormation kullanarak çözüm kaynaklarının dağıtımı

AWS CloudFormation şablonunu çalıştırdığınızda, aşağıdaki kaynaklar dağıtılır:

  • Amazon Cognito kaynakları:
  • Lambda kaynakları:
    • Function: <Stack name>-ImageEditBackend-<auto-generated>
  • AWS Identity Access Management (IAM) kaynakları:
    • IAM role: <Stack name>-ImageEditBackendRole-<auto-generated>
    • IAM inline policy: AmazonBedrockAccess (bu politika, Lambda’nın Amazon Bedrock FM amazon.titan-image-generator-v2:0 modelini çağırmasına izin verir)
  • API Gateway kaynakları:
    • Rest API: ImageEditingAppBackendAPI
    • Methods:
      • OPTIONS – CORS  için eklenen header mapping
      • POST – Lambda entegrasyonu
    • Authorization: Amazon Cognito aracılığıyla CognitoAuthorizer kullanılarak

CloudFormation şablonunu dağıttıktan sonra, aşağıdaki bilgileri Outputs sekmesinden Amplify’ın dağıtımı sırasında kullanmak üzere kopyalayın:

  • userPoolId
  • userPoolClientId
  • invokeUrl

CFN Output

Amplify uygulamasının dağıtımı

GitHub’da bulunan ön uç kodunu kullanarak Amplify uygulamasını manuel olarak dağıtmanız gerekir. Aşağıdaki adımları tamamlayın:

  1. Ön uç kodunu GitHub repo linkinden indirin.
  2. İndirilen dosyayı açın ve klasöre gidin.
  3. In the js klasöründe, config.js dosyasını bulun ve userPoolId, userPoolClientId, invokeUrl için XYZ değerlerini CloudFormation yığını çıktılarından topladığınız değerlerle değiştirin. region değerini, çözümü dağıttığınız Bölgeye göre ayarlayın.

Aşağıda örnek bir config.js dosyası yer almaktadır:

window._config = {
    cognito: {
        userPoolId: 'XYZ', // e.g. us-west-2_uXboG5pAb
        userPoolClientId: 'XYZ', // e.g. 25ddkmj4v6hfsfvruhpfi7n4hv
        region: 'XYZ// e.g. us-west-2
    },
    api: {
        invokeUrl: 'XYZ' // e.g. https://rc7nyt4tql.execute-api.us-west-2.amazonaws.com/prod,
    }
};

Extract Update Config File

  1. Tüm dosyaları seçin ve aşağıdaki ekran görüntüsünde gösterildiği gibi sıkıştırın.

Üst düzey klasörü değil, içeriği sıkıştırdığınızdan emin olun. Örneğin, derleme çıktınız AWS-Amplify-Code adlı bir klasör oluşturuyorsa, bu klasöre gidin ve tüm içeriği seçin ve ardından içeriği sıkıştırın.

Create New Zip File

  1. Uygulamayı Amplify’da manuel olarak dağıtmak için yeni .zip dosyasını kullanın.

Dağıtıldıktan sonra, uygulamaya erişmek için sonraki adımlarda kullanabileceğiniz bir alan adı alacaksınız.

AWS Amplify Search Create App

  1. Amazon Cognito kullanıcı havuzunda bir test kullanıcısı oluşturun.

Bu kullanıcı için bir e-posta adresi gereklidir çünkü e-posta adresini doğrulanmış olarak işaretlemeniz gerekecektir.

Cognito Create User

  1.  Amplify sayfasına dönün ve uygulamaya erişmek için otomatik olarak oluşturulan etki alanını kullanın.

Kullanıcı kimlik doğrulaması için Amazon Cognito’yu kullanın

Amazon Cognito, kullanıcıları kimliğini doğrulamak ve yetkilendirmek için kullanabileceğiniz bir kimlik platformudur. Çözümümüzde, görüntü düzenleme uygulamasını kullanmadan önce kullanıcıyı doğrulamak için Amazon Cognito’yu kullanıyoruz.

Görüntü Düzenleme Aracı URL’ine eriştiğinizde, önceden oluşturulmuş bir test kullanıcısı ile oturum açmanız istenecektir. İlk kez oturum açan kullanıcılardan parolalarını güncellemeleri istenecektir. Bu işlemden sonra, kullanıcının kimlik bilgileri kullanıcı havuzunda depolanan kayıtlara göre doğrulanır. Kimlik bilgileri eşleşirse Amazon Cognito bir JSON Web Token (JWT) yayınlayacaktır. Sayfanın API payload to be sent bölümünde, Authorization alanının yeni yayınlanan JWT ile güncellendiğini fark edeceksiniz.

Arka uç kodu için Lambda ve üretici yapay zeka işlevi için Amazon Bedrock kullanın

Arka uç kodu Lambda’da barındırılır ve API Gateway üzerinden yönlendirilen kullanıcı istekleri tarafından başlatılır. Lambda işlevi istek payload’ını işler ve Amazon Bedrock’a iletir. Amazon Bedrock’tan gelen yanıt, ilk istekle aynı rotayı izler.

API yönetimi için API Gateway’i kullanma

API Gateway, API yönetimini kolaylaştırarak geliştiricilerin API’lerini zahmetsizce dağıtmasına, bakımını yapmasına, izlemesine, güvenliğini sağlamasına ve ölçeklendirmesine olanak tanır.Kullanım örneğimizde, API Gateway uygulama mantığı için düzenleyici görevi görür ve arka uçtaki yükü yönetmek için kısıtlama sağlar. API Gateway olmadan, Amazon Bedrock API ile doğrudan etkileşim kurmak için ön uçta JavaScript SDK’yı kullanmanız gerekir ve bu da ön uca daha fazla iş getirir.

Ön uç kodu için Amplify kullanın

Amplify, güvenli, ölçeklenebilir mobil ve web uygulamaları oluşturmak için geliştirme ortamı sunar. Geliştiricilerin altyapı endişesi duymak yerine kodlarına odaklanmalarını sağlar. Amplify ayrıca birçok Git sağlayıcısıyla entegre olur. Bu çözüm için, bu yazının önceki bölümlerinde açıklanan yöntemi kullanarak ön uç kodumuzu manuel olarak yüklüyoruz.

Görüntü düzenleme aracına genel bakış

Amplify’da uygulamayı oluşturduktan sonra sağlanan URL’e gidin ve oturum açın. İlk giriş denemenizde şifrenizi sıfırlamanız istenecektir.

App Login

Bu araç için adımları takip izlerken, sağ taraftaki API Payload to be Sent bölümünün dinamik olarak güncellendiğini ve aşağıdaki ilgili adımlarda belirtilen ayrıntıları yansıttığını göreceksiniz.

Adım 1: Resminizin üzerinde bir maske oluşturun

Resimlerinizde bir maske oluşturmak için bir dosya seçin (JPEG, JPG veya PNG).

Görüntü yüklendikten sonra, ön uç dosyayı base64’e dönüştürür ve base_image değeri güncellenir.

Görüntünün düzenlemek istediğiniz bir bölümünü seçtiğinizde, bir maske oluşturulur ve mask değeri yeni bir base64 değeriyle güncellenir. Seçtiğiniz alanı ayarlamak için kontur boyutu seçeneğini de kullanabilirsiniz.

Artık orijinal görüntüye ve base64 ile kodlanmış maske görüntüsüne sahipsiniz. (Amazon Titan Image Generator G1 modeli, girişlerin base64 kodlamasında olmasını gerektirir.)

Choose File and Create Mask

Adım 2: Bir istem Yazın ve seçeneklerinizi belirleyin

Görüntüyle ne yapmak istediğinizi açıklayan bir komut istemi yazın. Bu örnek için Make the driveway clear and empty yazıyoruz. Bu, sağdaki bilgi isteminde yansıtılır.

Aşağıdaki görüntü düzenleme seçeneklerinden birini seçebilirsiniz: inpainting ve outpainting. mode değeri seçiminize bağlı olarak güncellenir.

  • Maskelenmiş öğeleri kaldırmak ve arka plan pikselleriyle değiştirmek için inpainting kullanın
  • Maskelenmiş görüntünün piksellerini görüntü sınırlarına genişletmek için outpainting kullanın

Payload’ı API gateway’e göndermek için Send to API‘yi seçin. Bu eylem, alınan payload’ı doğrulayan Lambda işlevini çağırır. Payload başarıyla doğrulanırsa, Lambda işlevi daha fazla işlem için Amazon Bedrock API’sini çağırmaya devam eder.

Amazon Bedrock API, ön uç uygulamasına geri iletilen ve görsel görüntüler olarak işlenen base64 biçiminde iki görüntü çıktısı oluşturur.

Prompt

Adım 3: Sonucu görüntüleyin ve indirin

Aşağıdaki ekran görüntüsü testimizin sonuçlarını göstermektedir. Sonuçları indirebilir veya yeni bir çıktı almak için güncellenmiş bir istem sağlayabilirsiniz.

Download

Test ve sorun giderme

Send to API eylemini başlattığınızda, sistem bir doğrulama kontrolü gerçekleştirir. Gerekli bilgiler eksik veya yanlışsa, bir hata bildirimi görüntülenir. Örneğin, bir bilgi istemi sağlamadan API’ye bir görüntü göndermeye çalışırsanız, aşağıdaki ekran görüntüsünde gösterildiği gibi, arayüzün sağ tarafında eksik girdiye karşı sizi uyaran bir hata mesajı görünecektir.

App Error

Kaynakların silinmesi

Görüntü Düzenleme Aracı’nı kullanmayı bırakmaya karar verirseniz, Görüntü Düzenleme Aracı’nı, AWS CloudFormation kullanılarak dağıtılan ilişkili kaynakları ve Amplify dağıtımını kaldırmak için şu adımları takip edebilirsiniz:

  1.  CloudFormation yığınını silin:
    1. AWS CloudFormation konsolunda, gezinti bölmesinde Stacks‘i seçin.
    2. Dağıtım işlemi sırasında oluşturduğunuz yığını bulun (ona bir isim atamıştınız).
    3. Yığını seçtikten sonra Delete‘i seçin.
  2. Amplify uygulamasını ve kaynaklarını silin. Talimatlar için Kaynakların Silinmesi bölümüne bakın.

Sonuç

Bu makalede, AWS sunucusuz hizmetleri ve üretken yapay zeka hizmetlerini kullanarak bir görüntü düzenleme uygulaması dağıtmak için kullanabileceğiniz örnek bir çözümü inceledik. Amazon Bedrock ve istemleri kullanarak görüntüleri düzenlemenize olanak tanıyan bir Amazon Titan FM kullandık. Bu çözümü benimseyerek AWS tarafından yönetilen hizmetleri kullanmanın avantajını elde edersiniz, böylece altta yatan altyapıyı sürdürmek zorunda kalmazsınız. Bu örnek çözümü dağıtarak hemen bugün başlayın.

Ek Kaynaklar

Amazon Bedrock hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın:

Amazon Titan Image Generator G1 modeli hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın: