টেক্সট জেনারেশনের বাইরে LLM-এর আরও অনেক কিছু করার ক্ষমতা রয়েছে। টেক্সট বর্ণনা থেকে ছবি তৈরি করাও সম্ভব। ছবি একটি মাধ্যম হিসেবে বিভিন্ন ক্ষেত্রে অত্যন্ত কার্যকর হতে পারে, যেমন মেডটেক, স্থাপত্য, পর্যটন, গেম ডেভেলপমেন্ট এবং আরও অনেক কিছু। এই অধ্যায়ে, আমরা দুটি জনপ্রিয় ইমেজ জেনারেশন মডেল, DALL-E এবং Midjourney সম্পর্কে আলোচনা করব।
এই পাঠে আমরা আলোচনা করব:
- ইমেজ জেনারেশন এবং কেন এটি গুরুত্বপূর্ণ।
- DALL-E এবং Midjourney কী, এবং কীভাবে তারা কাজ করে।
- কীভাবে একটি ইমেজ জেনারেশন অ্যাপ তৈরি করবেন।
এই পাঠ শেষ করার পর, আপনি সক্ষম হবেন:
- একটি ইমেজ জেনারেশন অ্যাপ্লিকেশন তৈরি করতে।
- মেটা প্রম্পট ব্যবহার করে আপনার অ্যাপ্লিকেশনের সীমা নির্ধারণ করতে।
- DALL-E এবং Midjourney নিয়ে কাজ করতে।
ইমেজ জেনারেশন অ্যাপ্লিকেশনগুলি জেনারেটিভ AI-এর ক্ষমতা অন্বেষণ করার একটি চমৎকার উপায়। এগুলি বিভিন্ন ক্ষেত্রে ব্যবহার করা যেতে পারে, যেমন:
-
ইমেজ সম্পাদনা এবং সংশ্লেষণ। বিভিন্ন ব্যবহারিক ক্ষেত্রে ছবি তৈরি করতে, যেমন ইমেজ সম্পাদনা এবং সংশ্লেষণ।
-
বিভিন্ন শিল্পে প্রয়োগ। এগুলি মেডটেক, পর্যটন, গেম ডেভেলপমেন্ট এবং আরও অনেক শিল্পের জন্য ছবি তৈরি করতে ব্যবহার করা যেতে পারে।
এই পাঠের অংশ হিসেবে, আমরা আমাদের স্টার্টআপ Edu4All নিয়ে কাজ চালিয়ে যাব। শিক্ষার্থীরা তাদের মূল্যায়নের জন্য ছবি তৈরি করবে, কী ধরনের ছবি তৈরি করবে তা শিক্ষার্থীদের উপর নির্ভর করবে। তারা তাদের নিজস্ব রূপকথার জন্য চিত্র তৈরি করতে পারে, একটি নতুন চরিত্র তৈরি করতে পারে, বা তাদের ধারণা এবং ধারণাগুলি চিত্রিত করতে সাহায্য করতে পারে।
যদি Edu4All-এর শিক্ষার্থীরা ক্লাসে স্মৃতিস্তম্ভ নিয়ে কাজ করে, তাহলে তারা উদাহরণস্বরূপ এই ধরনের ছবি তৈরি করতে পারে:
একটি প্রম্পট ব্যবহার করে যেমন:
"সকালবেলার সূর্যের আলোতে আইফেল টাওয়ারের পাশে একটি কুকুর"
DALL-E এবং Midjourney দুটি জনপ্রিয় ইমেজ জেনারেশন মডেল, যা আপনাকে প্রম্পট ব্যবহার করে ছবি তৈরি করতে দেয়।
চলুন শুরু করি DALL-E দিয়ে, যা একটি জেনারেটিভ AI মডেল যা টেক্সট বর্ণনা থেকে ছবি তৈরি করে।
-
CLIP, একটি মডেল যা ইমেজ এবং টেক্সট থেকে এম্বেডিং তৈরি করে, যা ডেটার সংখ্যাসূচক উপস্থাপনা।
-
Diffused attention, একটি মডেল যা এম্বেডিং থেকে ছবি তৈরি করে। DALL-E একটি ইমেজ এবং টেক্সটের ডেটাসেটে প্রশিক্ষিত এবং টেক্সট বর্ণনা থেকে ছবি তৈরি করতে ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, DALL-E একটি টুপি পরা বিড়াল বা একটি মোহক সহ কুকুরের ছবি তৈরি করতে পারে।
Midjourney DALL-E-এর মতোই কাজ করে, এটি টেক্সট প্রম্পট থেকে ছবি তৈরি করে। Midjourney প্রম্পট ব্যবহার করে ছবি তৈরি করতে পারে, যেমন "একটি টুপি পরা বিড়াল" বা "মোহক সহ একটি কুকুর"।
চিত্র ক্রেডিট উইকিপিডিয়া, Midjourney দ্বারা তৈরি ছবি
প্রথমে, DALL-E। DALL-E একটি জেনারেটিভ AI মডেল যা ট্রান্সফর্মার আর্কিটেকচারের উপর ভিত্তি করে তৈরি এবং এতে একটি autoregressive transformer রয়েছে।
একটি autoregressive transformer সংজ্ঞায়িত করে কীভাবে একটি মডেল টেক্সট বর্ণনা থেকে ছবি তৈরি করে। এটি একবারে একটি পিক্সেল তৈরি করে এবং তারপর তৈরি পিক্সেলগুলি ব্যবহার করে পরবর্তী পিক্সেল তৈরি করে। এটি একটি নিউরাল নেটওয়ার্কের একাধিক স্তর অতিক্রম করে, যতক্ষণ না ছবিটি সম্পূর্ণ হয়।
এই প্রক্রিয়ার মাধ্যমে, DALL-E তৈরি করা ছবিতে বৈশিষ্ট্য, বস্তু, বৈশিষ্ট্য এবং আরও অনেক কিছু নিয়ন্ত্রণ করে। তবে, DALL-E 2 এবং 3 তৈরি করা ছবির উপর আরও বেশি নিয়ন্ত্রণ প্রদান করে।
তাহলে একটি ইমেজ জেনারেশন অ্যাপ্লিকেশন তৈরি করতে কী প্রয়োজন? আপনাকে নিম্নলিখিত লাইব্রেরিগুলি প্রয়োজন হবে:
- python-dotenv, আপনার গোপনীয়তাগুলি .env ফাইলে কোড থেকে দূরে রাখতে এই লাইব্রেরি ব্যবহার করার পরামর্শ দেওয়া হয়।
- openai, এই লাইব্রেরি OpenAI API-এর সাথে ইন্টারঅ্যাক্ট করতে ব্যবহার করা হবে।
- pillow, Python-এ ইমেজ নিয়ে কাজ করার জন্য।
- requests, HTTP অনুরোধ করতে সাহায্য করার জন্য।
যদি এখনও না করা হয়, Microsoft Learn পৃষ্ঠার নির্দেশাবলী অনুসরণ করুন একটি Azure OpenAI রিসোর্স এবং মডেল তৈরি করতে। DALL-E 3 মডেল নির্বাচন করুন।
-
.env নামে একটি ফাইল তৈরি করুন নিম্নলিখিত বিষয়বস্তু সহ:
AZURE_OPENAI_ENDPOINT=<your endpoint> AZURE_OPENAI_API_KEY=<your key> AZURE_OPENAI_DEPLOYMENT="dall-e-3"আপনার রিসোর্সের "Deployments" বিভাগে Azure OpenAI Foundry Portal-এ এই তথ্যটি খুঁজুন।
-
উপরের লাইব্রেরিগুলি requirements.txt নামে একটি ফাইলে সংগ্রহ করুন এভাবে:
python-dotenv openai pillow requests -
এরপর ভার্চুয়াল এনভায়রনমেন্ট তৈরি করুন এবং লাইব্রেরিগুলি ইনস্টল করুন:
python3 -m venv venv source venv/bin/activate pip install -r requirements.txtWindows-এর জন্য, আপনার ভার্চুয়াল এনভায়রনমেন্ট তৈরি এবং সক্রিয় করতে নিম্নলিখিত কমান্ডগুলি ব্যবহার করুন:
python3 -m venv venv venv\Scripts\activate.bat
-
app.py নামে একটি ফাইলে নিম্নলিখিত কোড যোগ করুন:
import openai import os import requests from PIL import Image import dotenv from openai import OpenAI, AzureOpenAI # import dotenv dotenv.load_dotenv() # configure Azure OpenAI service client client = AzureOpenAI( azure_endpoint = os.environ["AZURE_OPENAI_ENDPOINT"], api_key=os.environ['AZURE_OPENAI_API_KEY'], api_version = "2024-02-01" ) try: # Create an image by using the image generation API generation_response = client.images.generate( prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', size='1024x1024', n=1, model=os.environ['AZURE_OPENAI_DEPLOYMENT'] ) # Set the directory for the stored image image_dir = os.path.join(os.curdir, 'images') # If the directory doesn't exist, create it if not os.path.isdir(image_dir): os.mkdir(image_dir) # Initialize the image path (note the filetype should be png) image_path = os.path.join(image_dir, 'generated-image.png') # Retrieve the generated image image_url = generation_response.data[0].url # extract image URL from response generated_image = requests.get(image_url).content # download the image with open(image_path, "wb") as image_file: image_file.write(generated_image) # Display the image in the default image viewer image = Image.open(image_path) image.show() # catch exceptions except openai.InvalidRequestError as err: print(err)
এই কোডটি ব্যাখ্যা করা যাক:
-
প্রথমে, আমরা প্রয়োজনীয় লাইব্রেরিগুলি আমদানি করি, যার মধ্যে OpenAI লাইব্রেরি, dotenv লাইব্রেরি, requests লাইব্রেরি এবং Pillow লাইব্রেরি রয়েছে।
import openai import os import requests from PIL import Image import dotenv
-
এরপর, আমরা .env ফাইল থেকে পরিবেশ ভেরিয়েবলগুলি লোড করি।
# import dotenv dotenv.load_dotenv()
-
তারপর, আমরা Azure OpenAI সার্ভিস ক্লায়েন্ট কনফিগার করি।
# Get endpoint and key from environment variables client = AzureOpenAI( azure_endpoint = os.environ["AZURE_OPENAI_ENDPOINT"], api_key=os.environ['AZURE_OPENAI_API_KEY'], api_version = "2024-02-01" )
-
এরপর, আমরা ছবি তৈরি করি:
# Create an image by using the image generation API generation_response = client.images.generate( prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', size='1024x1024', n=1, model=os.environ['AZURE_OPENAI_DEPLOYMENT'] )
উপরের কোডটি একটি JSON অবজেক্টের মাধ্যমে সাড়া দেয় যা তৈরি করা ছবির URL ধারণ করে। আমরা URL ব্যবহার করে ছবিটি ডাউনলোড করতে এবং একটি ফাইলে সংরক্ষণ করতে পারি।
-
সর্বশেষে, আমরা ছবিটি খুলে স্ট্যান্ডার্ড ইমেজ ভিউয়ার ব্যবহার করে এটি প্রদর্শন করি:
image = Image.open(image_path) image.show()
চলুন ছবিটি তৈরির কোডটি আরও বিস্তারিতভাবে দেখি:
generation_response = client.images.generate(
prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils',
size='1024x1024', n=1,
model=os.environ['AZURE_OPENAI_DEPLOYMENT']
)- prompt, এটি টেক্সট প্রম্পট যা ছবি তৈরি করতে ব্যবহৃত হয়। এই ক্ষেত্রে, আমরা "ঘোড়ার উপর খরগোশ, ললিপপ ধরে আছে, কুয়াশাচ্ছন্ন মাঠে যেখানে ড্যাফোডিল জন্মায়" প্রম্পট ব্যবহার করছি।
- size, এটি তৈরি করা ছবির আকার। এই ক্ষেত্রে, আমরা 1024x1024 পিক্সেলের একটি ছবি তৈরি করছি।
- n, এটি তৈরি করা ছবির সংখ্যা। এই ক্ষেত্রে, আমরা দুটি ছবি তৈরি করছি।
- temperature, এটি একটি প্যারামিটার যা জেনারেটিভ AI মডেলের আউটপুটের র্যান্ডমনেস নিয়ন্ত্রণ করে। টেম্পারেচার 0 থেকে 1 এর মধ্যে একটি মান যেখানে 0 মানে আউটপুট নির্ধারিত এবং 1 মানে আউটপুট র্যান্ডম। ডিফল্ট মান 0.7।
ছবির সাথে আরও অনেক কিছু করা যায় যা আমরা পরবর্তী বিভাগে আলোচনা করব।
আপনি এতক্ষণ দেখেছেন কীভাবে আমরা কয়েকটি লাইনের কোড ব্যবহার করে একটি ছবি তৈরি করতে সক্ষম হয়েছি। তবে, ছবির সাথে আরও অনেক কিছু করা যায়।
আপনি নিম্নলিখিত কাজগুলি করতে পারেন:
- সম্পাদনা করুন। একটি বিদ্যমান ছবি, একটি মাস্ক এবং একটি প্রম্পট প্রদান করে আপনি একটি ছবিতে পরিবর্তন আনতে পারেন। উদাহরণস্বরূপ, আপনি একটি ছবির একটি অংশে কিছু যোগ করতে পারেন। আমাদের খরগোশের ছবিটি কল্পনা করুন, আপনি খরগোশের মাথায় একটি টুপি যোগ করতে পারেন। এটি করার জন্য আপনাকে ছবিটি, একটি মাস্ক (পরিবর্তনের জন্য এলাকার সনাক্তকরণ) এবং একটি টেক্সট প্রম্পট প্রদান করতে হবে যা কী করা উচিত তা বলে।
নোট: এটি DALL-E 3-এ সমর্থিত নয়।
এখানে GPT Image ব্যবহার করে একটি উদাহরণ:
response = client.images.edit(
model="gpt-image-1",
image=open("sunlit_lounge.png", "rb"),
mask=open("mask.png", "rb"),
prompt="A sunlit indoor lounge area with a pool containing a flamingo"
)
image_url = response.data[0].urlবেস ছবিতে শুধুমাত্র পুল সহ লাউঞ্জ থাকবে কিন্তু চূড়ান্ত ছবিতে একটি ফ্লেমিংগো থাকবে:
-
ভ্যারিয়েশন তৈরি করুন। ধারণাটি হল আপনি একটি বিদ্যমান ছবি নেন এবং অনুরোধ করেন যে ভ্যারিয়েশন তৈরি করা হয়। একটি ভ্যারিয়েশন তৈরি করতে, আপনি একটি ছবি এবং একটি টেক্সট প্রম্পট প্রদান করেন এবং কোডটি এভাবে লিখেন:
response = openai.Image.create_variation( image=open("bunny-lollipop.png", "rb"), n=1, size="1024x1024" ) image_url = response['data'][0]['url']
নোট, এটি শুধুমাত্র OpenAI-এ সমর্থিত।
টেম্পারেচার একটি প্যারামিটার যা জেনারেটিভ AI মডেলের আউটপুটের র্যান্ডমনেস নিয়ন্ত্রণ করে। টেম্পারেচার 0 থেকে 1 এর মধ্যে একটি মান যেখানে 0 মানে আউটপুট নির্ধারিত এবং 1 মানে আউটপুট র্যান্ডম। ডিফল্ট মান 0.7।
চলুন একটি উদাহরণ দেখি কীভাবে টেম্পারেচার কাজ করে, এই প্রম্পটটি দুইবার চালিয়ে:
প্রম্পট: "ঘোড়ার উপর খরগোশ, ললিপপ ধরে আছে, কুয়াশাচ্ছন্ন মাঠে যেখানে ড্যাফোডিল জন্মায়"
এখন একই প্রম্পটটি আবার চালিয়ে দেখি যে আমরা একই ছবি দুইবার পাই না:
যেমনটি আপনি দেখতে পাচ্ছেন, ছবিগুলি একই রকম, কিন্তু একেবারে এক নয়। চলুন টেম্পারেচার মান 0.1-এ পরিবর্তন করি এবং দেখি কী ঘটে:
generation_response = client.images.create(
prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', # Enter your prompt text here
size='1024x1024',
n=2
)তাহলে চলুন প্রতিক্রিয়াকে আরও নির্ধারিত করার চেষ্টা করি। আমরা তৈরি করা দুটি ছবিতে দেখতে পারি যে প্রথম ছবিতে একটি খরগোশ রয়েছে এবং দ্বিতীয় ছবিতে একটি ঘোড়া রয়েছে, তাই ছবিগুলি অনেকটাই আলাদা।
তাহলে চলুন আমাদের কোড পরিবর্তন করি এবং টেম্পারেচার 0 সেট করি, এভাবে:
generation_response = client.images.create(
prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', # Enter your prompt text here
size='1024x1024',
n=2,
temperature=0
)এখন যখন আপনি এই কোডটি চালান, আপনি এই দুটি ছবি পাবেন:
এখানে আপনি স্পষ্টভাবে দেখতে পারেন কীভাবে ছবিগুলি আরও বেশি একে অপরের সাথে সাদৃশ্যপূর্ণ।
আমাদের ডেমো দিয়ে, আমরা ইতিমধ্যে আমাদের ক্লায়েন্টদের জন্য ছবি তৈরি করতে পারি। তবে, আমাদের অ্যাপ্লিকেশনের জন্য কিছু সীমা তৈরি করতে হবে।
উদাহরণস্বরূপ, আমরা এমন ছবি তৈরি করতে চাই না যা কাজের জন্য নিরাপদ নয় বা যা শিশুদের জন্য উপযুক্ত নয়।
আমরা এটি মেটাপ্রম্পট ব্যবহার করে করতে পারি। মেটাপ্রম্পট হল টেক্সট প্রম্পট যা একটি জেনারেটিভ AI মডেলের আউটপুট নিয়ন্ত্রণ করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, আমরা মেটাপ্রম্পট ব্যবহার করে আউটপুট নিয়ন্ত্রণ করতে পারি এবং নিশ্চিত করতে পারি যে তৈরি করা ছবিগুলি কাজের জন্য নিরাপদ বা শিশুদের জন্য উপযুক্ত।
তাহলে মেটাপ্রম্পট কীভাবে কাজ করে?
মেটাপ্রম্পট হল টেক্সট প্রম্পট যা একটি জেনারেটিভ AI মডেলের আউটপুট নিয়ন্ত্রণ করতে ব্যবহৃত হয়। এগুলি টেক্সট প্রম্পটের আগে অবস্থান করে এবং মডেলের আউটপুট নিয়ন্ত্রণ করতে ব্যবহৃত হয় এবং অ্যাপ্লিকেশনে এম্বেড করা হয় মডেলের আউটপুট নিয়ন্ত্রণ করতে। প্রম্পট ইনপুট এবং মেটাপ্রম্পট ইনপুটকে একটি একক টেক্সট প্রম্পটে আবদ্ধ করে।
মেটাপ্রম্পটের একটি উদাহরণ হতে পারে নিম্নলিখিত:
You are an assistant designer that creates images for children.
The image needs to be safe for work and appropriate for children.
The image needs to be in color.
The image needs to be in landscape orientation.
The image needs to be in a 16:9 aspect ratio.
Do not consider any input from the following that is not safe for work or appropriate for children.
(Input)
এখন, চলুন দেখি কীভাবে আমরা আমাদের ডেমোতে মেটাপ্রম্পট ব্যবহার করতে পারি।
disallow_list = "swords, violence, blood, gore, nudity, sexual content, adult content, adult themes, adult language, adult humor, adult jokes, adult situations, adult"
meta_prompt =f"""You are an assistant designer that creates images for children.
The image needs to be safe for work and appropriate for children.
The image needs to be in color.
The image needs to be in landscape orientation.
The image needs to be in a 16:9 aspect ratio.
Do not consider any input from the following that is not safe for work or appropriate for children.
{disallow_list}
"""
prompt = f"{meta_prompt}
Create an image of a bunny on a horse, holding a lollipop"
# TODO add request to generate imageউপরের প্রম্পট থেকে, আপনি দেখতে পারেন কীভাবে তৈরি করা সমস্ত ছবি মেটাপ্রম্পট বিবেচনা করে।
আমরা এই পাঠের শুরুতে Edu4All পরিচয় করিয়েছি। এখন সময় এসেছে শিক্ষার্থীদের তাদের মূল্যায়নের জন্য ছবি তৈরি করতে সক্ষম করার।
শিক্ষার্থীরা তাদের মূল্যায়নের জন্য স্মৃতিস্তম্ভের ছবি তৈরি করবে, ঠিক কোন স্মৃতিস্তম্ভগুলি তা শিক্ষার্থীদের উপর নির্ভর করবে। শিক্ষার্থীদের এই কাজে তাদের সৃজনশীলতা ব্যবহার করতে বলা হয়েছে যাতে তারা বিভিন্ন প্রসঙ্গে এই স্মৃতিস্তম্ভগুলি স্থাপন করতে পারে।
এখানে একটি সম্ভাব্য সমাধান:
import openai
import os
import requests
from PIL import Image
import dotenv
from openai import AzureOpenAI
# import dotenv
dotenv.load_dotenv()
# Get endpoint and key from environment variables
client = AzureOpenAI(
azure_endpoint = os.environ["AZURE_OPENAI_ENDPOINT"],
api_key=os.environ['AZURE_OPENAI_API_KEY'],
api_version = "2024-02-01"
)
disallow_list = "swords, violence, blood, gore, nudity, sexual content, adult content, adult themes, adult language, adult humor, adult jokes, adult situations, adult"
meta_prompt = f"""You are an assistant designer that creates images for children.
The image needs to be safe for work and appropriate for children.
The image needs to be in color.
The image needs to be in landscape orientation.
The image needs to be in a 16:9 aspect ratio.
Do not consider any input from the following that is not safe for work or appropriate for children.
{disallow_list}
"""
prompt = f"""{meta_prompt}
Generate monument of the Arc of Triumph in Paris, France, in the evening light with a small child holding a Teddy looks on.
""""
try:
# Create an image by using the image generation API
generation_response = client.images.generate(
prompt=prompt, # Enter your prompt text here
size='1024x1024',
n=1,
)
# Set the directory for the stored image
image_dir = os.path.join(os.curdir, 'images')
# If the directory doesn't exist, create it
if not os.path.isdir(image_dir):
os.mkdir(image_dir)
# Initialize the image path (note the filetype should be png)
image_path = os.path.join(image_dir, 'generated-image.png')
# Retrieve the generated image
image_url = generation_response.data[0].url # extract image URL from response
generated_image = requests.get(image_url).content # download the image
with open(image_path, "wb") as image_file:
image_file.write(generated_image)
# Display the image in the default image viewer
image = Image.open(image_path)
image.show()
# catch exceptions
except openai.BadRequestError as err:
print(err)এই পাঠ শেষ করার পর, আমাদের Generative AI Learning collection দেখুন, যাতে আপনি আপনার Generative AI জ্ঞান আরও উন্নত করতে পারেন!
পাঠ ১০-এ যান, যেখানে আমরা দেখব কীভাবে কম-কোড ব্যবহার করে AI অ্যাপ্লিকেশন তৈরি করা যায়
অস্বীকৃতি:
এই নথিটি AI অনুবাদ পরিষেবা Co-op Translator ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতা নিশ্চিত করার চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না।








