GenAI - কীওয়ার্ড থেকে ইমেজ জেনারেশন

1. ভূমিকা

শেষ আপডেট: 2023-10-12

ইমেজেন ইমেজ জেনারেশন

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

প্রম্পট জেনারেশন

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

সামগ্রিক পদ্ধতি নিম্নরূপ -

fbb3826592b2816d.png

গ্র্যাডিও UI

Gradio হল একটি ওপেন-সোর্স পাইথন লাইব্রেরি যা আপনাকে আপনার মেশিন লার্নিং মডেল, যেকোনো API, এমনকি কয়েকটি লাইনের কোড ব্যবহার করে স্বেচ্ছাচারী Python ফাংশনের জন্য দ্রুত ব্যবহারযোগ্য, কাস্টমাইজযোগ্য UI উপাদান তৈরি করতে দেয়। আপনি সরাসরি আপনার Jupyter নোটবুকে Gradio GUI সংহত করতে পারেন বা এটিকে যে কারো সাথে একটি লিঙ্ক হিসাবে ভাগ করতে পারেন৷ গ্র্যাডিও টেক্সট, ছবি, ভিডিও এবং অডিও সহ বিভিন্ন ধরনের মিডিয়াকে সমর্থন করে। এটি ইনপুট ক্ষেত্র, বোতাম, স্লাইডার এবং ড্রপ-ডাউন মেনুর মতো অনেকগুলি পূর্ব-নির্মিত UI উপাদান সরবরাহ করে।

আপনি কি নির্মাণ করবেন

এই কোডল্যাবে, আপনি একটি Gradio অ্যাপ স্থাপন করতে যাচ্ছেন যা করবে:

  • কীওয়ার্ড বা বাক্যাংশ ব্যবহার করে একটি পাঠ্য প্রম্পট তৈরি করুন। উত্পন্ন প্রম্পট নিজেও সম্পাদনা করা যেতে পারে।
  • UI-তে জেনারেট করা প্রম্পট থেকে ছবি তৈরি করুন।

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

  • কিভাবে টেক্সট-বাইসন মডেলের সাথে জিরো-শট এবং কয়েক-শট লার্নিং ব্যবহার করতে হয় যাতে ইমেজ তৈরির জন্য ইমেজ নির্দিষ্ট প্রম্পট তৈরি করা যায়।
  • এপিআই এবং প্রম্পটের মাধ্যমে ইমেজেন মডেল ব্যবহার করে কীভাবে ছবি তৈরি করবেন।
  • ভার্টেক্স এআই ওয়ার্কবেঞ্চ নোটবুক থেকে কীভাবে গ্র্যাডিও অ্যাপ্লিকেশন তৈরি, স্থাপন এবং পরীক্ষা করবেন।

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

  • উদাহরণস্বরূপ একটি GCP প্রকল্পে অ্যাক্সেস - 'Cloud-llm-preview4'
  • ভার্টেক্স এআই ওয়ার্কবেঞ্চ তৈরি করতে অ্যাক্সেস
  • Vertex AI API সক্ষম করা হয়েছে।
  • গ্র্যাডিওর জন্য নেটওয়ার্কিং প্রয়োজনীয়তা: নোটবুক ইনস্ট্যান্স অ্যাক্সেস পাবলিক ইউআরএল

2. সেট আপ করা হচ্ছে

নোটবুক তৈরি করুন

  • প্রকল্পে লগ ইন করুন
  • বাম নেভিগেশন মেনু থেকে ওয়ার্কবেঞ্চে নেভিগেট করুন
  • " USER-পরিচালিত নোটবুক " এর অধীনে, ডিফল্ট বিকল্পগুলির সাথে একটি নতুন নোটবুক তৈরি করুন৷
  • একবার ইন্সট্যান্স দেওয়া হয়ে গেলে " ওপেন জুপিটারল্যাব "-এ ক্লিক করুন।

দ্রষ্টব্য: নোটবুকটি বন্ধ অবস্থায় থাকলে নোটবুক শুরু করতে কয়েক মিনিট সময় লাগতে পারে।

কোড পান

আমরা এখানে কোড ফাইল রেখেছি। এই নোটবুকটি আপনার পরিবেশে আমদানি করা যেতে পারে এবং যেমন আছে তেমন চালানো যেতে পারে (আপনার প্রকল্পের বিবরণ পরিবর্তন করা ছাড়া)।

3. কোড চালান

প্রয়োজনীয় নির্ভরতা এবং লাইব্রেরি ইনস্টল/আমদানি করুন

  • Gradio অ্যাপটি ইনস্টল করুন
  • টেক্সট-বাইসন এবং ইমেজ জেনারেশনের জন্য Vertex AI APIs আমদানি করুন।
  • অন্যান্য সমস্ত প্রয়োজনীয় লাইব্রেরি আমদানি করুন।

টেক্সট-বাইসন ব্যবহার করে প্রম্পট জেনারেশন

কীওয়ার্ড এবং/অথবা বাক্যাংশ সহ একটি ব্যবহারকারীর ইনপুট ব্যবহার করে যেমন কীওয়ার্ড বা বাক্যাংশগুলির কমা দ্বারা পৃথক করা তালিকা যা তৈরি করা প্রয়োজনীয় চিত্র বর্ণনা করে একটি বাক্য গঠন করতে ব্যবহার করা যেতে পারে।

উদাহরণের জন্য - ব্যক্তিত্ব, বিষয়, পটভূমি, আলো এবং অন্যান্য বর্ণনা।

যে ফাংশনটি প্রম্পট তৈরি করে তা নিম্নরূপ দেওয়া হয়েছে:

def প্রম্পট_জেনারেশন(ব্যক্তিত্ব, সংকেত, থিম, আলো, গুণমান, অতিরিক্ত_ডেস্ক):

model = TextGenerationModel.from_pretrained("text-bison")

response_few_shot = model.predict(

    few_shot_prompt,

    **parameters

)

response_single_shot = model.predict(

    prompt,

    **parameters

)

কিছু-শট এবং জিরো-শট প্রম্পট

জিরো-শট প্রম্পটিং হল একটি টেক্সট জেনারেশন টেকনিক যেখানে মডেলকে কোনও প্রসঙ্গ বা উদাহরণ দেওয়া হয় না যে থেকে টেক্সট জেনারেট করা যায়। এটি চ্যালেঞ্জিং হতে পারে, কারণ মডেলটিকে সুসংগত এবং তথ্যপূর্ণ পাঠ্য তৈরি করতে তার নিজস্ব জ্ঞানের উপর নির্ভর করতে হবে।

যাইহোক, জিরো-শট প্রম্পটিংও খুব সৃজনশীল হতে পারে, কারণ মডেলটি কোনো পূর্ব-বিদ্যমান উদাহরণ দ্বারা সীমাবদ্ধ নয়।

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

নিচে Few-Shot এবং Zero-shot prompts-এর নমুনা কোড দেওয়া হল।

**# কোডে ব্যবহৃত কয়েকটি শট প্রম্পট**

few_shot_prompt = f""""আপনি ইমেজ জেনারেশন মডেলের জন্য প্রম্পট লেখার একজন বিশেষজ্ঞ৷ প্রদত্ত বাক্যাংশ এবং কীওয়ার্ডগুলি ব্যবহার করে, সেগুলিকে একত্রিত করুন এবং যৌক্তিক এবং অর্থপূর্ণ প্রম্পট তৈরি করতে কিছু বাস্তবসম্মত বিবরণ যোগ করুন যা ইমেজ তৈরির জন্য ব্যবহার করা যেতে পারে৷

input: people, gardening, house garden, colorful plants, Real, HD image, Photo.

output: A Photo of people gardening in a house garden landscape with few coloured flowering plants. Realistic FULL HD Images, Elegant and natural facial and eye features taken by professional photographer

input: plumber, faucet, kitchen, high quality, natural lighting, Photo

output: A Photo of a plumber fixing a faucet in the kitchen. High quality image with natural indoor lighting.

input: house and garden, halloween, warm lighting, high quality image, Sketch

output: A Sketch of Beautiful House and Garden with Halloween Decorations. Warm lighting, High Quality, 4K photograph taken by professional photographer from front.

input: nice living room, warm lighting,Professional Photographer from far, Photo

output: A photo of a Well designed Living Room. Warm lighting, High Quality, 4K photograph taken by Professional Photographer from far

input: {params_list_str}

output:

"""

# কোডে ব্যবহৃত জিরো শট প্রম্পট

prompt = f"""আপনি ইমেজ জেনারেশন মডেলের জন্য প্রম্পট লেখার ক্ষেত্রে একজন বিশেষজ্ঞ। ইমেজ জেনারেশন মডেলের জন্য অর্থপূর্ণ প্রম্পটগুলির একটি তালিকা লিখতে আমাকে সাহায্য করুন বিশেষ করে এই শব্দগুলি সহ: "{params_list_str}"৷ প্রম্পটে এই শব্দগুলি অন্তর্ভুক্ত করতে মনে রাখবেন এবং প্রম্পটকে অর্থপূর্ণ করে তুলুন।"""

Imagen ব্যবহার করে ইমেজ জেনারেশন

একটি ব্যবহারকারীর ইনপুট প্রম্পট এবং নেতিবাচক প্রম্পট (ঐচ্ছিক) ব্যবহার করে এবং মডেলে একই ফিড করে (imagegeneration@002)।

def image_generation_completion(ইনপুট, নেতিবাচক_প্রম্পট):

input_prompt = input

model = ImageGenerationModel.from_pretrained("imagegeneration@002")

response = model.generate_images(

    prompt=input_prompt,

    number_of_images=4, #kept to static value of 4

    negative_prompt=negative_prompt

)

নিম্নলিখিত কোডটি ব্যবহারকারীর ইনপুট প্রম্পট এবং নেতিবাচক প্রম্পট থেকে ছবি তৈরি করতে অন্তর্ভুক্ত করা হয়েছে। চূড়ান্ত কোড পাঠ্য-বাইসন মডেল দ্বারা উত্পন্ন প্রম্পট ব্যবহার করে।

vertexai.preview.vision_models থেকে Image GenerationModel আমদানি করুন

def image_generation(ইনপুট, নেতিবাচক_প্রম্পট):

input_prompt = input

model = ImageGenerationModel.from_pretrained("imagegeneration@002")

response = model.generate_images(

    prompt=input_prompt,

    number_of_images=4, #kept to static value of 4.. can be a max value of 8

    negative_prompt=negative_prompt

)

images = response.images

return images

user_prompt = " প্রম্পট : এক তরুণী একগুচ্ছ গাছ থেকে একটি সাজসজ্জাবিহীন তাজা ক্রিসমাস ট্রি প্রদর্শন ও বিক্রি করছেন। ঠান্ডা আলো, উচ্চ গুণমান এবং বিশদ ছবি দূর থেকে পেশাদার ফটোগ্রাফারের তোলা।"

নেতিবাচক_প্রম্পট = "বিকৃত এবং আকর্ষণীয় মুখ"

generated_images_list = image_generation(user_prompt,negative_prompt)

# উত্পন্ন চিত্রের একটি দেখান

generated_images_list[0].show()

আউটপুট -

db04a6bfdd78693b.jpeg

4. Gradio অ্যাপ স্থাপন করুন

গ্র্যাডিও ফ্রন্টএন্ডের জন্য ব্যবহার করা হয় যেখানে ব্যবহারকারীরা কীওয়ার্ড ইনপুট করতে পারে এবং স্ট্রাকচার্ড প্রম্পট তৈরি করতে পারে এবং এই প্রম্পটগুলি সরাসরি ব্যবহার করা যেতে পারে বা ব্যবহারকারীর দ্বারা আরও সম্পাদনা করা যেতে পারে এবং তারপর ইনপুট অনুযায়ী ছবি তৈরি করতে ইমেজেনে খাওয়ানো হয়। Gradio হল একটি পাইথন লাইব্রেরি যা মেশিন লার্নিং মডেলের জন্য ইউজার ইন্টারফেস তৈরি করতে ব্যবহার করা যেতে পারে। এই অ্যাপ্লিকেশনটির জন্য, এই অ্যাপ্লিকেশনটিতে নমনীয়তা এবং জটিল ডেটা প্রবাহ যোগ করতে ব্লকগুলি ব্যবহার করা হয়। ব্লক সারি এবং কলাম ব্যবহার করে অ্যাপ্লিকেশন লেআউট পরিচালনা প্রদান করে:

ডেমো হিসাবে gr.Blocks() সহ:

#Prompt Generation Part

with gr.Row():

    with gr.Column(scale=1):

        Persona = gr.Textbox(label="Persona", info = "Customer segment such as Plumber, Electrician etc.")

    with gr.Column(scale=1):

        Signals = gr.Textbox(label="Signals", info = "Main content of banner such as Faucet, Lamp etc.")

    with gr.Column(scale=1):

        Theme = gr.Textbox(label="Theme", info = "Context of the banner such as Halloween, Kitchen etc.")

with gr.Row():

    with gr.Column(scale=1):

        photo_modifiers = gr.Textbox(label="Photography Modifiers", info = "Photography specific modifiers and parameters such as Lighting(Dramatic/Natural/Warm/Cold), Camera Proximity etc.")

    with gr.Column(scale=1):

        quality_modifiers =  gr.Textbox(label="Image Quality Modifier", info = "Quality Modifiers like high-quality, beautiful, stylized. 4K, HDR, By a professional etc")

    with gr.Column(scale=1):

        other_desc =  gr.Textbox(label="Any Other Description", info = "Other Descriptions for Image such as Style (Painting/Photo/Sketch), Bakground/Foreground Context")

gr.Row(): সহ

    btn = gr.Button("Submit")

gr.Row(): সহ

    returned_prompts = gr.Textbox(label="Result Prompts", interactive = True)    

btn.click(fn=prompt_generation, inputs=[Persona, Signals,theme, photo_modifiers, quality_modifiers, other_desc], outputs = returned_prompts)

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

এই প্রকল্পের জন্য, নমনীয়তা এবং জটিলতা যোগ করতে ব্লক ব্যবহার করে অ্যাপ্লিকেশনটি তৈরি করা হয়েছে

ডেটা অ্যাপ্লিকেশনে প্রবাহিত হয়। ব্লক ছাড়াও, একাধিক Gradio উপাদান আছে

সহ ব্যবহৃত:

নীচে একটি কোড স্নিপেট ইনপুট এবং নেতিবাচক প্রম্পট থেকে ছবি তৈরি করতে ব্যবহৃত হয়:

 #ইমেজ জেনারেশন অংশ

with gr.Row():

    with gr.Column(scale=1):

        image_prompt = gr.Textbox(label="Image Generation Prompt")

with gr.Accordion("Advanced options", open=False): #Let's hide the advanced options!

    with gr.Row():

        negative_prompt = gr.Textbox(label="Negative prompt", info = "Specify What not to Include in Image ex. Bad Quality Image")

with gr.Row():

    with gr.Column(scale=1):    

        img_btn = gr.Button("Generate Images")

with gr.Row():

    with gr.Column():

        output_image_1 = gr.Image(label = "Result Image 1", visible = False)

    with gr.Column():

        output_image_2 = gr.Image(label = "Result Image 2", visible = False)

with gr.Row():

    with gr.Column():

        output_image_3 = gr.Image(label = "Result Image 3", visible = False)

    with gr.Column():

        output_image_4 = gr.Image(label = "Result Image 4", visible = False)

returned_prompts.select(populate_image_prompt, inputs = [returned_prompts], outputs = image_prompt)

img_btn.click(fn=image_generation_completion, inputs=[image_prompt,negative_prompt], outputs = [output_image_1,output_image_2,output_image_3,output_image_4])       

Gradio অ্যাপ্লিকেশানটি চালানো এবং পরীক্ষা করতে, কেবল একটি টেক্সট প্রম্পটে টাইপ করুন এবং জেনারেট বোতামে ক্লিক করুন। Imagen আপনার প্রম্পটের উপর ভিত্তি করে একটি ছবি তৈরি করবে। ইমেজেন কী ধরনের ছবি তৈরি করতে পারে তা দেখতে আপনি বিভিন্ন প্রম্পট চেষ্টা করতে পারেন।

নিচে Gradio অ্যাপে প্রম্পট জেনারেশনের স্ক্রিনশট দেওয়া হল।

70331c9645b1e91b.png

নিচে Gradio অ্যাপে ইমেজ জেনারেশনের স্ক্রিনশট দেওয়া হল।

a7261e8fafab7073.png

কিছু উদাহরণ-

উদাহরণ 1 -

[বাম চিত্র] প্রম্পট (প্রম্পট হিসাবে সাধারণ কীওয়ার্ড ব্যবহার করে): কিছু বন্ধু বোটিং করছে।

[ডান চিত্র] প্রম্পট (টেক্সট-বাইসন দ্বারা উত্পন্ন প্রম্পট ব্যবহার করে) : জঙ্গলে অন্ধকার গাছে ঘেরা একটি নৌকায় মাছ ধরছে 2 যুবকের একটি ছবি। পুরুষরা শার্ট পরে নৌকায় দাঁড়িয়ে আছে। প্রাকৃতিক আলো, উচ্চ মানের, 4K ফটো পেশাদার ফটোগ্রাফার দ্বারা তোলা।

c2f5fabd10baf42.jpegabc9b8204a9fdf7f.jpeg

উদাহরণ 2 -

[বাম চিত্র] প্রম্পট ((প্রম্পট হিসাবে সাধারণ কীওয়ার্ড ব্যবহার করে)): একটি ক্রিসমাস ট্রি

[ডান চিত্র] প্রম্পট (টেক্সট-বাইসন দ্বারা উত্পন্ন প্রম্পট ব্যবহার করে): একটি বাতি এবং আসবাবপত্র সহ একটি ঘরে ক্রিসমাস ট্রি। গাছটি আলো এবং অলঙ্কারে সজ্জিত। এটি একটি জানালার কাছে স্থাপন করা হয়েছে এবং পটভূমিতে একটি প্রাচীর দেখা যাচ্ছে। উষ্ণ আলো, উচ্চ মানের, এইচডিআর ছবি প্রফেশনাল ফটোগ্রাফারের তোলা ছবি।

f10cf9f52ffd92c7.jpegcce36df7a439b309.jpeg

5. ক্লিন-আপ

আপনার সম্পদ পরিষ্কার করতে,

  • গ্র্যাডিও অ্যাপ বন্ধ করুন।
  • ওয়ার্কবেঞ্চ নোটবুক বন্ধ/মুছুন।

6. অভিনন্দন

অভিনন্দন, আপনি Google Text-Bison API এবং Imagen API-এর সাহায্যে প্রম্পট এবং ছবি তৈরি করার জন্য একটি Gradio অ্যাপ্লিকেশন সফলভাবে স্থাপন করেছেন।