इमेज जनरेट करने की गाइड

इमेज जनरेट करने से जुड़ा टास्क

MediaPipe Image Generator टास्क की मदद से, टेक्स्ट प्रॉम्प्ट के आधार पर इमेज जनरेट की जा सकती हैं. इस टास्क में, टेक्स्ट-टू-इमेज मॉडल का इस्तेमाल किया जाता है. इससे डिफ़्यूज़न तकनीकों का इस्तेमाल करके इमेज जनरेट की जाती हैं.

इस टास्क में, टेक्स्ट प्रॉम्प्ट को इनपुट के तौर पर स्वीकार किया जाता है. साथ ही, इसमें एक ऐसी इमेज भी शामिल की जा सकती है जो मॉडल को जनरेट करने के लिए रेफ़रंस के तौर पर इस्तेमाल करनी होती है. टेक्स्ट से इमेज जनरेट करने की सुविधा के बारे में ज़्यादा जानने के लिए, टेक्स्ट से इमेज जनरेट करने की सुविधा के लिए, डिवाइस पर मौजूद डिसफ़्यूज़न प्लगिन लेख पढ़ें.

इमेज जनरेटर, ट्रेनिंग या फिर से ट्रेनिंग के दौरान मॉडल को दिए गए खास कॉन्सेप्ट के आधार पर भी इमेज जनरेट कर सकता है. ज़्यादा जानकारी के लिए, LoRA की मदद से पसंद के मुताबिक बनाना लेख पढ़ें.

शुरू करें

अपने टारगेट प्लैटफ़ॉर्म के लिए, लागू करने से जुड़ी इन गाइड में से किसी एक का पालन करके, इस टास्क का इस्तेमाल शुरू करें. प्लैटफ़ॉर्म के हिसाब से बनी इन गाइड में, इस टास्क को लागू करने का बुनियादी तरीका बताया गया है. साथ ही, इनमें कोड के ऐसे उदाहरण दिए गए हैं जिनमें डिफ़ॉल्ट मॉडल और कॉन्फ़िगरेशन के सुझाए गए विकल्पों का इस्तेमाल किया गया है:

टास्क की जानकारी

इस सेक्शन में, इस टास्क की क्षमताओं, इनपुट, आउटपुट, और कॉन्फ़िगरेशन के विकल्पों के बारे में बताया गया है.

सुविधाएं

इमेज जनरेट करने की सुविधा का इस्तेमाल करके, ये काम किए जा सकते हैं:

  1. टेक्स्ट से इमेज जनरेट करने की सुविधा - टेक्स्ट प्रॉम्प्ट की मदद से इमेज जनरेट करें.
  2. कंडीशन इमेज की मदद से इमेज जनरेट करना - टेक्स्ट प्रॉम्प्ट और रेफ़रंस इमेज की मदद से इमेज जनरेट करें. इमेज जनरेटर, ControlNet की तरह ही, कंडीशन इमेज का इस्तेमाल करता है.
  3. LoRA वेट का इस्तेमाल करके इमेज जनरेट करना - अपनी पसंद के मुताबिक मॉडल वेट का इस्तेमाल करके, टेक्स्ट प्रॉम्प्ट की मदद से किसी व्यक्ति, चीज़, और स्टाइल की इमेज जनरेट करें.
टास्क के इनपुट टास्क के आउटपुट
इमेज जनरेटर में ये इनपुट इस्तेमाल किए जा सकते हैं:
  • टेक्स्ट प्रॉम्प्ट
  • बीज
  • जनरेटिव इटरेशन की संख्या
  • ज़रूरी नहीं: शर्त की इमेज
इमेज जनरेटर से ये नतीजे मिलते हैं:
  • इनपुट के आधार पर जनरेट की गई इमेज.
  • ज़रूरी नहीं: जनरेट की गई इमेज के स्नैपशॉट.

कॉन्फ़िगरेशन के विकल्प

इस टास्क के लिए, कॉन्फ़िगरेशन के ये विकल्प उपलब्ध हैं:

विकल्प का नाम ब्यौरा वैल्यू की सीमा
imageGeneratorModelDirectory यह इमेज जनरेट करने वाले मॉडल की डायरेक्ट्री है. इसमें मॉडल के वेट सेव किए जाते हैं. PATH
loraWeightsFilePath LoRA के वेट फ़ाइल का पाथ सेट करता है. यह पैरामीटर वैकल्पिक है और सिर्फ़ तब लागू होता है, जब मॉडल को LoRA के साथ पसंद के मुताबिक बनाया गया हो. PATH
errorListener यह गड़बड़ी सुनने वाले व्यक्ति को सेट करता है. N/A

यह टास्क, प्लगिन मॉडल के साथ भी काम करता है. इससे उपयोगकर्ता, टास्क के इनपुट में शर्त के हिसाब से इमेज शामिल कर सकते हैं. फ़ाउंडेशन मॉडल, इन इमेज को बेहतर बना सकता है और जनरेट करने के लिए इनका इस्तेमाल रेफ़रंस के तौर पर कर सकता है. ये इमेज, चेहरे के लैंडमार्क, किनारों की आउटलाइन, और गहराई का अनुमान हो सकती हैं. मॉडल, इमेज जनरेट करने के लिए, इनका इस्तेमाल अतिरिक्त कॉन्टेक्स्ट और जानकारी के तौर पर करता है.

फ़ाउंडेशन मॉडल में प्लगिन मॉडल जोड़ते समय, प्लगिन के विकल्प भी कॉन्फ़िगर करें. फ़ेस लैंडमार्क प्लगिन faceConditionOptions का इस्तेमाल करता है, कैन्यी एज प्लगिन edgeConditionOptions का इस्तेमाल करता है, और डेप्थ प्लगिन depthConditionOptions का इस्तेमाल करता है.

कैन्य एज के विकल्प

edgeConditionOptions में ये विकल्प कॉन्फ़िगर करें.

विकल्प का नाम ब्यौरा वैल्यू की सीमा डिफ़ॉल्ट मान
threshold1 हिस्टेरेसिस प्रक्रिया के लिए पहली थ्रेशोल्ड वैल्यू. Float 100
threshold2 हिस्टेरिसिस प्रक्रिया के लिए दूसरा थ्रेशोल्ड. Float 200
apertureSize सोबेल ऑपरेटर के लिए एपर्चर का साइज़. सामान्य तौर पर, यह संख्या 3 से 7 के बीच होती है. Integer 3
l2Gradient डिफ़ॉल्ट L1 नॉर्म के बजाय, इमेज ग्रेडिएंट मैग्नीट्यूड का हिसाब लगाने के लिए L2 नॉर्म का इस्तेमाल किया जाता है या नहीं. BOOLEAN False
EdgePluginModelBaseOptions BaseOptions ऑब्जेक्ट, जो प्लगिन मॉडल के लिए पाथ सेट करता है. BaseOptions ऑब्जेक्ट N/A

कॉन्फ़िगरेशन के ये विकल्प कैसे काम करते हैं, इस बारे में ज़्यादा जानने के लिए कैन्यी एज डिटेक्टर देखें.

चेहरे की पहचान करने वाले पॉइंट के विकल्प

faceConditionOptions में ये विकल्प कॉन्फ़िगर करें.

विकल्प का नाम ब्यौरा वैल्यू की सीमा डिफ़ॉल्ट मान
minFaceDetectionConfidence चेहरे का पता लगाने की प्रोसेस को सफल मानने के लिए, कम से कम कॉन्फ़िडेंस स्कोर. Float [0.0,1.0] 0.5
minFacePresenceConfidence चेहरे की मौजूदगी का कम से कम कॉन्फ़िडेंस स्कोर स्कोर, चेहरे के लैंडमार्क का पता लगाने की सुविधा में. Float [0.0,1.0] 0.5
faceModelBaseOptions BaseOptions ऑब्जेक्ट, जो उस मॉडल के लिए पाथ सेट करता है जो स्थिति की इमेज बनाता है. BaseOptions ऑब्जेक्ट N/A
FacePluginModelBaseOptions BaseOptions ऑब्जेक्ट, जो प्लगिन मॉडल के लिए पाथ सेट करता है. BaseOptions ऑब्जेक्ट N/A

कॉन्फ़िगरेशन के ये विकल्प कैसे काम करते हैं, इस बारे में ज़्यादा जानने के लिए चेहरे की पहचान करने से जुड़ा टास्क देखें.

डेप्थ के विकल्प

depthConditionOptions में ये विकल्प कॉन्फ़िगर करें.

विकल्प का नाम ब्यौरा वैल्यू की सीमा डिफ़ॉल्ट मान
depthModelBaseOptions BaseOptions ऑब्जेक्ट, जो उस मॉडल के लिए पाथ सेट करता है जो स्थिति की इमेज बनाता है. BaseOptions ऑब्जेक्ट N/A
depthPluginModelBaseOptions BaseOptions ऑब्जेक्ट, जो प्लगिन मॉडल के लिए पाथ सेट करता है. BaseOptions ऑब्जेक्ट N/A

मॉडल

इमेज जनरेटर को फ़ाउंडेशन मॉडल की ज़रूरत होती है. यह टेक्स्ट-टू-इमेज एआई मॉडल है. यह नई इमेज जनरेट करने के लिए, डिफ़्यूज़न तकनीकों का इस्तेमाल करता है. इस सेक्शन में दिए गए फ़ाउंडेशन मॉडल, हल्के मॉडल होते हैं. इन्हें महंगे स्मार्टफ़ोन पर चलाने के लिए ऑप्टिमाइज़ किया गया है.

प्लगिन मॉडल का इस्तेमाल करना ज़रूरी नहीं है. ये फ़ाउंडेशन मॉडल के साथ काम करते हैं. इनकी मदद से, उपयोगकर्ता टेक्स्ट प्रॉम्प्ट के साथ-साथ इमेज भी जोड़ सकते हैं. इससे उन्हें ज़्यादा सटीक इमेज जनरेट करने में मदद मिलती है. LoRA वेट का इस्तेमाल करके फ़ाउंडेशन मॉडल को पसंद के मुताबिक बनाने का विकल्प उपलब्ध है. इससे फ़ाउंडेशन मॉडल को किसी खास कॉन्सेप्ट के बारे में सिखाया जा सकता है. जैसे, कोई ऑब्जेक्ट, व्यक्ति या स्टाइल. साथ ही, जनरेट की गई इमेज में उन्हें शामिल किया जा सकता है.

फ़ाउंडेशन मॉडल

फ़ाउंडेशन मॉडल, टेक्स्ट से इमेज जनरेट करने वाले लेटेंट डिफ़्यूज़न मॉडल होते हैं. ये टेक्स्ट प्रॉम्प्ट से इमेज जनरेट करते हैं. इमेज जनरेटर के लिए, यह ज़रूरी है कि फ़ाउंडेशन मॉडल, stable-diffusion-v1-5/stable-diffusion-v1-5 EMA-only मॉडल के फ़ॉर्मैट से मेल खाता हो. यह फ़ॉर्मैट, इस मॉडल पर आधारित है:

इमेज जनरेट करने की सुविधा के साथ इन फ़ाउंडेशन मॉडल का भी इस्तेमाल किया जा सकता है:

फ़ाउंडेशन मॉडल डाउनलोड करने के बाद, image_generator_converter का इस्तेमाल करके मॉडल को इमेज जनरेटर के लिए, डिवाइस पर इस्तेमाल किए जा सकने वाले सही फ़ॉर्मैट में बदलें.

ज़रूरी डिपेंडेंसी इंस्टॉल करें:

$ pip install torch typing_extensions numpy Pillow requests pytorch_lightning absl-py

convert.py स्क्रिप्ट चलाएं:

$ python3 convert.py --ckpt_path <ckpt_path> --output_path <output_path>

प्लगिन मॉडल

इस सेक्शन में मौजूद प्लगिन मॉडल, Google ने बनाए हैं. इनका इस्तेमाल, फ़ाउंडेशन मॉडल के साथ किया जाना चाहिए. प्लगिन मॉडल की मदद से, इमेज जनरेटर में टेक्स्ट प्रॉम्प्ट के साथ-साथ इमेज को भी इनपुट के तौर पर इस्तेमाल किया जा सकता है. इससे, जनरेट की गई इमेज के स्ट्रक्चर को कंट्रोल किया जा सकता है. प्लगिन मॉडल, ControlNet की तरह ही सुविधाएं देते हैं. हालांकि, इनमें डिवाइस पर मौजूद डेटा का इस्तेमाल करके इमेज जनरेट करने के लिए, खास तौर पर नया आर्किटेक्चर इस्तेमाल किया जाता है.

प्लगिन मॉडल, बेस विकल्पों में बताए जाने चाहिए. इसके लिए, आपको मॉडल की अतिरिक्त फ़ाइलें डाउनलोड करनी पड़ सकती हैं. हर प्लगिन के लिए, कंडीशन इमेज की अलग-अलग ज़रूरतें होती हैं. इन्हें इमेज जनरेटर की मदद से जनरेट किया जा सकता है.

Canny Edge प्लगिन

जनरेट की गई दो इमेज के आउटपुट का उदाहरण. इनमें, ईंटों की मज़बूत आउटलाइन वाली इमेज और प्रॉम्प्ट का इस्तेमाल किया गया है

Canny Edge प्लगिन, ऐसी इमेज स्वीकार करता है जिसमें जनरेट की गई इमेज के किनारों को हाइलाइट किया गया हो. फ़ाउंडेशन मॉडल, कंडीशन इमेज में मौजूद किनारों का इस्तेमाल करता है. साथ ही, टेक्स्ट प्रॉम्प्ट के आधार पर नई इमेज जनरेट करता है. इमेज जनरेटर में, शर्तों के हिसाब से इमेज बनाने की सुविधाएं पहले से मौजूद होती हैं. इसके लिए, सिर्फ़ प्लगिन मॉडल डाउनलोड करना होता है.

Canny Edge प्लगिन डाउनलोड करें

Canny Edge प्लगिन में कॉन्फ़िगरेशन के ये विकल्प होते हैं:

विकल्प का नाम ब्यौरा वैल्यू की सीमा डिफ़ॉल्ट मान
threshold1 हिस्टेरेसिस प्रक्रिया के लिए पहली थ्रेशोल्ड वैल्यू. Float 100
threshold2 हिस्टेरिसिस प्रक्रिया के लिए दूसरा थ्रेशोल्ड. Float 200
apertureSize सोबेल ऑपरेटर के लिए एपर्चर का साइज़. सामान्य तौर पर, यह संख्या 3 से 7 के बीच होती है. Integer 3
l2Gradient डिफ़ॉल्ट L1 नॉर्म के बजाय, इमेज ग्रेडिएंट मैग्नीट्यूड का हिसाब लगाने के लिए L2 नॉर्म का इस्तेमाल किया जाता है या नहीं. BOOLEAN False
EdgePluginModelBaseOptions BaseOptions ऑब्जेक्ट, जो प्लगिन मॉडल के लिए पाथ सेट करता है. BaseOptions ऑब्जेक्ट N/A

कॉन्फ़िगरेशन के ये विकल्प कैसे काम करते हैं, इस बारे में ज़्यादा जानने के लिए कैन्यी एज डिटेक्टर देखें.

Face Landmark प्लगिन

स्केच किए गए चेहरे की इमेज और दो अलग-अलग प्रॉम्प्ट का इस्तेमाल करके जनरेट की गई दो इमेज का उदाहरण. इससे पता चलता है कि एक ही इमेज का इस्तेमाल करके, अलग-अलग तरह की इमेज जनरेट की जा सकती हैं

Face Landmark प्लगिन, MediaPipe Face Landmarker से मिले आउटपुट को, कंडीशन इमेज के तौर पर स्वीकार करता है. Face Landmarker, किसी एक चेहरे का फ़ेस मेश उपलब्ध कराता है. इससे चेहरे की बनावट और उसके हिस्सों की जगह की जानकारी मिलती है. फ़ाउंडेशन मॉडल, इमेज में मौजूद चेहरे की मैपिंग का इस्तेमाल करता है. इसके बाद, वह मेश पर एक नया चेहरा जनरेट करता है.

चेहरे की पहचान करने वाला प्लगिन डाउनलोड करें

कंडीशन इमेज बनाने के लिए, Face landmark प्लगिन को Face Landmarker मॉडल बंडल की भी ज़रूरत होती है. यह मॉडल बंडल, चेहरे की पहचान करने वाले लैंडमार्कर टास्क में इस्तेमाल किए जाने वाले बंडल जैसा ही है.

चेहरे की पहचान करने वाले मॉडल बंडल को डाउनलोड करें

फेस लैंडमार्क प्लगिन में कॉन्फ़िगरेशन के ये विकल्प शामिल होते हैं:

विकल्प का नाम ब्यौरा वैल्यू की सीमा डिफ़ॉल्ट मान
minFaceDetectionConfidence चेहरे का पता लगाने की प्रोसेस को सफल मानने के लिए, कम से कम कॉन्फ़िडेंस स्कोर. Float [0.0,1.0] 0.5
minFacePresenceConfidence चेहरे की मौजूदगी का कम से कम कॉन्फ़िडेंस स्कोर स्कोर, चेहरे के लैंडमार्क का पता लगाने की सुविधा में. Float [0.0,1.0] 0.5
faceModelBaseOptions BaseOptions ऑब्जेक्ट, जो उस मॉडल के लिए पाथ सेट करता है जो स्थिति की इमेज बनाता है. BaseOptions ऑब्जेक्ट N/A
FacePluginModelBaseOptions BaseOptions ऑब्जेक्ट, जो प्लगिन मॉडल के लिए पाथ सेट करता है. BaseOptions ऑब्जेक्ट N/A

कॉन्फ़िगरेशन के ये विकल्प कैसे काम करते हैं, इस बारे में ज़्यादा जानने के लिए चेहरे की पहचान करने से जुड़ा टास्क देखें.

डेप्थ प्लगिन

जनरेट की गई दो इमेज का उदाहरण. इनमें दी गई इमेज का इस्तेमाल किया गया है. इस इमेज में कार का सामान्य आकार दिखाया गया है. इससे पता चलता है कि Depth प्लगिन, ऐसी इमेज बना सकता है जो फ़्लैट इमेज में डेप्थ जोड़ती हैं

डेप्थ प्लगिन, ऐसी इमेज स्वीकार करता है जिसमें किसी ऑब्जेक्ट की मोनोकुलर डेप्थ के बारे में बताया गया हो. फ़ाउंडेशन मॉडल, कंडीशन इमेज का इस्तेमाल करके जनरेट किए जाने वाले ऑब्जेक्ट के साइज़ और डेप्थ का अनुमान लगाता है. इसके बाद, टेक्स्ट प्रॉम्प्ट के आधार पर नई इमेज जनरेट करता है.

Depth प्लगिन डाउनलोड करें

डेप्थ प्लगिन को भी डेप्थ का अनुमान लगाने वाले मॉडल की ज़रूरत होती है, ताकि वह कंडीशन इमेज बना सके.

डेप्थ का अनुमान लगाने वाला मॉडल डाउनलोड करें

डेप्थ प्लगिन में कॉन्फ़िगरेशन के ये विकल्प शामिल होते हैं:

विकल्प का नाम ब्यौरा वैल्यू की सीमा डिफ़ॉल्ट मान
depthModelBaseOptions BaseOptions ऑब्जेक्ट, जो उस मॉडल के लिए पाथ सेट करता है जो स्थिति की इमेज बनाता है. BaseOptions ऑब्जेक्ट N/A
depthPluginModelBaseOptions BaseOptions ऑब्जेक्ट, जो प्लगिन मॉडल के लिए पाथ सेट करता है. BaseOptions ऑब्जेक्ट N/A

LoRA की मदद से पसंद के मुताबिक बनाना

LoRA की मदद से मॉडल को पसंद के मुताबिक बनाने पर, इमेज जनरेटर को खास कॉन्सेप्ट के आधार पर इमेज जनरेट करने की सुविधा मिलती है. इन कॉन्सेप्ट की पहचान, ट्रेनिंग के दौरान यूनीक टोकन से की जाती है. ट्रेनिंग के बाद, नए LoRA वेट की मदद से मॉडल, नए कॉन्सेप्ट की इमेज जनरेट कर पाता है. इसके लिए, टेक्स्ट प्रॉम्प्ट में टोकन तय करना होता है.

LoRA वेट बनाने के लिए, किसी खास ऑब्जेक्ट, व्यक्ति या स्टाइल की इमेज पर फ़ाउंडेशन मॉडल को ट्रेन करना ज़रूरी होता है. इससे मॉडल को नए कॉन्सेप्ट को पहचानने और इमेज जनरेट करते समय उसे लागू करने में मदद मिलती है. अगर आपको कुछ खास लोगों और चेहरों की इमेज जनरेट करने के लिए LoRa वेट बनाने हैं, तो इस समाधान का इस्तेमाल सिर्फ़ अपने चेहरे या उन लोगों के चेहरों पर करें जिन्होंने आपको ऐसा करने की अनुमति दी है.

यहाँ DreamBooth डेटासेट से टीपॉट की इमेज पर ट्रेन किए गए, पसंद के मुताबिक बनाए गए मॉडल का आउटपुट दिया गया है. इसमें "monadikos teapot" टोकन का इस्तेमाल किया गया है:

जनरेट की गई फ़ोटो में, एक चायदानी को टेबल पर रखा गया है. टेबल के बगल में, दीवार पर एक शीशा लगा है

प्रॉम्प्ट: एक मोनोडिकोस टीपॉट, जो एक मिरर के बगल में रखा गया है

कस्टम मॉडल को प्रॉम्प्ट में टोकन मिला. इसके बाद, उसने एक टीपॉट को इमेज में शामिल किया. इस टीपॉट को इमेज में शामिल करने के बारे में उसने LoRA के वेट से सीखा था. साथ ही, उसने टीपॉट को इमेज में एक शीशे के बगल में रखा, जैसा कि प्रॉम्प्ट में अनुरोध किया गया था.

Vertex AI के साथ LoRA

ज़्यादा जानकारी के लिए, कस्टमाइज़ेशन गाइड देखें. इसमें Vertex AI पर Model Garden का इस्तेमाल करके, फ़ाउंडेशन मॉडल में LoRA वेट लागू करके मॉडल को कस्टमाइज़ करने का तरीका बताया गया है.