Cloud Shell'da Imagen ve Mesop ile Görüntü Üretme Uygulaması oluşturma

Cloud Shell'da Imagen ve Mesop ile Görüntü Üretme Uygulaması oluşturma

Bu codelab hakkında

subjectSon güncelleme Nis 4, 2025
account_circleYazan: Katie Nguyen

1. Giriş

Basit bir metin açıklamasını saniyeler içinde canlı ve ayrıntılı bir resme dönüştürmeyi hayal edin. Bu, görsel içerikleri oluşturma ve bu içeriklerle etkileşim kurma şeklinizi yeniden şekillendiren, hızla gelişen bir alan olan üretken medyanın gücüdür. Google'ın Vertex AI'daki Imagen 3 gibi modeller, uygulama geliştiricilere en gelişmiş üretken yapay zeka özelliklerini sunuyor.

Imagen 3, Google'ın bugüne kadarki en yüksek kaliteli metin-resim modelidir. Bu kamera, şaşırtıcı 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 kontrole sahip olur. Vertex AI'da Imagen hakkında daha fazla bilgi edinin.

Bu kod laboratuvarı, Google Gen AI SDK'sını kullanarak Imagen'in gücünden yararlanmanıza rehberlik edecektir. Yalnızca metin istemlerinden çarpıcı resimler oluşturmayı keşfetmekle kalmaz, aynı zamanda bir Python kullanıcı arayüzü çerçevesi olan Mesop'u kullanarak bu özelliği bir web uygulamasına entegre edersiniz.

Ön koşullar

Neler öğreneceksiniz?

  • Imagen 3 ile etkileşimde bulunmak için Python için Google Gen AI SDK'sını kullanma
  • Metin istemlerinden resim oluşturma
  • Mesop uygulaması oluşturma ve Cloud Shell'den çalıştırma

İhtiyacınız olanlar

  • Python hakkında temel düzeyde bilgi
  • Cloud Shell terminalinde komut çalıştırma deneyimi
  • Cloud Shell'e erişimi olan bir bilgisayar

2. Ortamı ayarlama ve bağımlılıkları yükleme

  1. Cloud Shell Düzenleyici'yi açın
  2. Sağ üst köşedeki Terminal'i Aç düğmesini tıklayın.
  3. Terminale aşağıdaki komutu girerek yeni bir klasör oluşturun:
mkdir my-imagen-app
  1. Dizinleri yeni klasörünüzle değiştirin:
cd my-imagen-app
  1. Python 3'te sanal ortam oluşturma:
python3 -m venv myenv
  1. Sanal ortamı etkinleştirin:
source myenv/bin/activate
  1. Mesop'u yükleme:
pip3 install mesop
  1. Python için Google Gen AI SDK'sını yükleyin:
pip install google-genai
  1. Python dosyası oluşturun:
touch main.py

3. Uygulama kurulumu

Mesop uygulamasını çalıştırmak için gereken tüm kod main.py içinde bulunur. Sonraki adımların her birinde, bu dosyayı Cloud Shell Düzenleyici'ye kopyalayıp sırayla 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

  1. 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.

  1. İstemci oluşturma:
client = genai.Client(vertexai=True, project=PROJECT_ID, location="us-central1")

Resim oluşturma modelini yükleme

imagen_model = "imagen-3.0-generate-002"

Durum yönetimi

Durum yönetimini tanımlamak, kullanıcı yolculuğunuz boyunca bilgi depolamanıza olanak tanır.

@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ı, resim oluşturmak için kullanılacak girişi sağladı.
  • enhanced_prompt: imagen-3.0-generate-002 modeli, sağladığınız istemi geliştirme seçeneği sunar. Daha yüksek kaliteli resimler oluşturmanıza 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 resim oluşturma

Bu işlev, kullanıcı bir düğmeyi tıklayarak resim oluşturma için metin istemi gönderdiğinde ç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, 4
  • aspect_ratio: 1:1, 9:16, 16:9, 3:4, 4:3
  • safety_filter_level: BLOCK_LOW_AND_ABOVE, BLOCK_MEDIUM_AND_ABOVE, BLOCK_ONLY_HIGH, BLOCK_NONE
  • person_generation: DONT_ALLOW, ALLOW_ADULT, ALLOW_ALL

Not: Ek izin verilenler listesine ekleme yapmadan çalışacak tek seçenek DONT_ALLOW'tır.

6. Yapı uygulamasının düzeni

@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 girilecek metin alanı
  • generate_image işlevini çağıran gönder düğmesi
  • Imagen tarafından oluşturulmuş bir resim
  • Resim ile birlikte döndürülen gelişmiş istem

7. Uygulamayı Cloud Shell'de çalıştırma

  1. Tüm kod snippet'lerini main.py içine kopyaladıktan sonra Mesop uygulamasını Cloud Shell terminalinizden çalıştırabilirsiniz.
    mesop main.py
  2. Ardından, 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 ardından 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 şu şekilde görünür: Uygulama Ekran Görüntüsü

8. Test Imagen 3

Burada, kendi metin istemlerinizle Imagen'ı deneyebilirsiniz. Fotoğraf gerçekçiliğinden animasyona ve farklı sanatsal stillere kadar çeşitli stillerde resimler oluşturabilirsiniz. Ayrıca belirli kamera açılarını, lensleri ve daha fazlasını da belirtebilirsiniz. Orijinal metin isteminiz de LLM tabanlı bir özellik aracılığıyla yeniden yazılır. Bu özellik, orijinal istemin amacını daha iyi yansıtan daha yüksek kaliteli resimler oluşturmayı amaçlar.

Not: İnsanların yer aldığı görseller oluşturmak için ek erişim gerekir. Bu süre zarfında isteminiz kişi veya yüz oluşturma içeriyorsa hata alırsınız.

Deneyebileceğiniz bazı istem örnekleri:

  1. Üzerinde neon yeşil renkli kenarlı, kabarık beyaz dikişlerle "good vibes" (iyi hisler) yazan bej beyzbol şapkası.
  2. Sıra dışı bir şeker dükkanı.
  3. Las Vegas'ın karikatür olarak resmedildiği ve sağ köşesinde posta pulu bulunan bir kartpostal.
  4. Bir köpek yavrusu ve bir yavru kedi yumakla oynuyor.

9. Temizleme

Uygulamayı durdurma

Uygulamayı başlattığınız terminale geri dönün ve Ctrl C ile çı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şturarak ve bazı resimler üreterek bu codelab'i başarıyla tamamladınız.

Anket

Bu kısa anketi doldurarak bu codelab hakkındaki düşüncelerinizi bizimle paylaşın.

Sonraki adımlar