मुख्य सामग्री पर जाएँ

Imagen 3: Gemini API में उदाहरणों के साथ एक मार्गदर्शिका

Python के साथ Google की Imagen 3 API का उपयोग करके छवियाँ बनाना सीखें—पर्यावरण सेटअप और aspect ratio व safety filters जैसे विकल्पों को समायोजित करना शामिल है।
· 12 मि॰ पढ़ें

AI के साथ खोजें

Imagen 3 एक टेक्स्ट-टू-इमेज जनरेशन मॉडल है, जो विभिन्न शैलियों में विस्तृत दृश्यों को सटीक रूप से प्रस्तुत कर सकता है और छवियों के भीतर टेक्स्ट भी समाहित कर सकता है, जिससे यह विज्ञापन और मीडिया सामग्री निर्माण जैसे अनुप्रयोगों के लिए उपयुक्त बनता है। 

हम Imagen 3 का उपयोग Vertex AI Studio इंटरफेस के माध्यम से कर सकते हैं या API के जरिए सीधे अपने अनुप्रयोगों में एकीकृत कर सकते हैं।

इस ट्यूटोरियल में, मैं समझाऊँगा कि Python के साथ Google Generating API का उपयोग करके Imagen 3 से छवियाँ कैसे जनरेट करें। मैं आपको व्यावहारिक उदाहरणों के माध्यम से ले चलूँगा जो दिखाते हैं कि वातावरण कैसे सेट करें, आवश्यक कोड कैसे लिखें, और इस तकनीक को अपने प्रोजेक्ट्स में कैसे एकीकृत करें। चाहे आप अपनी एप्लिकेशनों को डायनेमिक इमेजरी से सशक्त बनाना चाहते हों या बस जिज्ञासा शांत करना चाहते हों, यह गाइड Imagen 3 को प्रोग्रामेटिक रूप से समझने और उपयोग करने का सीधा मार्ग प्रदान करेगा।

Google Generative AI API सेटअप करना

Python में Imagen 3 के साथ शुरुआत करने के लिए हमें कुछ आवश्यक चरण करने होंगे। सबसे पहले, हम एक Google Cloud प्रोजेक्ट बनाएँगे। प्रोजेक्ट तैयार होने के बाद, हमें एक API कुंजी जनरेट करनी होगी। यह कुंजी हमारे Python कोड को Imagen 3 सेवा के साथ इंटरैक्ट करने देगी।

Google Cloud प्रोजेक्ट बनाना

Google की AI API का उपयोग करने के लिए Google Cloud प्रोजेक्ट बनाना पहला कदम है। आइए इस प्रक्रिया से साथ-साथ गुजरते हैं:

  1. Google Cloud कंसोल पर जाएँ: हम Google Cloud Console पर नेविगेट करते हैं। आपको अपने Google खाते से साइन इन करना होगा।
  2. प्रोजेक्ट चुनें या नया बनाएँ: कंसोल में, शीर्ष नेविगेशन बार पर प्रोजेक्ट ड्रॉपडाउन मेनू देखें। इस पर क्लिक करने से मौजूदा प्रोजेक्ट चुनने या नया बनाने के विकल्प दिखेंगे। हम जारी रखने के लिए "New Project" चुनते हैं।
  3. प्रोजेक्ट विवरण दें: एक सरल फॉर्म दिखाई देगा जो बुनियादी जानकारी माँगेगा। हम प्रोजेक्ट के लिए कोई भी नाम चुन सकते हैं, लेकिन कुछ वर्णनात्मक रखना उपयोगी रहता है। आवश्यकता होने पर बाद में बदला जा सकता है। हम Imagen-tutorial का उपयोग करेंगे। Organization खाली छोड़ी जा सकती है।

imagen 3 के लिए Google Cloud प्रोजेक्ट सेटअप करना

API कुंजी बनाना

अब जब Google Cloud प्रोजेक्ट बन गया है, तो हम Google AI Studio में API key पेज पर जाकर API कुंजी बना सकते हैं।

कुंजी बनाने के लिए, "Create API key" बटन पर क्लिक करें:

Google Cloud कंसोल में API कुंजी बनाना

पॉपअप में, ऊपर बनाए गए प्रोजेक्ट का नाम टाइप करें, उसे चुनें, और "Create API key in existing project" पर क्लिक करें:

किसी विशिष्ट प्रोजेक्ट के लिए Google Cloud में API कुंजी बनाना

कुंजी कॉपी करें और उसी फोल्डर में .env नाम की एक फ़ाइल बनाएँ जहाँ हम Python स्क्रिप्ट लिखेंगे। .env फ़ाइल की सामग्री इस प्रकार होनी चाहिए:

GEMINI_API_KEY=<paste_your_key_here>

बिलिंग अकाउंट

अगर हम अभी API कुंजी का उपयोग करने का प्रयास करें, तो एक त्रुटि मिलेगी: "Imagen API is only accessible to billed users at this time." ऐसा इसलिए होता है क्योंकि API निःशुल्क नहीं है, और इसे उपयोग करने से पहले हमें प्रोजेक्ट से एक बिलिंग अकाउंट जोड़ना होगा।

लेखन के समय, Imagen 3 से एक छवि जनरेट करने की कीमत $0.03 है। अधिक जानकारी के लिए उनका प्राइसिंग पेज देखें।

बिलिंग अकाउंट जोड़ने के लिए, Google AI Studio में API कुंजी के बगल में "Set up Billing" बटन पर क्लिक करें।

google cloud में बिलिंग अकाउंट सेट करना

यह हमें Google Cloud वेबसाइट पर रीडायरेक्ट करेगा, जहाँ हम "Link a billing account" पर क्लिक करके किसी मौजूदा बिलिंग अकाउंट का चयन कर सकते हैं या "Manage billing accounts" पर क्लिक करके नया बना सकते हैं।

Google Cloud प्रोजेक्ट्स में बिलिंग अकाउंट बनाना

मान लेते हैं कि हमारे पास कोई अकाउंट नहीं है, तो हम "Manage billing accounts" बनाते हैं। पेज के ऊपर बाएँ "Create account" बटन है। अकाउंट बनाने के लिए, हमें अपनी व्यक्तिगत जानकारी और भुगतान संसाधित करने हेतु एक क्रेडिट कार्ड भरना होगा।

Python के साथ Imagen 3 से छवि जनरेट करना

Anaconda के साथ वातावरण सेटअप

इस ट्यूटोरियल में, हम Anaconda का उपयोग करते हैं—एक लोकप्रिय प्लेटफ़ॉर्म जो पैकेज प्रबंधन और प्रोजेक्ट सेटअप को सरल बनाता है, जिससे Python स्क्रिप्ट चलाना आसान हो जाता है।

हम Anaconda को उनकी आधिकारिक वेबसाइट से इंस्टॉल कर सकते हैं।

Anaconda वातावरण सेट करने के लिए, टर्मिनल खोलें और:

  • एक वातावरण बनाएँ: conda create -n imagen python=3.9। यह कमांड imagen नाम का वातावरण बनाता है जो Python के 3.9 संस्करण का उपयोग करता है।
  • वातावरण सक्रिय करें: conda activate imagen।
  • Google generative AI पैकेज इंस्टॉल करें: pip install -q -U google-genai।
  • जनरेट की गई छवियों को प्रोसेस करने के लिए एक इमेज प्रोसेसिंग पैकेज इंस्टॉल करें: pip install pillow।
  • API कुंजी लोड करने के लिए एक पैकेज इंस्टॉल करें: pip install python-dotenv

हम बिना Anaconda के भी पैकेज सीधे इंस्टॉल कर सकते हैं, लेकिन जोखिम है कि कुछ मौजूदा पैकेज नए पैकेजों से टकरा सकते हैं या हमारी Python इंस्टॉलेशन अलग संस्करण का उपयोग कर रही हो। Anaconda इन संभावित समस्याओं से बचाता है।

पहली छवि जनरेट करना

अब हम Imagen 3 का उपयोग शुरू करने के लिए तैयार हैं। उसी फोल्डर में, जहाँ .env. फ़ाइल है, एक नया Python स्क्रिप्ट बनाएँ, उदाहरण के लिए gen_image.py।

सबसे पहले, आवश्यक पैकेज इम्पोर्ट करें:

# Google generative AI:
from google import genai
from google.genai import types

# Packages to process the generated image:
from PIL import Image
from io import BytesIO

# Packages to load the .env file:
import os
from dotenv import load_dotenv

अगला, हम .env फ़ाइल से API कुंजी लोड करते हैं:

load_dotenv()
api_key = os.getenv("GEMINI_API_KEY")

फिर, हम Google generative AI क्लाइंट को इनिशियलाइज़ करते हैं। यही ऑब्जेक्ट हमें Google API से संचार करने देता है:

client = genai.Client(api_key=api_key)

छवि जनरेट करने के लिए, हम client.models.generate_images() फ़ंक्शन का उपयोग करते हैं:

prompt="""
A dog surfing at the beach
"""
response = client.models.generate_images(
    model="imagen-3.0-generate-002",
    prompt=prompt,
    config=types.GenerateImagesConfig(
        number_of_images=1,
    )
)

अंत में, हम Image ऑब्जेक्ट का उपयोग करके जनरेट की गई छवि प्रदर्शित करते हैं:

for generated_image in response.generated_images:
  image = Image.open(BytesIO(generated_image.image.image_bytes))
  image.show()

यह रहा परिणाम:

Imagen 3 के साथ हमारी पहली छवि जनरेट करना

टेक्स्ट जनरेशन

अन्य टेक्स्ट-टू-इमेज मॉडलों की तुलना में Imagen 3 की एक रोचक विशेषता टेक्स्ट जनरेट करने की क्षमता है। आइए ताज़ी चाय की पत्तियों का उपयोग करके “Tea” शब्द जनरेट करवाकर इसे आज़माते हैं:

prompt="""
Word "tea" made from fresh tea leaves, white background
"""
response = client.models.generate_images(
    model="imagen-3.0-generate-002",
    prompt=prompt,
)

यह रहा परिणाम:

Imagen 3 के साथ टेक्स्ट जनरेट करना

Imagen 3 के साथ इमेज जनरेशन विकल्प

इमेज जनरेशन विकल्प types.GenerateImagesConfig विकल्पों के जरिए दिए जाते हैं। ऊपर के उदाहरण में, हमने केवल जनरेट होने वाली छवियों की संख्या बताई थी:

config=types.GenerateImagesConfig(
    number_of_images=1,
)

इस खंड में, हम अन्य विकल्पों का अन्वेषण करते हैं जो Imagen 3 API प्रदान करता है। अधिक जानकारी के लिए आधिकारिक दस्तावेज़ देखें।

कई छवियाँ जनरेट करना

हम number_of_images पैरामीटर का उपयोग करके एक ही प्रॉम्प्ट से कई छवियाँ जनरेट कर सकते हैं। डिफ़ॉल्ट रूप से, चार छवियाँ जनरेट होती हैं।

आइए एक कॉमिक बुक के लिए दो छवियाँ जनरेट करके देखें।

prompt="""
Single comic book panel of two people overlooking a destroyed city. 
A speech bubble points from one of them and says: I guess this is the end.
"""
response = client.models.generate_images(
    model="imagen-3.0-generate-002",
    prompt=prompt,
    config=types.GenerateImagesConfig(
        number_of_images=2,
    )
)

यह रहा परिणाम:

Imagen 3 के साथ कॉमिक बुक के लिए कई छवियाँ जनरेट करना

यह छवियों में टेक्स्ट जनरेट करने का एक और उदाहरण है। भले ही बाईं ओर की छवि में कुछ अतिरिक्त अवांछित टेक्स्ट है, लेकिन कई छवियाँ जनरेट करने की क्षमता के कारण हम इच्छित आउटपुट मिलने की संभावना बढ़ा सकते हैं। दाईं ओर की छवि हमारे प्रॉम्प्ट के साथ लगभग पूरी तरह मेल खाती है।

आस्पेक्ट रेशियो नियंत्रित करना

डिफ़ॉल्ट रूप से, जनरेट की गई छवियाँ 1:1 आस्पेक्ट रेशियो के साथ वर्गाकार होती हैं। मॉडल निम्नलिखित आस्पेक्ट रेशियो को सपोर्ट करता है: 1:1, 3:4, 4:3, 9:16, और 16:9।

आइए एक 9:16 छवि जनरेट करें जिसे फोन बैकग्राउंड के रूप में उपयोग किया जा सके:

prompt="""
A drone shot of a river flowing between mountains with a stormy sky.
"""
response = client.models.generate_images(
    model="imagen-3.0-generate-002",
    prompt=prompt,
    config=types.GenerateImagesConfig(
        aspect_ratio="9:16",
    )
)

यह रहा परिणाम:

Imagen 3 के साथ 9:16 आस्पेक्ट रेशियो वाली छवि जनरेट करना

सेफ्टी लेवल फ़िल्टर

दस्तावेज़ में बताया गया है कि हम safety_filter_level का उपयोग छवि फ़िल्टरिंग स्तर बताने के लिए कर सकते हैं। प्रत्येक जनरेट की गई छवि को एक प्रायिकता स्कोर मिलता है जो मापता है कि छवि के असुरक्षित होने की संभावना कितनी है (उदाहरण के लिए, अनुचित सामग्री)। 

सेफ्टी लेवल फ़िल्टर सेट करना महत्वपूर्ण है क्योंकि यह सुनिश्चित करने में मदद करता है कि जनरेट की गई सामग्री उपयुक्त हो और उपयोगकर्ता की प्राथमिकताओं के अनुरूप हो, जिससे विभिन्न अनुप्रयोगों के लिए सुरक्षित और सम्मानजनक वातावरण बना रहे।

दस्तावेज़ के अनुसार, यह तीन स्तरों का समर्थन करता है:

  • BLOCK_LOW_AND_ABOVE: कम प्रायिकता स्कोर होने पर भी ब्लॉक करें।
  • BLOCK_MEDIUM_AND_ABOVE : केवल मध्यम और उच्च प्रायिकता स्कोर वाली छवियों को ब्लॉक करें।
  • BLOCK_ONLY_HIGH : केवल उच्च प्रायिकता स्कोर वाली छवियों को ब्लॉक करें

हालाँकि, प्रयोग के बाद पाया कि अभी API केवल BLOCK_LOW_AND_ABOVE विकल्प का ही समर्थन करता है। कुछ और देने पर त्रुटि आती है।

व्यक्ति जनरेशन

हम person_generation विकल्प का उपयोग करके नियंत्रित कर सकते हैं कि मॉडल को लोगों को जनरेट करने की अनुमति है या नहीं। यह दो विकल्प देता है:

  • DONT_ALLOW: लोगों वाली छवियाँ ब्लॉक कर दी जाएँगी।
  • ALLOW_ADULT: लोगों (केवल वयस्क) वाली छवियाँ जनरेट करने की अनुमति देता है।

डिफ़ॉल्ट विकल्प लोगों की अनुमति देना है। उदाहरण के लिए, यदि हम विकल्प को लोगों की अनुमति न देने पर सेट करें और किसी के खाना पकाने की छवि जनरेट करने की कोशिश करें, तो हमें कोई छवि नहीं मिलेगी।

prompt="""
A person cooking.
"""
response = client.models.generate_images(
    model="imagen-3.0-generate-002",
    prompt=prompt,
    config=types.GenerateImagesConfig(
        person_generation="DONT_ALLOW",
    )
)
print(response.generated_images)

आउटपुट इस प्रकार है:

None

Imagen 3 के लिए अच्छा प्रॉम्प्ट बनाना

आधिकारिक दस्तावेज़ व्यापक प्रॉम्प्ट गाइड प्रदान करता है, इसलिए मैं उसे यहाँ नहीं दोहराऊँगा। अच्छा प्रॉम्प्ट बनाने के लिए मुख्य विचार यह हैं:

  • प्रॉम्प्ट लिखने की बुनियाद:
    • विषय: उस मुख्य ऑब्जेक्ट, व्यक्ति या दृश्य पर ध्यान दें जिसे आप चित्रित करना चाहते हैं।
    • संदर्भ और पृष्ठभूमि: वह सेटिंग या वातावरण बताइए जहाँ विषय स्थित है।
    • शैली: इच्छित कलात्मक या फोटोग्राफिक शैली बताइए (जैसे, स्केच, पेंटिंग, फोटोग्राफ)।
  • वर्णनात्मक भाषा का उपयोग करें: इच्छित आउटपुट स्पष्ट करने के लिए विस्तृत विशेषण और संदर्भ दें।
  • विशिष्ट शैलियों का संदर्भ दें: सौंदर्यशास्त्र मार्गदर्शित करने के लिए प्रसिद्ध कलाकारों या कला आंदोलनों का उपयोग करें।
  • छवियों में टेक्स्ट: टेक्स्ट को 25 अक्षरों या उससे कम तक सीमित रखें और अतिरिक्त जानकारी देने के लिए अलग-अलग वाक्यांशों का उपयोग करें।
  • प्रॉम्प्ट पैरामीटराइज़ेशन: यदि हमें एक ही शैली में कई छवियाँ जनरेट करनी हों, तो एक पुन: प्रयोज्य प्रॉम्प्ट टेम्पलेट बनाना और केवल बदलने वाला भाग इनपुट के रूप में देना अच्छा विचार है।
  • फोटोग्राफी: कैमरा सेटिंग्स, लेंस प्रकार और लाइटिंग बताइए ताकि परिणाम प्रभावित हो।
  • कला: "a painting of..." जैसे वर्णनकर्ता या "watercolor painting of..." जैसी विशिष्ट तकनीकें उपयोग करें।
  • इमेज क्वालिटी मॉडिफ़ायर्स: "high-quality" या "4K" जैसे कीवर्ड का उपयोग करके आउटपुट की गुणवत्ता बढ़ाएँ।
  • फोटोरियलिस्टिक छवियाँ: यथार्थवाद बढ़ाने के लिए लेंस प्रकार और फ़ोकल लंबाई जैसे तकनीकी विवरण शामिल करें।

इमेज एडिटिंग और कस्टमाइज़ेशन

Imagen 3 में छवियों को संपादित करने और कस्टमाइज़ेशन करने की क्षमता भी है। दुर्भाग्य से, ये सुविधाएँ अभी बंद हैं और केवल विशिष्ट उपयोगकर्ताओं के लिए सुलभ हैं।

उदाहरण के लिए, कस्टमाइज़ेशन सुविधा हमें किसी प्रॉम्प्ट से संदर्भ छवि को कस्टमाइज़ करने देती है। उदाहरण में, एक महिला की तस्वीर दी गई है, और प्रॉम्प्ट उस छवि को उसी व्यक्ति की संतरे पकड़े हुए छवि में बदल देता है।

imagen 3 में इमेज कस्टमाइज़ेशन का उदाहरण

इन सुविधाओं के बारे में अधिक जानकारी और एक्सेस अनुरोध फ़ॉर्म उनकी वेबसाइट पर मिल सकते हैं।

निष्कर्ष

इस ट्यूटोरियल में, हमने सीखा कि Python और Google की Generative API का उपयोग करके Imagen 3 से छवियाँ कैसे बनाई जाएँ। समग्र रूप से, API के साथ प्रयोग करते समय मुझे मिला आउटपुट संतोषजनक लगा। परिणाम उच्च गुणवत्ता के हैं और उनमें कम AI आर्टिफैक्ट्स हैं, जिससे उन्हें वास्तविक छवियों से अलग करना कठिन हो जाता है।

छवियों में टेक्स्ट के साथ काम करने की क्षमता ब्रांडिंग और मार्केटिंग के लिए उपयोगी है। कुल मिलाकर, मुझे लगता है कि यह मॉडल अच्छा प्रदर्शन करता है। काश इसकी सभी सुविधाएँ खुली होतीं, क्योंकि मेरा मानना है कि इमेज एडिटिंग इमेज जनरेशन से भी अधिक उपयोगी है।

François Aubry

लेखक

François Aubry

Full-stack इंजीनियर एवं संस्थापक, CheapGPT पर। पढ़ाना हमेशा से मेरा जुनून रहा है। विद्यार्थी जीवन से ही मैं उत्साहपूर्वक ट्यूशन देने और अन्य विद्यार्थियों की सहायता करने के अवसर तलाशता रहा हूँ। इसी जुनून ने मुझे पीएचडी करने के लिए प्रेरित किया, जहाँ मैंने अपने शैक्षणिक प्रयासों के साथ शिक्षण सहायक के रूप में भी काम किया। उन वर्षों में पारंपरिक कक्षा-परिवेश में काम करना, संबंध बनाना और सीखने को आसान बनाना मुझे अत्यंत संतोष देता था। लेकिन ऑनलाइन लर्निंग प्लेटफ़ॉर्म के आगमन के साथ, मैंने डिजिटल शिक्षा की रूपांतरकारी क्षमता को पहचाना। वास्तव में, हमारी ही विश्वविद्यालय में ऐसे एक प्लेटफ़ॉर्म के विकास में मैं सक्रिय रूप से शामिल था। मैं पारंपरिक शिक्षण सिद्धांतों को नवोन्मेषी डिजिटल पद्धतियों के साथ जोड़ने के लिए गहराई से प्रतिबद्ध हूँ। मेरा उद्देश्य ऐसे पाठ्यक्रम बनाना है जो न केवल रोचक और सूचनाप्रद हों, बल्कि इस डिजिटल युग के शिक्षार्थियों के लिए सुगम भी हों।

विषय