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.
Ön Koşullar
Bu yazıdaki çözümü tamamlamak için aşağıdakilere sahip olmanız gerekir:
- Bir AWS hesabı
- Bu çözümü dağıtacağınız AWS Bölgesinde Amazon Titan Image Generator G1 v2 için Amazon Bedrock’ta FM erişimi
- Aws-samples GitHub repo’sundan indirilen AWS CloudFormation şablonu.
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ı:
- User pool:
CognitoUserPoolforImageEditApp
- App client:
ImageEditApp
- User pool:
- Lambda kaynakları:
- Function:
<Stack name>-ImageEditBackend-<auto-generated>
- Function:
- AWS Identity Access Management (IAM) kaynakları:
- IAM role:
<Stack name>-ImageEditBackendRole-<auto-generated>
- IAM inline policy:
AmazonBedrockAccess
(bu politika, Lambda’nın Amazon Bedrock FMamazon.titan-image-generator-v2:0
modelini çağırmasına izin verir)
- IAM role:
- 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
- Rest API:
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
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:
- Ön uç kodunu GitHub repo linkinden indirin.
- İndirilen dosyayı açın ve klasöre gidin.
- In the
js
klasöründe,config.js
dosyasını bulun veuserPoolId
,userPoolClientId
,invokeUrl
içinXYZ
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:
- 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.
- 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.
- 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.
- 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.
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.)
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.
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.
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.
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:
- CloudFormation yığınını silin:
- AWS CloudFormation konsolunda, gezinti bölmesinde Stacks‘i seçin.
- Dağıtım işlemi sırasında oluşturduğunuz yığını bulun (ona bir isim atamıştınız).
- Yığını seçtikten sonra Delete‘i seçin.
- 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:
- GitHub repo: Amazon Bedrock Workshop
- Amazon Bedrock Kullanıcı Kılavuzu
- Amazon Bedrock InvokeModel API
- Workshop: Farklı içerik türleri için AWS’de üretken yapay zeka kullanımı
Amazon Titan Image Generator G1 modeli hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın: