Mem-build Aplikasi Pembuatan Gambar dengan Imagen dan Mesop di Cloud Shell
Tentang codelab ini
1. Pengantar
Bayangkan mengubah deskripsi teks sederhana menjadi gambar yang cerah dan mendetail dalam hitungan detik. Inilah kekuatan media generatif, bidang yang berkembang pesat dan mengubah cara Anda membuat serta berinteraksi dengan konten visual. Model seperti Imagen 3 Google di Vertex AI menghadirkan kemampuan AI generatif yang canggih kepada developer aplikasi.
Imagen 3 adalah model text-to-image berkualitas terbaik Google hingga saat ini. Kamera ini mampu membuat gambar dengan detail yang menakjubkan. Dengan demikian, developer memiliki lebih banyak kontrol saat membuat produk AI generasi berikutnya yang mengubah imajinasi mereka menjadi aset visual berkualitas tinggi. Pelajari Imagen di Vertex AI lebih lanjut.
Codelab ini akan memandu Anda memanfaatkan kecanggihan Imagen menggunakan Google Gen AI SDK. Anda tidak hanya akan mempelajari cara membuat gambar yang menakjubkan dari perintah teks, tetapi juga mengintegrasikan kemampuan ini ke dalam aplikasi web menggunakan Mesop, framework UI Python.
Prasyarat
- Project Google Cloud yang mengaktifkan penagihan dan Vertex AI API. Pelajari lebih lanjut cara menyiapkan project dan lingkungan pengembangan.
Yang akan Anda pelajari
- Cara menggunakan Google Gen AI SDK untuk Python guna berinteraksi dengan Imagen 3
- Cara membuat gambar dari perintah teks
- Cara mem-build aplikasi Mesop dan menjalankannya dari Cloud Shell
Yang Anda butuhkan
- Pemahaman dasar tentang Python
- Pengalaman menjalankan perintah di terminal Cloud Shell
- Komputer dengan akses ke Cloud Shell
2. Menyiapkan lingkungan & menginstal dependensi
- Buka Cloud Shell Editor
- Klik tombol Open Terminal di pojok kanan atas
- Buat folder baru dengan memasukkan perintah berikut di terminal:
mkdir my-imagen-app
- Ubah direktori ke folder baru Anda:
cd my-imagen-app
- Buat lingkungan virtual di Python 3:
python3 -m venv myenv
- Aktifkan lingkungan virtual:
source myenv/bin/activate
- Instal Mesop:
pip3 install mesop
- Instal Google Gen AI SDK untuk Python:
pip install google-genai
- Buat file Python:
touch main.py
3. Penyiapan aplikasi
Semua kode yang diperlukan untuk menjalankan aplikasi Mesop akan ada di main.py
. Dalam setiap langkah berikutnya, salin dan tempel secara berurutan di file ini di Cloud Shell Editor.
Mengimpor library
import base64
import mesop as me
from google import genai
from google.genai import types
Menetapkan informasi project Google Cloud dan membuat klien
- Tetapkan Project ID Anda:
PROJECT_ID = "[your-project-id]"
Ganti [your-project-id]
dengan nama project Google Cloud Anda saat menyalin baris kode ini.
- Membuat klien:
client = genai.Client(vertexai=True, project=PROJECT_ID, location="us-central1")
Memuat model pembuatan gambar
imagen_model = "imagen-3.0-generate-002"
Pengelolaan status
Dengan menentukan pengelolaan status, Anda dapat menyimpan informasi di sepanjang perjalanan pengguna.
@me.stateclass
class State:
input: str = ""
enhanced_prompt: str = ""
img_data: str = "https://storage.googleapis.com/cloud-samples-data/generative-ai/image/flowers.png"
input
: Pengguna memberikan input yang akan digunakan untuk pembuatan gambar.enhanced_prompt
: Modelimagen-3.0-generate-002
menawarkan opsi untuk meningkatkan perintah yang Anda berikan. Perintah baru yang mendetail akan dibuat dari perintah asli Anda untuk membantu menghasilkan gambar berkualitas lebih tinggi dan akan ditampilkan dalam variabel ini.img_data
: Lokasi Cloud Storage atau byte gambar dari gambar yang dihasilkan dengan Imagen 3.
4. Menentukan fungsi bantuan
Fungsi pemuatan
Kode ini akan dieksekusi saat aplikasi dimuat. Tindakan ini menetapkan mode aplikasi ke warna sistem.
def load(e: me.LoadEvent):
me.set_theme_mode("system")
Fungsi blur
Fungsi ini menyimpan input pengguna ke variabel status Anda.
def on_blur(e: me.InputBlurEvent):
state = me.state(State)
state.input = e.value
5. Membuat gambar dengan Imagen
Fungsi ini dipanggil saat pengguna mengklik tombol untuk mengirimkan perintah teks untuk pembuatan gambar.
def generate_image(e: me.ClickEvent):
state = me.state(State)
image = client.models.generate_images(
model=imagen_model,
prompt=state.input,
config=types.GenerateImagesConfig(
number_of_images=1,
aspect_ratio="1:1",
enhance_prompt=True,
safety_filter_level="BLOCK_MEDIUM_AND_ABOVE",
person_generation="DONT_ALLOW",
)
)
img = image.generated_images[0].image.image_bytes
# Encode image in Base64 to display in web app
img64 = base64.b64encode(img).decode('utf-8')
state.enhanced_prompt = image.generated_images[0].enhanced_prompt
state.img_data = f"data:image/png;base64,{img64}"
Anda dapat mengonfigurasi setelan yang terletak di GenerateImagesConfig
:
number_of_images
: 1, 2, 3, 4aspect_ratio
: 1:1, 9:16, 16:9, 3:4, 4:3safety_filter_level
: BLOCK_LOW_AND_ABOVE, BLOCK_MEDIUM_AND_ABOVE, BLOCK_ONLY_HIGH, BLOCK_NONEperson_generation
: DONT_ALLOW, ALLOW_ADULT, ALLOW_ALL
Catatan: Satu-satunya opsi yang akan berfungsi tanpa daftar yang diizinkan tambahan adalah DONT_ALLOW.
6. Menyusun tata letak aplikasi
@me.page(
on_load=load,
path="/",
title="Imagen 3",
)
def app():
s = me.state(State)
with me.box(
style=me.Style(
display="grid",
width="100%",
place_items="center",
margin=me.Margin(top=100),
)
):
me.text(text="Imagen 3: Image Generation", type="headline-3", style=me.Style(font_family="Google Sans"))
with me.box(
style=me.Style(
border_radius=16,
padding=me.Padding.all(8),
display="flex",
)
):
with me.box(
style=me.Style(flex_grow=1)
):
me.native_textarea(
autosize=True,
on_blur=on_blur,
min_rows=8,
placeholder="Enter your image prompt",
style=me.Style(
padding=me.Padding(top=16, left=16),
width="700px",
border_radius=16,
outline="none",
overflow_y="auto",
border=me.Border.all(
me.BorderSide(style="none"),
),
font_family="Google Sans",
),
)
with me.content_button(
type="icon",
on_click=generate_image,
):
me.icon("send")
with me.box(style=me.Style(margin=me.Margin.all(8),
width="700px",
display="flex",
align_items="center")
):
me.image(
src=s.img_data,
style=me.Style(width="350px", padding=me.Padding.all(16), border_radius=36)
)
with me.box(
style=me.Style(
padding=me.Padding.all(8),
background="white",
height="400px",
width="400px",
border_radius=16,
)
):
me.text(text="Enhanced Prompt:", style=me.Style(font_family="Google Sans", font_weight="bold"))
me.text(text=s.enhanced_prompt, style=me.Style(padding=me.Padding.all(10), font_family="Google Sans"),
)
Kode ini membuat aplikasi web satu halaman yang menyertakan komponen berikut:
- Judul
- Area teks untuk memasukkan perintah gambar
- Tombol kirim yang memanggil fungsi
generate_image
- Gambar yang dihasilkan Imagen
- Perintah yang ditingkatkan yang ditampilkan dengan gambar
7. Menjalankan aplikasi di Cloud Shell
- Setelah menyalin semua cuplikan kode ke
main.py
, Anda dapat menjalankan aplikasi Mesop dari terminal Cloud Shell.mesop main.py
- Sekarang, klik tombol Pratinjau Web di pojok kanan atas, lalu klik Ubah port. Ketik 32123 di kotak Port Number, lalu klik Change and Preview. Jendela baru akan terbuka tempat Anda dapat melihat aplikasi yang dimuat. Jendela tersebut akan terlihat seperti ini:
8. Menguji Imagen 3
Di sini Anda dapat mencoba Imagen dengan perintah teks Anda sendiri. Anda dapat membuat gambar dalam berbagai gaya, mulai dari fotorealisme, animasi, hingga gaya artistik yang berbeda. Anda juga dapat menentukan sudut kamera, lensa, dan lainnya. Perintah teks asli Anda juga akan ditulis ulang melalui fitur berbasis LLM yang dimaksudkan untuk menghasilkan gambar berkualitas lebih tinggi yang lebih mencerminkan intent perintah asli.
Catatan: Membuat gambar orang memerlukan akses tambahan. Sementara itu, Anda akan mendapatkan error jika perintah Anda menyertakan pembuatan orang atau wajah.
Berikut adalah beberapa contoh perintah yang dapat Anda coba:
- Topi bisbol berwarna krem dengan tulisan 'good vibes' di bagian atas dalam huruf putih bertekstur bergelembung yang dijahit dan digarisi dengan warna hijau neon.
- Toko permen yang unik.
- Kartu pos kartun Las Vegas dengan nama kota yang dieja dan stempel pos di sudut kanan.
- Anak dan anak kucing bermain dengan bola benang.
9. Pembersihan
Menghentikan aplikasi
Kembali ke terminal tempat Anda meluncurkan aplikasi dan keluar dengan Ctrl C.
Menonaktifkan lingkungan virtual
Di terminal yang sama, ketik perintah berikut:
deactivate
10. Kesimpulan
Selamat! Anda telah berhasil menyelesaikan codelab ini dengan mem-build aplikasi dengan Imagen dan membuat beberapa gambar.
Survei
Beri tahu kami pendapat Anda tentang codelab ini dengan mengisi survei singkat ini.