LLMs केवल टेक्स्ट जनरेशन तक ही सीमित नहीं हैं। टेक्स्ट विवरणों से इमेज बनाना भी संभव है। इमेज को एक माध्यम के रूप में उपयोग करना कई क्षेत्रों में अत्यधिक उपयोगी हो सकता है, जैसे मेडटेक, आर्किटेक्चर, टूरिज्म, गेम डेवलपमेंट और अन्य। इस अध्याय में, हम दो सबसे लोकप्रिय इमेज जनरेशन मॉडल, DALL-E और Midjourney, के बारे में जानेंगे।
इस पाठ में, हम निम्नलिखित विषयों को कवर करेंगे:
- इमेज जनरेशन और इसका महत्व।
- DALL-E और Midjourney, ये क्या हैं और कैसे काम करते हैं।
- इमेज जनरेशन ऐप कैसे बनाएं।
इस पाठ को पूरा करने के बाद, आप:
- एक इमेज जनरेशन एप्लिकेशन बना सकेंगे।
- अपने एप्लिकेशन के लिए मेटा प्रॉम्प्ट्स के साथ सीमाएं परिभाषित कर सकेंगे।
- DALL-E और Midjourney के साथ काम कर सकेंगे।
इमेज जनरेशन एप्लिकेशन जनरेटिव AI की क्षमताओं का पता लगाने का एक शानदार तरीका है। इन्हें निम्नलिखित उद्देश्यों के लिए उपयोग किया जा सकता है:
-
इमेज एडिटिंग और सिंथेसिस। आप विभिन्न उपयोग मामलों के लिए इमेज जनरेट कर सकते हैं, जैसे इमेज एडिटिंग और इमेज सिंथेसिस।
-
विभिन्न उद्योगों में लागू। इन्हें मेडटेक, टूरिज्म, गेम डेवलपमेंट और अन्य जैसे विभिन्न उद्योगों के लिए इमेज जनरेट करने के लिए भी उपयोग किया जा सकता है।
इस पाठ के हिस्से के रूप में, हम अपने स्टार्टअप, Edu4All, के साथ काम करना जारी रखेंगे। छात्र अपनी असाइनमेंट्स के लिए इमेज बनाएंगे। ये इमेज क्या होंगी, यह छात्रों पर निर्भर है, लेकिन वे अपनी खुद की परीकथा के लिए चित्र बना सकते हैं, अपनी कहानी के लिए एक नया पात्र बना सकते हैं, या अपने विचारों और अवधारणाओं को विज़ुअलाइज़ करने में मदद कर सकते हैं।
उदाहरण के लिए, यदि Edu4All के छात्र कक्षा में स्मारकों पर काम कर रहे हैं, तो वे निम्नलिखित इमेज जनरेट कर सकते हैं:
एक प्रॉम्प्ट का उपयोग करते हुए, जैसे:
"सुबह की धूप में एफिल टॉवर के पास कुत्ता"
DALL-E और Midjourney दो सबसे लोकप्रिय इमेज जनरेशन मॉडल हैं, जो आपको प्रॉम्प्ट्स का उपयोग करके इमेज जनरेट करने की अनुमति देते हैं।
चलो DALL-E से शुरू करते हैं, जो एक जनरेटिव AI मॉडल है जो टेक्स्ट विवरणों से इमेज जनरेट करता है।
-
CLIP, एक मॉडल है जो इमेज और टेक्स्ट से एम्बेडिंग्स (डेटा के संख्यात्मक प्रतिनिधित्व) जनरेट करता है।
-
डिफ्यूज्ड अटेंशन, एक मॉडल है जो एम्बेडिंग्स से इमेज जनरेट करता है। DALL-E को इमेज और टेक्स्ट के डेटासेट पर प्रशिक्षित किया गया है और इसे टेक्स्ट विवरणों से इमेज जनरेट करने के लिए उपयोग किया जा सकता है। उदाहरण के लिए, DALL-E का उपयोग टोपी में बिल्ली या मोहॉक वाले कुत्ते की इमेज जनरेट करने के लिए किया जा सकता है।
Midjourney DALL-E के समान तरीके से काम करता है; यह टेक्स्ट प्रॉम्प्ट्स से इमेज जनरेट करता है। Midjourney का उपयोग "टोपी में बिल्ली" या "मोहॉक वाले कुत्ते" जैसे प्रॉम्प्ट्स का उपयोग करके इमेज जनरेट करने के लिए किया जा सकता है।
इमेज क्रेडिट: विकिपीडिया, Midjourney द्वारा जनरेट की गई इमेज
पहले, DALL-E। DALL-E एक जनरेटिव AI मॉडल है जो ट्रांसफॉर्मर आर्किटेक्चर पर आधारित है और इसमें ऑटोरेग्रेसिव ट्रांसफॉर्मर है।
ऑटोरेग्रेसिव ट्रांसफॉर्मर परिभाषित करता है कि मॉडल टेक्स्ट विवरणों से इमेज कैसे जनरेट करता है। यह एक समय में एक पिक्सल जनरेट करता है और फिर जनरेट किए गए पिक्सल्स का उपयोग अगले पिक्सल को जनरेट करने के लिए करता है। यह प्रक्रिया तब तक चलती है जब तक इमेज पूरी नहीं हो जाती।
इस प्रक्रिया के साथ, 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"Azure OpenAI Foundry Portal में अपने संसाधन के "Deployments" सेक्शन में यह जानकारी ढूंढें।
-
ऊपर दी गई लाइब्रेरीज़ को 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 है।
इमेज के साथ और भी चीजें की जा सकती हैं, जिन्हें हम अगले सेक्शन में कवर करेंगे।
अब तक आपने देखा कि हम Python में कुछ लाइनों का उपयोग करके इमेज जनरेट कर सकते हैं। हालांकि, इमेज के साथ और भी चीजें की जा सकती हैं।
आप निम्नलिखित भी कर सकते हैं:
- एडिट्स करें। एक मौजूदा इमेज, मास्क और प्रॉम्प्ट प्रदान करके, आप इमेज को बदल सकते हैं। उदाहरण के लिए, आप इमेज के एक हिस्से में कुछ जोड़ सकते हैं। कल्पना करें कि हमारे खरगोश की इमेज में, आप खरगोश को टोपी पहना सकते हैं। ऐसा करने के लिए, आपको इमेज, मास्क (बदलाव के लिए क्षेत्र की पहचान) और टेक्स्ट प्रॉम्प्ट प्रदान करना होगा।
नोट: यह DALL-E 3 में समर्थित नहीं है।
यहां GPT इमेज का उपयोग करते हुए एक उदाहरण है:
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 संग्रह को देखें ताकि आप अपनी Generative AI की जानकारी को और बढ़ा सकें!
पाठ 10 पर जाएं, जहां हम देखेंगे कि कम-कोड के साथ AI एप्लिकेशन कैसे बनाएं
अस्वीकरण:
यह दस्तावेज़ AI अनुवाद सेवा Co-op Translator का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं।








