Otomatiskan proses untuk mengubah latar belakang gambar menggunakan Amazon Bedrock dan AWS Step Functions | Layanan Web Amazon

Otomatiskan proses untuk mengubah latar belakang gambar menggunakan Amazon Bedrock dan AWS Step Functions | Layanan Web Amazon

Banyak pelanggan, termasuk mereka yang bergerak di bidang periklanan kreatif, media dan hiburan, e-niaga, dan mode, sering kali perlu mengubah latar belakang gambar dalam jumlah besar. Biasanya, ini melibatkan pengeditan setiap gambar secara manual dengan perangkat lunak foto. Ini membutuhkan banyak usaha, terutama untuk gambar dalam jumlah besar. Namun, Batuan Dasar Amazon dan Fungsi Langkah AWS mempermudah otomatisasi proses ini dalam skala besar.

Amazon Bedrock menawarkan model landasan AI generatif Penghasil Gambar Amazon Titan G1, yang secara otomatis dapat mengubah latar belakang suatu gambar menggunakan teknik yang disebut lukisan luar. Step Functions memungkinkan Anda membuat alur kerja otomatis yang terhubung secara lancar dengan Amazon Bedrock dan layanan AWS lainnya. Bersama-sama, Amazon Bedrock dan Step Functions menyederhanakan seluruh proses perubahan latar belakang secara otomatis di beberapa gambar.

Posting ini memperkenalkan solusi yang menyederhanakan proses mengubah latar belakang di banyak gambar. Dengan memanfaatkan kemampuan AI generatif dengan Amazon Bedrock dan model Titan Image Generator G1, dikombinasikan dengan Step Functions, solusi ini secara efisien menghasilkan gambar dengan latar belakang yang diinginkan. Posting ini memberikan wawasan tentang cara kerja solusi dan membantu Anda memahami pilihan desain yang dibuat untuk membangun solusi khusus ini.

Lihat Repositori GitHub untuk instruksi terperinci tentang penerapan solusi ini.

Ikhtisar solusi

Mari kita lihat cara kerja solusi pada tingkat tinggi sebelum menyelami lebih dalam elemen tertentu dan layanan AWS yang digunakan. Diagram berikut memberikan gambaran sederhana tentang arsitektur solusi dan menyoroti elemen-elemen kuncinya.

Arsitektur Solusi

Alur kerja terdiri dari langkah-langkah berikut:

  1. Seorang pengguna mengunggah banyak gambar ke dalam Layanan Penyimpanan Sederhana Amazon (Amazon S3) melalui aplikasi web Streamlit.
  2. Aplikasi web Streamlit memanggil Gerbang API Amazon Titik akhir REST API terintegrasi dengan Rekognisi Amazon API DeteksiLabel, yang mendeteksi label untuk setiap gambar.
  3. Setelah dikirimkan, aplikasi web Streamlit memperbarui dan Amazon DynamoDB tabel dengan detail gambar.
  4. Pembaruan DynamoDB memicu AWS Lambda fungsi, yang memulai alur kerja Step Functions.
  5. Alur kerja Step Functions menjalankan langkah-langkah berikut untuk setiap gambar:
    5.1 Membuat payload permintaan untuk Amazon Bedrock InvokeModel API.
    5.2 Memanggil Batuan Dasar Amazon InvokeModel tindakan API.
    5.3 Mengurai gambar dari respons dan menyimpannya ke lokasi S3.
    5.4 Memperbarui status gambar dalam tabel DynamoDB.
  6. Alur kerja Step Functions memanggil fungsi Lambda untuk menghasilkan laporan status.
  7. Alur kerja mengirim email menggunakan Layanan Pemberitahuan Sederhana Amazon (Amazon SNS).

Seperti yang ditunjukkan pada tangkapan layar berikut, aplikasi web Streamlit memungkinkan Anda mengunggah gambar dan memasukkan perintah teks untuk menentukan latar belakang yang diinginkan, perintah negatif, dan mode pengecatan untuk pembuatan gambar. Anda juga dapat melihat dan menghapus label yang tidak diinginkan terkait dengan setiap gambar yang diunggah yang tidak ingin Anda simpan dalam gambar akhir yang dihasilkan.

Aplikasi Web yang disederhanakan

Dalam contoh ini, perintah untuk latar belakangnya adalah โ€œLatar belakang kota London.โ€ Proses otomatisasi menghasilkan gambar baru berdasarkan gambar asli yang diunggah dengan latar belakang London.

Gambar yang Dihasilkan

Menyederhanakan aplikasi web dan unggahan gambar

Aplikasi web Streamlit berfungsi sebagai frontend untuk solusi ini. Untuk melindungi aplikasi dari akses tidak sah, aplikasi ini terintegrasi dengan Amazon Kognito kumpulan pengguna. API Gateway menggunakan Pengotorisasi Amazon Cognito untuk mengautentikasi permintaan. Aplikasi web menyelesaikan langkah-langkah berikut:

  1. Untuk setiap gambar yang dipilih, ia mengambil label melalui Amazon Rekognition menggunakan titik akhir API Gateway REST API.
  2. Setelah dikirimkan, aplikasi mengunggah gambar ke bucket S3.
  3. Aplikasi memperbarui tabel DynamoDB dengan parameter yang relevan, nama gambar, dan label terkait untuk setiap gambar menggunakan titik akhir API Gateway REST API lainnya.

Alur kerja pemrosesan gambar

Ketika tabel DynamoDB diperbarui, Aliran DynamoDB memicu fungsi Lambda untuk memulai alur kerja Step Functions baru. Berikut ini adalah contoh permintaan alur kerja:

{
  "Id": "621fa85a-38bb-4d98-a656-93bbbcf5477f",
  "S3Bucket": "<Image Bucket>",
  "InputS3Prefix": "image-files/<year>/<month>/<day>/<timestamp>",
  "OutputS3Prefix": "generated-image-files/<year>/<month>/<day>/<timestamp>",
  "StatusS3Prefix": "status-report-files/<year>/<month>/<day>/<timestamp>",
  "Prompt": "london city background",
  "NegativePrompt": "low quality, low resolution",
  "Mode": "PRECISE",
  "Images": [
    {
      "ImageName": "bus.png",
      "Labels": "Bus, Person"
    },
    {
      "ImageName": "cop.png",
      "Labels": "Person, Adult, Male, Man, Helmet, Jacket"
    },
    {
      "ImageName": "iguana-2.png",
      "Labels": "Lizardโ€
    },
    {
      "ImageName": "dog.png",
      "Labels": "Dog"
    }
  ]
}

Alur kerja Step Functions selanjutnya melakukan tiga langkah berikut:

  1. Ganti latar belakang untuk semua gambar.
  2. Buat laporan status.
  3. Kirim email melalui Amazon SNS.

Tangkapan layar berikut mengilustrasikan alur kerja Step Functions.

AWS Langkah Fungsi Alur Kerja

Mari kita lihat setiap langkah lebih detail.

Ganti latar belakang untuk semua gambar

Fungsi Langkah menggunakan a Peta Terdistribusi untuk memproses setiap gambar dalam alur kerja anak paralel. Peta Terdistribusi memungkinkan pemrosesan konkurensi tinggi. Setiap alur kerja anak memiliki riwayat pengoperasian yang terpisah dari alur kerja induk.

Fungsi Langkah menggunakan Tindakan API yang dioptimalkan InvokeModel untuk Amazon Bedrock. API menerima permintaan dan tanggapan hingga 25 MB. Namun, Step Functions memiliki batas 256 KB pada input dan output muatan negara. Untuk mendukung gambar yang lebih besar, solusinya menggunakan bucket S3 tempat InvokeModel API membaca data dari dan menulis hasilnya. Berikut ini adalah konfigurasi untuk InvokeModel API untuk integrasi Amazon Bedrock:

{
    "ModelId": "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-image-generator-v1",
    "ContentType": "application/json",
    "Input": {  
        "S3Uri": โ€œs3://<Image Bucket>/image-files/<year>/<month>/<day>/<timestamp>/<Image name>.json",
    },  
    "Output": {  
        "S3Uri": โ€œs3://<Image Bucket>/generated-image-files/<year>/<month>/<day>/<timestamp>/<Image name>.jsonโ€
    } 
}

Grafik Input S3Uri parameter menentukan lokasi sumber untuk mengambil data masukan. Itu Output S3Uri parameter menentukan tujuan untuk menulis respons API.

Fungsi Lambda menyimpan payload permintaan sebagai file JSON di tempat yang ditentukan Input S3Uri lokasi. NS InvokeModel API menggunakan payload masukan ini untuk menghasilkan gambar dengan latar belakang yang ditentukan:

{
    "taskType": "OUTPAINTING",
    "outPaintingParams": {
        "text": "london city background",
        "negativeText": "low quality, low resolution",        
        "image": "<base64-encoded string>",                         
        "maskPrompt": "Bus",                      
        "maskImage": "base64-encoded string",                             
        "outPaintingMode": "DEFAULT | PRECISE"                 
    },                                                 
    "imageGenerationConfig": {
        "numberOfImages": 1,
        "quality": "premium",
        "height": 1024,
        "width": 1024,
        "cfgScale": 8.0
    }
}

Model Titan Image Generator G1 mendukung parameter berikut untuk pembuatan gambar:

  • tipe tugas โ€“ Menentukan metode pengecatan untuk mengganti latar belakang gambar.
  • teks โ€“ Perintah teks untuk menentukan latar belakang.
  • Teks negatif โ€“ Perintah teks untuk menentukan apa yang tidak boleh disertakan dalam gambar.
  • topengPrompt โ€“ Prompt teks yang mendefinisikan topeng. Ini sesuai dengan label yang ingin Anda pertahankan pada gambar akhir yang dihasilkan.
  • gambar topeng โ€“ Gambar JPEG atau PNG yang dikodekan dalam base64.
  • keluarMode Lukisan โ€“ Menentukan apakah akan mengizinkan modifikasi piksel di dalam topeng atau tidak. DEFAULT memungkinkan modifikasi gambar di dalam topeng agar tetap konsisten dengan latar belakang yang direkonstruksi. PRECISE mencegah modifikasi gambar di dalam topeng.
  • jumlah Gambar โ€“ Jumlah gambar yang akan dihasilkan.
  • kualitas โ€“ Kualitas gambar yang dihasilkan: standard or premium.
  • cfgScale โ€“ Menentukan seberapa kuat gambar yang dihasilkan harus mematuhi perintah.
  • tinggi โ€“ Ketinggian gambar dalam piksel.
  • lebar โ€“ Lebar gambar dalam piksel.

Batuan Dasar Amazon InvokeModel API menghasilkan respons dengan gambar yang disandikan di Output S3Uri lokasi. Fungsi Lambda lainnya mem-parsing gambar dari respons, mendekodekannya dari base64, dan menyimpan file gambar di lokasi berikut: s3://<Image Bucket>/generated-image-file/<year>/<month>/<day>/<timestamp>/.

Terakhir, alur kerja anak memperbarui tabel DynamoDB dengan status pembuatan gambar, menandainya sebagai salah satunya Berhasil or Gagal, dan termasuk detail seperti ImageName, Cause, Error, dan Status.

Buat laporan status

Setelah proses pembuatan gambar, fungsi Lambda mengambil detail status dari DynamoDB. Ini secara dinamis mengkompilasi rincian ini menjadi laporan status komprehensif dalam format JSON. Kemudian menyimpan laporan status yang dihasilkan dalam file JSON di lokasi berikut: s3://<Image Bucket>/status-report-files/<year>/<month>/<day>/<timestamp>/. Tim ITOps dapat mengintegrasikan laporan ini dengan sistem notifikasi yang ada untuk melacak apakah pemrosesan gambar berhasil diselesaikan. Untuk pengguna bisnis, Anda dapat memperluasnya lebih jauh untuk menghasilkan laporan dalam format CSV.

Kirim email melalui Amazon SNS

Step Functions memanggil tindakan API Amazon SNS untuk mengirim email. Email tersebut berisi detail termasuk lokasi S3 untuk laporan status dan file gambar akhir. Berikut contoh email notifikasinya.

Email Pemberitahuan

Kesimpulan

Dalam postingan ini, kami memberikan ikhtisar contoh solusi yang menunjukkan otomatisasi perubahan latar belakang gambar dalam skala besar menggunakan Amazon Bedrock dan Step Functions. Kami juga menjelaskan setiap elemen solusi secara detail. Dengan menggunakan integrasi Step Functions yang dioptimalkan dengan Amazon Bedrock, Distributed Map, dan model Titan Image Generator G1, solusi ini secara efisien menggantikan latar belakang gambar secara paralel, sehingga meningkatkan produktivitas dan skalabilitas.

Untuk menyebarkan solusi, lihat instruksi di Repositori GitHub.

Sumber

Untuk mempelajari selengkapnya tentang Amazon Bedrock, lihat sumber daya berikut:

Untuk mempelajari lebih lanjut tentang model Titan Image Generator G1, lihat sumber daya berikut:

Untuk mempelajari lebih lanjut tentang penggunaan Amazon Bedrock dengan Step Functions, lihat sumber daya berikut:


tentang Penulis

Otomatiskan proses untuk mengubah latar belakang gambar menggunakan Amazon Bedrock dan AWS Step Functions | Kecerdasan Data PlatoBlockchain Layanan Web Amazon. Pencarian Vertikal. Ai.Chetan Makvana adalah Arsitek Solusi Senior di Amazon Web Services. Dia bekerja dengan mitra dan pelanggan AWS untuk memberi mereka panduan arsitektur guna membangun arsitektur yang dapat diskalakan dan menerapkan strategi untuk mendorong adopsi layanan AWS. Dia adalah penggemar teknologi dan pembuat dengan bidang minat utama pada AI generatif, tanpa server, dan DevOps. Di luar pekerjaan, dia menikmati menonton pertunjukan, jalan-jalan, dan musik. 

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS