paint-brush
अपनी खुद की एआई बनाना अव्यक्त-प्रसार के साथ छवि जेनरेटरद्वारा@lanolinoil
3,835 रीडिंग
3,835 रीडिंग

अपनी खुद की एआई बनाना अव्यक्त-प्रसार के साथ छवि जेनरेटर

द्वारा Lanolinoil9m2022/08/16
Read on Terminal Reader
Read this story w/o Javascript

बहुत लंबा; पढ़ने के लिए

CUDA, डिस्क स्थान का एक गुच्छा, और स्मृति की एक पागल राशि के साथ छवि संकेतों के लिए अपना स्वयं का टेक्स्ट चलाएं। इसे अंत तक काम करने के लिए आपको CUDA सक्षम कार्ड के साथ एक Linux सिस्टम की आवश्यकता है। अव्यक्त प्रसार के साथ 2 छवि निर्माण तकनीकें संभव हैं। हम txt-2img और txt2-img दोनों मॉडल को स्थापित करेंगे और देखेंगे जिन्हें हम सेटअप करेंगे। आरएडी मॉडल छवियों के डेटाबेस का उपयोग करता है और इसे कॉन्फ़िगर करने योग्य संदर्भ में अस्वीकार और अपग्रेड करता है। ऐसा लगता है कि यह एक सामान्य उद्देश्य के रूप में कम अच्छा है लेकिन एक विशिष्ट प्रशिक्षण सेट के साथ इसका उपयोग किया जा सकता है।

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - अपनी खुद की एआई बनाना अव्यक्त-प्रसार के साथ छवि जेनरेटर
Lanolinoil HackerNoon profile picture

DALL-E होमब्रेव

इस पोस्ट में, हम आपका अपना AI इमेज जेनरेटर चलाने के साथ सेटअप करने पर विचार करेंगे। इसे अंत तक काम करने के लिए आपको CUDA सक्षम कार्ड के साथ एक Linux सिस्टम की आवश्यकता है। मुझे विंडोज़ में काम करने वाली मूल txt-2img स्क्रिप्ट मिली। दुर्भाग्य से, जुलाई में जारी किए गए पुनर्प्राप्ति-संवर्धित प्रसार मॉडल के लिए, आपको scann डेटासेट को अनुक्रमित करने के लिए स्कैन की आवश्यकता है, जो केवल लिनक्स पर उपलब्ध है। डब्ल्यूएसएल ने मेरे लिए ठीक काम किया।


कुत्ता शेर - rdm मॉडल

कुत्ता शेर - rdm मॉडल

कुत्ता शेर - rdm मॉडल

कुत्ता शेर - rdm मॉडल

यहाँ मोटे तौर पर वह है जो मैं इकट्ठा करता हूँ जिसकी आपको आवश्यकता होगी:

  • लिनक्स (WSL ठीक)
  • 11.3 CUDA ग्राफिक्स
  • = 32GB रैम

  • 50GB डिस्क स्थान (~ 30GB बिना ओपन इमेज के)
  • 3xxx श्रृंखला कार्ड (मैं यहाँ सिर्फ अनुमान लगा रहा हूँ। यह सब 3090 FE के साथ किया जा रहा है)

अव्यक्त-प्रसार

जब मैं एआई सबरेडिट्स ब्राउज़ कर रहा था, तब मैंने अव्यक्त-प्रसार रेपो पर बेतरतीब ढंग से ठोकर खाई। कुछ पोस्ट ने इसका उल्लेख किया और मुझे नहीं पता था कि यह क्या था इसलिए मैं गुगल गया।


मैं कोई कंप्यूटर वैज्ञानिक, गणितज्ञ, या ऐसी कोई भी चीज़ नहीं हूँ जो वास्तव में यह समझने के लिए आवश्यक हो कि यहाँ क्या हो रहा है। नए आरएडी मॉडल के बारे में पेपर समझ में आता है और दिलचस्प है, लेकिन मैंने अभी तक बहुत अधिक शोध नहीं किया है।

छवि-20220807154208076

टेक्स्ट-टू-इमेज बनाम राड

अव्यक्त प्रसार के साथ 2 छवि निर्माण तकनीकें संभव हैं। हम स्थापित करेंगे और दोनों पर एक नज़र डालेंगे।


मेरा मानना है कि txt2-img मॉडल जिसे हम पहले सेटअप करेंगे, वह वही है जो हम ऑनलाइन अन्य इमेज जनरेशन टूल्स के साथ उपयोग करते हैं - यह एक सुपर लो रेज इमेज क्लिप को एक अच्छा प्रॉम्प्ट मैच बनाता है और इसे डिनोइज़ और अपस्केल करता है।


आरएडी मॉडल संदर्भ के रूप में छवियों के एक विन्यास योग्य डेटाबेस का उपयोग करता है और प्रसार करता है जैसे हम अभ्यस्त हैं। ऐसा लगता है कि यह एक सामान्य प्रयोजन जनरेटर के रूप में कम अच्छा है, लेकिन एक विशिष्ट प्रशिक्षण सेट के साथ इस्तेमाल किया जा सकता है जिसे आप संभवतः बना सकते हैं। मैं भविष्य में यह कोशिश करूंगा।


RAD 768X768 इमेज भी जेनरेट करता है जो काफी प्रभावशाली है।

समुद्र तट पर विशाल खरबूजा

समुद्र तट पर विशाल खरबूजा


निर्देश स्थापित करें

टेक्स्ट-टू-इमेज

  • सुनिश्चित करें कि आपके पास CUDA 11.3 स्थापित है और conda आपके शेल में काम करता है। आप यहां कोंडा प्राप्त कर सकते हैं

  • (पुनः) अभी पाइटोरच स्थापित करें , ऐसा न हो कि आप बाद में निर्भरता नरक में समाप्त हो जाएं। मैंने इसे pip के माध्यम से किया लेकिन कोंडा भी काम कर सकता है।

  • रेपो को बहुत सारे खाली स्थान के साथ ड्राइव पर क्लोन करें

  • रेपो में cd और चलाएँ:

     conda env create -f environment.yaml conda activate ldm

    यह प्रारंभिक वातावरण स्थापित करेगा। यदि आपको बाद में Pytorch के साथ त्रुटियाँ मिलती हैं और इसे पुनः स्थापित करने की आवश्यकता है, तो Environment.yaml पर वापस आएं और सही पैकेज संस्करणों का उपयोग करके पुनः इंस्टॉल करें।

  • मॉडल डाउनलोड करें और आप तब तक जाने के लिए तैयार हैं जब तक कि आपकी मशाल निर्भरता सभी सेटअप सही हो।

 mkdir -p models/ldm/text2img-large/ wget -O models/ldm/text2img-large/model.ckpt https://ommer-lab.com/files/latent-diffusion/nitro/txt2img-f8-large/model.ckpt

अब आप छवियों का नमूना लेने में सक्षम होना चाहिए:

 python scripts/txt2img.py --prompt "my cool image"

उन विकल्पों को देखना सुनिश्चित करें जिन्हें आप README में सेट करने में सक्षम हैं।


शेल से सब कुछ चलाना आसान बनाने के लिए आप इस बैश स्क्रिप्ट का उपयोग कर सकते हैं। आप इसे अपनी ~/.bashrc फ़ाइल में शामिल कर सकते हैं और अपने शेल को फिर से खोल सकते हैं। अपनी आवश्यकताओं के अनुरूप 3 रास्तों को बदलना सुनिश्चित करें। हम PLMS को बाद में देखेंगे।


 function txt2img() { if [ $# -eq 0 ]; then echo "Usage: diffuse '[prompt]' [--plms]" exit 1 fi cd /mnt/c/diffusion/latent-diffusion; conda activate ldm; if [ $2 = '--plms' ]; then python scripts/txt2img.py --prompt $1 --outdir '/mnt/g/My Drive/AI Image Tests/text2img' --plms --n_iter 4 --ddim_eta 0.0 else python scripts/txt2img.py --prompt $1 --outdir '/mnt/g/My Drive/AI Image Tests/text2img' --n_iter 4 --ddim_eta 0.0 fi }


चित्र डिफ़ॉल्ट रूप से 512X512 हैं। आप इस ज्यूपिटर नोटबुक का उपयोग बहुत अच्छे परिणामों के साथ छवियों को बेहतर बनाने के लिए कर सकते हैं।

समस्या निवारण

  • यदि आपको कमांड चलाने में CUDA मेमोरी त्रुटियाँ मिलती हैं, तो बैच आकार को कम करने का प्रयास करें। स्मृति उपयोग के समस्या निवारण/देखने के लिए htop का उपयोग करें।
  • यदि WSL का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आपकी सभी RAM linux के लिए उपलब्ध है।
  • यदि आपको मशाल से संबंधित त्रुटियां मिलती हैं, तो आपको संभवतः पाइटोरच को फिर से स्थापित करना होगा। यह संभवतः संकुल के साथ अन्य समस्याओं का कारण होगा। pip की conda करें।

छवि-20220807155754576

छवि-20220807155807229


आरडीएम

आप यहां आरडीएम के बारे में अधिक पढ़ सकते हैं। जैसा कि पहले कहा गया है, यह अनिवार्य रूप से मौजूदा प्रसार प्रक्रिया के साथ क्लिप विवरण के साथ छवियों के डेटाबेस को जोड़ती है, जो मैं समझता हूं। इस हिस्से को चलने में काफी समय लगता है।


ध्यान दें, यह मॉडल, विशेष रूप से जब ओपनइमेज प्रशिक्षण का उपयोग करना वास्तविक चीजों को फिर से बनाने के लिए सबसे अच्छा है और यह बहुत अच्छा नहीं लगता है (अभी तक) और अजीब छवियां बनाना जो हम प्रसार मॉडल से उपयोग कर रहे हैं।


  • टेक्स्ट-टू-इमेज मॉडल पहले काम करें

  • नए पैकेज स्थापित करें और प्रशिक्षण मॉडल डाउनलोड करें।

     pip install transformers==4.19.2 scann kornia==0.6.4 torchmetrics==0.6.0 pip install git+https://github.com/arogozhnikov/einops.git mkdir -p models/rdm/rdm768x768/ wget -O models/rdm/rdm768x768/model.ckpt https://ommer-lab.com/files/rdm/model.ckpt
  • टेस्ट सब कुछ अब तक काम कर रहा है

     python scripts/knn2img.py --prompt "I'm a computer"
  • यदि सब कुछ ठीक रहा, तो आपको अपने शेल में एक सफलता पाठ देखना चाहिए। अब हमें सभी इमेज इंडेक्स/मॉडल डाउनलोड करने होंगे। ओपनइमेज ज़िप 11GB है। आर्टबेंच डेटा बहुत छोटा है।

     mkdir -p data/rdm/retrieval_databases wget -O data/rdm/retrieval_databases/artbench.zip https://ommer-lab.com/files/rdm/artbench_databases.zip wget -O data/rdm/retrieval_databases/openimages.zip https://ommer-lab.com/files/rdm/openimages_database.zip unzip data/rdm/retrieval_databases/artbench.zip -d data/rdm/retrieval_databases/ unzip data/rdm/retrieval_databases/openimages.zip -d data/rdm/retrieval_databases/ mkdir -p data/rdm/searchers wget -O data/rdm/searchers/artbench.zip https://ommer-lab.com/files/rdm/artbench_searchers.zip unzip data/rdm/searchers/artbench.zip -d data/rdm/searchers


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


यदि आप आर्टबेंच डेटाबेस का परीक्षण करना चाहते हैं, तो दौड़ें

 python scripts/knn2img.py --prompt "A blue pig" --use_neighbors --knn 20 

छवि-20220807155912575

छवि-2022087155927854


ओपनइमेज इंडेक्स

जब तक आपके पास एक सुपर कंप्यूटर न हो, पाइथन मल्टीप्रोसेसिंग (जो मैं बता सकता हूं) में भयानक मेमोरी प्रबंधन हमें उन 4 फाइलों का उपयोग करने से रोक देगा जिन्हें हमने रेपो से स्क्रिप्ट के साथ अनजिप किया था ताकि उन्हें इंडेक्स किया जा सके। मैंने जो कुछ भी करने की कोशिश की, प्रक्रियाएं स्मृति से बाहर हो जाएंगी।


सौभाग्य से, हमें केवल फाइलों को संयोजित करने की आवश्यकता है। आप चाहें तो पुरानी पार्ट फाइल्स को डिलीट कर सकते हैं। हमें पार्ट फाइलों को ओपनइमेज फोल्डर से बाहर ले जाने की भी जरूरत है।

 cd data/rdm/retrieval_databases/openimages/ cat 2000000x768_part1.npz 2000000x768_part2.npz 2000000x768_part3.npz 2000000x768_part4.npz > 2000000x768.npz mv 2000000x768_* ~/temp cd ../../../../

अब जब हम प्रशिक्षण स्क्रिप्ट चलाते हैं, तो हमें स्मृति से बाहर नहीं भागना चाहिए। मुझे लगता है कि प्रशिक्षण स्क्रिप्ट में उनके बहु फ़ाइल फ़ंक्शन में यह कुछ समस्या है।

 python scripts/train_searcher.py
  • हमें scripts/knn2img.py में बैच आकार बदलने की आवश्यकता है ताकि हमारे पास GPU स्मृति समाप्त न हो। आपको 1 से कम करने की आवश्यकता हो सकती है, लेकिन मैं 3090 पर 2 पर सेट करने में सक्षम था।

  • एक संपादक में scripts/knn2img.py खोलें

  • लाइन 243 पर जाएं या "n_samples" ढूंढें

  • डिफ़ॉल्ट मान को 1 या 2 में बदलें और सहेजें

  • आप इसे कमांड लाइन पैरामीटर का उपयोग करके भी कर सकते हैं, लेकिन चूंकि यह मेरे लिए कभी काम नहीं करेगा, इसलिए मैं डिफ़ॉल्ट मान बदलना चाहता था। ध्यान दें कि यदि आप भविष्य में रेपो को अपडेट करते हैं तो यह संभवतः अधिलेखित हो जाएगा।


अब हम openimages डेटाबेस का उपयोग करके RDM इमेज जेनरेट कर सकते हैं:

 python scripts/knn2img.py --prompt "A blue pig" --database openimages --use_neighbors --knn 20


इसे आसानी से चलाने के लिए एक ~/.bashrc स्क्रिप्ट है। फिर से, अपनी आवश्यकताओं के अनुरूप 3 रास्तों को बदलना सुनिश्चित करें:

 function diffuse() { if [ $# -eq 0 ]; then echo "Usage: diffuse '[prompt]' [--plms]" exit 1 fi cd /mnt/c/diffusion/latent-diffusion; conda activate ldm; if [ $2 = '--plms' ]; then python scripts/knn2img.py --database openimages --prompt $1 --use_neighbors --outdir '/mnt/g/My Drive/AI Image Tests/RDM' --knn 20 --plms else python scripts/knn2img.py --database openimages --prompt $1 --use_neighbors --outdir '/mnt/g/My Drive/AI Image Tests/RDM' --knn 20 fi }

तेजी से चीजें ऊपर

आप एक फ़ाइल बनाकर (इस मामले में prompts.txt ) बैचों में प्रॉम्प्ट चला सकते हैं और स्क्रिप्ट को इस तरह -from –from-file पैरामीटर के साथ इंगित कर सकते हैं

 python scripts/knn2img.py --database openimages --from-file ./prompts.txt --use_neighbors --outdir '/mnt/g/My Drive/AI Image Tests/RDM' --knn 20

नमूना prompts.txt

 prompt 1 prompt 2 prompt 3


यदि आप बहुत सारी क्वेरीज़ चला रहे हैं तो इससे बहुत समय की बचत होनी चाहिए क्योंकि मॉडल केवल एक बार लोड हो जाता है। टेक्स्ट-टू-इमेज मॉडल में यह विकल्प नहीं है।

रेगिस्तान में स्पोर्ट्स कार

रेगिस्तान में स्पोर्ट्स कार

रेगिस्तान में स्पोर्ट्स कार


प्रारंभिक परीक्षण, और पीएलएमएस

पीएलएमएस चालू और बंद दोनों मॉडलों के कुछ प्रारंभिक परिणाम नीचे दिए गए हैं। पीएलएमएस को चीजों को तेजी से चलाना चाहिए। अभी के लिए, हम गति वृद्धि को नहीं मापेंगे, लेकिन छवि गुणवत्ता/परिणामों को विषयगत रूप से देखेंगे।

चूंकि RDM मॉडल मेरे सिस्टम के लिए एक बार में केवल 2 फ़ोटो ही बनाएगा, इसलिए मैंने उस मॉडल के लिए ग्रिड के बजाय दोनों फ़ोटो शामिल किए।

मैं लगभग निश्चित रूप से भविष्य में और अधिक विशिष्ट परीक्षण करूंगा और इन मॉडलों को भविष्य की तुलना पोस्ट में शामिल किया जाएगा।


पहाड़ी पर लकड़ी का घर, लैंडस्केप फोटोग्राफी

टेक्स्ट-टू-इमेज

बिना pls

pls . के साथ

छवि-20220807150052836

छवि-20220807153545252


आरडीएम

बिना pls

pls . के साथ

छवि-20220807145854952

छवि-2022087145920778

छवि-202208714591367

छवि-2022087145931866


एक बैंगनी स्टॉप साइन


टेक्स्ट-टू-इमेज

बिना pls

pls . के साथ

छवि-20220807154729984

छवि-20220807153711466

आरडीएम

बिना pls

pls . के साथ

छवि-20220807150500598

छवि-20220807153000850

छवि-20220807151421393

छवि-20220807153013778


फॉक्स डेन, डिजिटल आर्ट

टेक्स्ट-टू-इमेज

बिना pls

pls . के साथ

छवि-20220807155228088

छवि-2022087155634227


आरडीएम

बिना pls

pls . के साथ

छवि-20220807151441359

छवि-20220807152859265

छवि-2022087152235267

छवि-20220807152911615


बड़ा खेल जीतना, पुरस्कार विजेता फोटोग्राफी

टेक्स्ट-टू-इमेज

बिना pls

pls . के साथ

छवि-20220807160007336

छवि-20220807160228471

आरडीएम

बिना pls

pls . के साथ

छवि-20220807151456027

छवि-20220807152928304

छवि-20220807152216729

छवि-20220807152940229


रेत के टीलों में चलती स्पोर्ट्स कार

टेक्स्ट-टू-इमेज

बिना pls

pls . के साथ

छवि-2022087160557241

छवि-2022087160838768

आरडीएम

बिना pls

pls . के साथ

छवि-202080715151401781

छवि-20220807152825508

छवि-20220807152200386

छवि-20220807152839511


अपना खुद का कॉल करने के लिए एक छवि जेनरेटर

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


उम्मीद है कि कुछ ट्यूनिंग और नए रिलीज/मॉडल के साथ यह WOW फैक्टर DALL-E के करीब पहुंच जाएगा।

लाल टोपी में पांडा


यहाँ भी प्रकाशित हो चुकी है।.