1. Giriş
Basit bir metin açıklamasını saniyeler içinde canlı ve ayrıntılı bir görüntüye dönüştürdüğünüzü hayal edin. Bu, üretken medyanın gücüdür. Hızla gelişen bu alan, görsel içerik oluşturma ve bu içeriklerle etkileşim kurma şeklinizi yeniden şekillendiriyor. Vertex AI'daki Google'ın Imagen 3 gibi modelleri, uygulama geliştiricilere son teknoloji üretken yapay zeka özellikleri sunuyor.
Imagen 3, Google'ın bugüne kadarki en yüksek kaliteli metinden görüntü oluşturma modelidir. İnanılmaz ayrıntılara sahip görüntüler oluşturabilir. Bu sayede geliştiriciler, hayal güçlerini yüksek kaliteli görsel öğelere dönüştüren yeni nesil yapay zeka ürünleri oluştururken daha fazla kontrol sahibi olur. Vertex AI'da Imagen hakkında daha fazla bilgi edinin.
Bu codelab, Google Gen AI SDK'yı kullanarak Imagen'in gücünden yararlanma konusunda size yol gösterecektir. Bu laboratuvarda, metin istemlerinden çarpıcı görüntüler oluşturmayı öğrenmenin yanı sıra bu özelliği Mesop adlı Python kullanıcı arayüzü çerçevesini kullanarak bir web uygulamasına entegre etmeyi de öğreneceksiniz.
Ön koşullar
- Faturalandırmanın ve Vertex AI API'nin etkin olduğu bir Google Cloud projesi. Proje ve geliştirme ortamı oluşturma hakkında daha fazla bilgi edinin.
Neler öğreneceksiniz?
- Imagen 3 ile etkileşim kurmak için Python için Google Gen AI SDK'yı kullanma
- Metin istemlerinden görüntü oluşturma
- Mesop uygulaması oluşturma ve Cloud Shell'den çalıştırma
İhtiyacınız olanlar
- Temel seviyede Python bilgisi
- Cloud Shell terminalinde komut çalıştırma deneyimi
- Cloud Shell'e erişimi olan bir bilgisayar
2. Ortamı ayarlama ve bağımlıları yükleme
- Cloud Shell Düzenleyici'yi açın.
- Sağ üst köşedeki Terminali Aç düğmesini tıklayın.
- Terminalde aşağıdaki komutu girerek yeni bir klasör oluşturun:
mkdir my-imagen-app
- Dizinleri yeni klasörünüze değiştirin:
cd my-imagen-app
- Python 3'te sanal ortam oluşturun:
python3 -m venv myenv
- Sanal ortamı etkinleştirin:
source myenv/bin/activate
- Mesop'u yükleyin:
pip3 install mesop
- Python için Google Gen AI SDK'yı yükleyin:
pip install google-genai
- Python dosyası oluşturma:
touch main.py
3. Uygulama kurulumu
Mesop uygulamasını çalıştırmak için gereken tüm kodlar main.py içinde yer alır. Sonraki adımların her birinde, bu dosyayı Cloud Shell Düzenleyici'ye sırayla kopyalayıp yapıştırın.
Kitaplıkları içe aktarma
import base64
import mesop as me
from google import genai
from google.genai import types
Google Cloud proje bilgilerini ayarlama ve istemci oluşturma
- Proje kimliğinizi ayarlayın:
PROJECT_ID = "[your-project-id]"
Bu kod satırını kopyalarken [your-project-id] yerine Google Cloud projenizin adını yazın.
- İstemci oluşturma:
client = genai.Client(vertexai=True, project=PROJECT_ID, location="us-central1")
Görüntü üretme modelini yükleme
imagen_model = "imagen-3.0-generate-002"
Durum yönetimi
Durum yönetimi tanımlayarak kullanıcı yolculuğunuz boyunca bilgileri saklayabilirsiniz.
@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: Kullanıcı, görüntü üretme için kullanılacak bir giriş sağladı.enhanced_prompt:imagen-3.0-generate-002modeli, sağladığınız istemi iyileştirme seçeneği sunar. Daha yüksek kaliteli resimler oluşturmaya yardımcı olmak için orijinal isteminizden yeni ve ayrıntılı bir istem oluşturulur ve bu değişkende döndürülür.img_data: Imagen 3 ile oluşturulan bir resmin Cloud Storage konumu veya resim baytları.
4. Yardımcı işlevleri tanımlama
Yükleme işlevi
Bu kod, uygulama yüklendiğinde yürütülür. Uygulamanın modunu sistem renklerine ayarlar.
def load(e: me.LoadEvent):
me.set_theme_mode("system")
Bulanıklaştırma işlevi
Bu işlev, kullanıcı girişini durum değişkeninize kaydeder.
def on_blur(e: me.InputBlurEvent):
state = me.state(State)
state.input = e.value
5. Imagen ile görüntü oluşturma
Bu işlev, kullanıcı görüntü üretme için bir metin istemi göndermek üzere bir düğmeyi tıkladığında çağrılır.
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}"
GenerateImagesConfig bölümündeki ayarları yapılandırabilirsiniz:
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
Not: Ek izin listesi oluşturma işlemi olmadan çalışacak tek seçenek DONT_ALLOW'dur.
6. Uygulama düzenini yapılandırma
@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"),
)
Bu kod, aşağıdaki bileşenleri içeren tek sayfalık bir uygulama oluşturur:
- Başlık
- Resim istemi girme metin alanı
generate_imageişlevini çağıran Gönder düğmesi- Imagen ile üretilmiş bir görüntü
- Resimle birlikte döndürülen geliştirilmiş istem
7. Uygulamayı Cloud Shell'de çalıştırma
- Tüm kod snippet'lerini
main.py'ya kopyaladıktan sonra Mesop uygulamasını Cloud Shell terminalinizden çalıştırabilirsiniz.mesop main.py - Şimdi sağ üst köşedeki Web Önizleme düğmesini ve ardından Bağlantı noktasını değiştir'i tıklayın. Bağlantı noktası numarası kutusuna 32123 yazın ve Değiştir ve Önizle'yi tıklayın. Yüklenen uygulamayı görüntüleyebileceğiniz yeni bir pencere açılır. Bu pencere aşağıdaki gibi görünür:

8. Test Imagen 3
Imagen'ı kendi metin istemlerinizle deneyebileceğiniz yer burasıdır. Fotogerçekçilikten animasyona ve farklı sanatsal stillere kadar çeşitli stillerde görüntüler oluşturabilirsiniz. Belirli kamera açıları, lensler ve daha fazlasını da belirtebilirsiniz. Orijinal metin isteminiz, orijinal istemin amacını daha iyi yansıtan, daha yüksek kaliteli görüntüler üretmek için tasarlanmış LLM tabanlı bir özellik aracılığıyla da yeniden yazılır.
Not: İnsanların yer aldığı görüntüler oluşturmak için ek erişim gerekir. Bu süre zarfında, isteminizde kişi veya yüz oluşturma yer alıyorsa hata alırsınız.
Deneyebileceğiniz bazı istem örnekleri:
- Üzerinde neon yeşiliyle çerçevelenmiş, beyaz ve yuvarlak harflerle "good vibes" (iyi enerjiler) yazan bej renkli beyzbol şapkası.
- Sıra dışı bir şekerleme dükkanı.
- Şehir adının yazıldığı ve sağ köşesinde posta pulu bulunan Las Vegas'ın karikatürlü kartpostalı.
- Yumakla oynayan bir yavru köpek ve bir yavru kedi.
9. Temizleme
Uygulamayı durdurma
Uygulamayı başlattığınız terminale geri dönün ve Ctrl+C tuşlarına basarak çıkın.
Sanal ortamı devre dışı bırakma
Aynı terminalde aşağıdaki komutu yazın:
deactivate
10. Sonuç
Tebrikler! Imagen ile bir uygulama oluşturup bazı resimler üreterek bu codelab'i başarıyla tamamladınız.
Anket
Bu codelab hakkındaki düşüncelerinizi bizimle paylaşmak için lütfen kısa anketi doldurun.