با Imagen و Mesop در Cloud Shell یک برنامه تولید تصویر بسازید

با Imagen و Mesop در Cloud Shell یک برنامه تولید تصویر بسازید

درباره این codelab

subjectآخرین به‌روزرسانی: آوریل ۴, ۲۰۲۵
account_circleنویسنده: Katie Nguyen

1. مقدمه

تصور کنید که یک توضیح متنی ساده را در چند ثانیه به یک تصویر پر جنب و جوش و با جزئیات تبدیل کنید. این قدرت رسانه‌های مولد است، حوزه‌ای که به سرعت در حال تکامل است که نحوه ایجاد و تعامل شما با محتوای بصری را تغییر می‌دهد. مدل‌هایی مانند Imagen 3 گوگل در Vertex AI، قابلیت‌های جدید هوش مصنوعی را برای توسعه‌دهندگان برنامه‌ها به ارمغان می‌آورند.

Imagen 3 با کیفیت ترین مدل تبدیل متن به تصویر گوگل تا به امروز است. این می تواند تصاویری با جزئیات خیره کننده ایجاد کند. بنابراین، توسعه دهندگان هنگام ساختن نسل بعدی محصولات هوش مصنوعی که تخیل آنها را به دارایی های بصری با کیفیت بالا تبدیل می کند، کنترل بیشتری دارند. درباره Imagen در Vertex AI بیشتر بیاموزید.

این آزمایشگاه کد شما را در استفاده از قدرت Imagen با استفاده از Google Gen AI SDK راهنمایی می کند. شما نه تنها نحوه تولید تصاویر خیره کننده از پیام های متنی را بررسی خواهید کرد، بلکه این قابلیت را با استفاده از Mesop ، یک چارچوب رابط کاربری پایتون، در یک برنامه وب ادغام خواهید کرد.

پیش نیازها

چیزی که یاد خواهید گرفت

  • نحوه استفاده از Google Gen AI SDK برای پایتون برای تعامل با Imagen 3
  • نحوه تولید تصاویر از پیام های متنی
  • چگونه یک برنامه Mesop بسازیم و آن را از Cloud Shell اجرا کنیم

آنچه شما نیاز دارید

  • درک اولیه پایتون
  • اجرای دستورات را در ترمینال Cloud Shell تجربه کنید
  • رایانه ای با دسترسی به Cloud Shell

2. راه اندازی محیط و نصب وابستگی ها

  1. Cloud Shell Editor را باز کنید
  2. روی دکمه Open Terminal در گوشه سمت راست بالا کلیک کنید
  3. با وارد کردن دستور زیر در ترمینال یک پوشه جدید ایجاد کنید:
mkdir my-imagen-app
  1. دایرکتوری ها را به پوشه جدید خود تغییر دهید:
cd my-imagen-app
  1. ایجاد یک محیط مجازی در پایتون 3:
python3 -m venv myenv
  1. فعال کردن محیط مجازی:
source myenv/bin/activate
  1. Mesop را نصب کنید:
pip3 install mesop
  1. Google Gen AI SDK را برای پایتون نصب کنید:
pip install google-genai
  1. یک فایل پایتون بسازید:
touch main.py

3. راه اندازی برنامه

تمام کدهای مورد نیاز برای اجرای برنامه Mesop در main.py وجود خواهد داشت. در هر یک از مراحل بعدی، آن را به ترتیب در این فایل در Cloud Shell Editor کپی و جایگذاری کنید.

واردات کتابخانه ها

import base64
import mesop as me
from google import genai
from google.genai import types

اطلاعات پروژه Google Cloud را تنظیم کنید و مشتری ایجاد کنید

  1. ID پروژه خود را تنظیم کنید:
PROJECT_ID = "[your-project-id]"

هنگامی که این خط کد را کپی می کنید، نام پروژه Google Cloud خود را جایگزین [your-project-id] کنید.

  1. ایجاد مشتری:
client = genai.Client(vertexai=True, project=PROJECT_ID, location="us-central1")

مدل تولید تصویر را بارگیری کنید

imagen_model = "imagen-3.0-generate-002"

مدیریت دولتی

تعریف مدیریت حالت به شما امکان می دهد اطلاعات را در طول سفر کاربر خود ذخیره کنید.

@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 : کاربر ورودی ارائه کرده است که برای تولید تصویر استفاده خواهد شد.
  • enhanced_prompt : مدل imagen-3.0-generate-002 گزینه ای برای بهبود درخواست ارائه شده شما ارائه می دهد. یک درخواست جدید و دقیق از نسخه اصلی شما ایجاد می شود تا به تولید تصاویر با کیفیت بالاتر کمک کند و در این متغیر برگردانده می شود.
  • img_data : محل ذخیره سازی ابری یا بایت های تصویر یک تصویر تولید شده با Imagen 3.

4. توابع کمکی را تعریف کنید

تابع بارگذاری

این کد با بارگذاری برنامه اجرا می شود. حالت برنامه را روی رنگ های سیستم تنظیم می کند.

def load(e: me.LoadEvent):
  me.set_theme_mode("system")

عملکرد تاری

این تابع ورودی کاربر را در متغیر حالت شما ذخیره می کند.

def on_blur(e: me.InputBlurEvent):
    state
= me.state(State)
    state
.input = e.value

5. با Imagen تصویر تولید کنید

این تابع زمانی فراخوانی می شود که کاربر روی دکمه ای کلیک می کند تا یک درخواست متنی برای تولید تصویر ارسال کند.

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 را پیکربندی کنید:

  • 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

توجه: تنها گزینه‌ای که بدون فهرست مجاز اضافی کار می‌کند DONT_ALLOW است.

6. ساختار طرح‌بندی برنامه

@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"),
            )

این کد یک برنامه کاربردی تک صفحه ای ایجاد می کند که شامل اجزای زیر است:

  • عنوان
  • ناحیه متن برای وارد کردن درخواست تصویر
  • دکمه ارسال که تابع generate_image را فراخوانی می کند
  • تصویر ایجاد شده توسط Imagen
  • درخواست پیشرفته همراه با تصویر بازگشت

7. برنامه را در Cloud Shell اجرا کنید

  1. پس از کپی کردن تمام قطعه کدها در main.py ، می توانید برنامه Mesop را از ترمینال Cloud Shell خود اجرا کنید.
    mesop main.py
  2. حالا روی دکمه Web Preview در گوشه سمت راست بالا کلیک کنید و سپس روی Change port کلیک کنید. 32123 را در کادر Port Number تایپ کنید و سپس روی Change and Preview کلیک کنید. یک پنجره جدید باید باز شود که در آن می توانید برنامه بارگذاری شده را مشاهده کنید. باید چیزی شبیه این باشد: اسکرین شات برنامه

8. آزمایش تصویر 3

اینجا جایی است که می توانید Imagen را با پیام های متنی خود امتحان کنید. شما می توانید تصاویر را در طیف وسیعی از سبک ها از فوتورئالیسم گرفته تا انیمیشن و سبک های مختلف هنری تولید کنید. همچنین می‌توانید زوایای دوربین، لنزها و موارد دیگر را مشخص کنید. درخواست متن اصلی شما همچنین از طریق یک ویژگی مبتنی بر LLM بازنویسی می شود که به منظور تولید تصاویر با کیفیت بالاتر است که بهتر هدف درخواست اصلی را منعکس می کند.

توجه: تولید تصاویر افراد نیاز به دسترسی بیشتری دارد. در همین حال، اگر درخواست شما شامل تولید شخص یا چهره باشد، با خطا مواجه خواهید شد.

در اینجا چند نمونه دستور وجود دارد که می توانید امتحان کنید:

  1. یک کلاه بیسبال بژ با حروف حبابدار سفید که در بالا به رنگ سبز نئون مشخص شده است، روی آن «حالت خوب» نوشته شده است.
  2. یک شیرینی فروشی عجیب و غریب.
  3. کارت پستال کارتونی لاس وگاس با املای نام شهر و تمبر پستی در گوشه سمت راست.
  4. یک توله سگ و یک بچه گربه که با یک توپ کاموا بازی می کنند.

9. پاکسازی

برنامه را متوقف کنید

به ترمینالی که برنامه را راه اندازی کردید برگردید و با Ctrl C از آن خارج شوید.

محیط مجازی را غیرفعال کنید

در همان ترمینال دستور زیر را تایپ کنید:

deactivate

10. نتیجه گیری

تبریک می گویم! شما با ساختن یک برنامه کاربردی با Imagen و تولید چند تصویر، این کد لبه را با موفقیت تکمیل کردید.

نظرسنجی

با پر کردن این نظرسنجی کوتاه، نظر خود را در مورد این کد لبه به ما اطلاع دهید.

مراحل بعدی