ক্লাউড শেলে ইমেজেন এবং মেসপ দিয়ে একটি ইমেজ জেনারেশন অ্যাপ তৈরি করুন

ক্লাউড শেলে ইমেজেন এবং মেসপ দিয়ে একটি ইমেজ জেনারেশন অ্যাপ তৈরি করুন

এই কোডল্যাব সম্পর্কে

subjectএপ্রি ৪, ২০২৫-এ শেষবার আপডেট করা হয়েছে
account_circleKatie Nguyen-এর লেখা

1. ভূমিকা

একটি সাধারণ পাঠ্যের বর্ণনাকে সেকেন্ডের মধ্যে একটি প্রাণবন্ত, বিশদ চিত্রে রূপান্তরিত করার কল্পনা করুন। এটি হল জেনারেটিভ মিডিয়ার শক্তি, একটি দ্রুত বিকশিত ক্ষেত্র যা আপনি কীভাবে ভিজ্যুয়াল কন্টেন্ট তৈরি করেন এবং তার সাথে ইন্টারঅ্যাক্ট করেন তা পুনর্নির্মাণ করে। Vertex AI-তে Google-এর Imagen 3-এর মতো মডেলগুলি অ্যাপ্লিকেশন ডেভেলপারদের জন্য অত্যাধুনিক জেনারেটিভ এআই ক্ষমতা নিয়ে আসছে।

ইমেজেন 3 হল এখন পর্যন্ত গুগলের সর্বোচ্চ মানের টেক্সট-টু-ইমেজ মডেল। এটি আশ্চর্যজনক বিবরণ সহ ছবি তৈরি করতে সক্ষম। এইভাবে, পরবর্তী প্রজন্মের AI পণ্যগুলি তৈরি করার সময় বিকাশকারীদের আরও নিয়ন্ত্রণ থাকে যা তাদের কল্পনাকে উচ্চ মানের ভিজ্যুয়াল সম্পদে রূপান্তরিত করে। Vertex AI-তে Imagen সম্পর্কে আরও জানুন।

এই কোডল্যাবটি Google Gen AI SDK ব্যবহার করে ইমেজেনের শক্তিকে কাজে লাগানোর মাধ্যমে আপনাকে গাইড করবে। আপনি কীভাবে পাঠ্য প্রম্পট থেকে অত্যাশ্চর্য চিত্রগুলি তৈরি করবেন তা কেবল অন্বেষণ করবেন না তবে মেসপ , একটি পাইথন UI ফ্রেমওয়ার্ক ব্যবহার করে একটি ওয়েব অ্যাপ্লিকেশনে এই ক্ষমতাকে একীভূত করবেন৷

পূর্বশর্ত

আপনি কি শিখবেন

  • Imagen 3 এর সাথে ইন্টারঅ্যাক্ট করতে পাইথনের জন্য Google Gen AI SDK কীভাবে ব্যবহার করবেন
  • কিভাবে টেক্সট প্রম্পট থেকে ছবি তৈরি করতে হয়
  • কিভাবে একটি Mesop অ্যাপ তৈরি করবেন এবং ক্লাউড শেল থেকে চালাবেন

আপনি কি প্রয়োজন হবে

  • পাইথন সম্পর্কে প্রাথমিক ধারণা
  • ক্লাউড শেল টার্মিনালে কমান্ড চালানোর অভিজ্ঞতা নিন
  • ক্লাউড শেল অ্যাক্সেস সহ একটি কম্পিউটার

2. পরিবেশ সেটআপ করুন এবং নির্ভরতা ইনস্টল করুন

  1. ক্লাউড শেল এডিটর খুলুন
  2. উপরের ডানদিকের কোণায় ওপেন টার্মিনাল বোতামে ক্লিক করুন
  3. টার্মিনালে নিম্নলিখিত কমান্ডটি প্রবেশ করে একটি নতুন ফোল্ডার তৈরি করুন:
mkdir my-imagen-app
  1. আপনার নতুন ফোল্ডারে ডিরেক্টরি পরিবর্তন করুন:
cd my-imagen-app
  1. পাইথন 3 এ একটি ভার্চুয়াল পরিবেশ তৈরি করুন:
python3 -m venv myenv
  1. ভার্চুয়াল পরিবেশ সক্রিয় করুন:
source myenv/bin/activate
  1. মেসোপ ইনস্টল করুন:
pip3 install mesop
  1. পাইথনের জন্য Google Gen AI SDK ইনস্টল করুন:
pip install google-genai
  1. একটি পাইথন ফাইল তৈরি করুন:
touch main.py

3. অ্যাপ সেটআপ

মেসপ অ্যাপ চালানোর জন্য প্রয়োজনীয় সমস্ত কোড main.py এ থাকবে। পরবর্তী প্রতিটি ধাপের মধ্যে, ক্লাউড শেল এডিটরের এই ফাইলে এটিকে অনুক্রমিকভাবে অনুলিপি করুন এবং পেস্ট করুন।

লাইব্রেরি আমদানি করুন

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

Google ক্লাউড প্রকল্প তথ্য সেট করুন এবং ক্লায়েন্ট তৈরি করুন

  1. আপনার প্রকল্প আইডি সেট করুন:
PROJECT_ID = "[your-project-id]"

আপনি কোডের এই লাইনটি অনুলিপি করার সময় আপনার Google ক্লাউড প্রকল্পের নামের সাথে [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 : ক্লাউড স্টোরেজের অবস্থান বা ইমেজ 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 ফাংশনকে কল করে
  • একটি ইমেজেন জেনারেটেড ইমেজ
  • বর্ধিত প্রম্পট চিত্রের সাথে ফিরে এসেছে

7. ক্লাউড শেল এ অ্যাপ্লিকেশন চালান

  1. একবার আপনি main.py এ সমস্ত কোড স্নিপেট কপি করে নিলে, আপনি আপনার ক্লাউড শেল টার্মিনাল থেকে Mesop অ্যাপ্লিকেশন চালাতে পারেন।
    mesop main.py
  2. এখন, উপরের ডানদিকের কোণায় ওয়েব প্রিভিউ বোতামে ক্লিক করুন এবং তারপরে চেঞ্জ পোর্টে ক্লিক করুন। পোর্ট নম্বর বক্সে 32123 টাইপ করুন এবং তারপর পরিবর্তন এবং পূর্বরূপ ক্লিক করুন। একটি নতুন উইন্ডো খোলা উচিত যেখানে আপনি লোড করা অ্যাপটি দেখতে পারবেন। এটি এই মত কিছু দেখা উচিত: অ্যাপের স্ক্রিনশট

8. পরীক্ষা চিত্র 3

এখানে আপনি আপনার নিজস্ব টেক্সট প্রম্পট দিয়ে ইমেজেন ব্যবহার করে দেখতে পাবেন। আপনি ফটোরিয়ালিজম, অ্যানিমেশন থেকে শুরু করে বিভিন্ন শৈল্পিক শৈলীতে বিভিন্ন শৈলীতে ছবি তৈরি করতে পারেন। আপনি নির্দিষ্ট ক্যামেরার কোণ, লেন্স এবং আরও অনেক কিছু নির্দিষ্ট করতে পারেন। আপনার আসল টেক্সট প্রম্পটটি একটি LLM-ভিত্তিক বৈশিষ্ট্যের মাধ্যমেও পুনর্লিখন করা হবে যা উচ্চ মানের ছবি তৈরি করার জন্য যা মূল প্রম্পটের অভিপ্রায়কে আরও ভালভাবে প্রতিফলিত করে।

দ্রষ্টব্য: মানুষের ছবি তৈরি করার জন্য অতিরিক্ত অ্যাক্সেসের প্রয়োজন। ইতিমধ্যে, আপনার প্রম্পটে ব্যক্তি বা মুখের প্রজন্ম অন্তর্ভুক্ত থাকলে আপনি একটি ত্রুটি পাবেন।

এখানে কিছু উদাহরণ প্রম্পট রয়েছে যা আপনি চেষ্টা করতে পারেন:

  1. সাদা বুদবুদ সেলাই করা অক্ষরে উপরে লেখা 'ভাল ভাইবস' সহ একটি বেইজ বেসবল ক্যাপ যা নিয়ন সবুজ রঙে আউটলাইন করা হয়েছে।
  2. একটি অদ্ভুত মিষ্টির দোকান।
  3. লাস ভেগাসের একটি কার্টুন পোস্টকার্ড যার সাথে শহরের নাম লেখা আছে এবং ডান কোণায় একটি ডাকটিকিট।
  4. একটি কুকুরছানা এবং একটি বিড়ালছানা সুতার একটি বল নিয়ে খেলছে।

9. ক্লিনআপ

আবেদন বন্ধ করুন

টার্মিনালে ফিরে যান যেখানে আপনি অ্যাপ্লিকেশন চালু করেছেন এবং Ctrl C দিয়ে প্রস্থান করুন।

ভার্চুয়াল পরিবেশ নিষ্ক্রিয় করুন

একই টার্মিনালে নিম্নলিখিত কমান্ড টাইপ করুন:

deactivate

10. উপসংহার

অভিনন্দন! আপনি Imagen এর সাথে একটি অ্যাপ্লিকেশন তৈরি করে এবং কিছু ছবি তৈরি করে এই কোডল্যাবটি সফলভাবে সম্পন্ন করেছেন।

সমীক্ষা

এই সংক্ষিপ্ত সমীক্ষাটি পূরণ করে আপনি এই কোডল্যাব সম্পর্কে কী ভেবেছিলেন তা আমাদের জানান।

পরবর্তী পদক্ষেপ