इस पोस्ट में, हम आपका अपना AI इमेज जेनरेटर चलाने के साथ सेटअप करने पर विचार करेंगे। इसे अंत तक काम करने के लिए आपको CUDA सक्षम कार्ड के साथ एक Linux सिस्टम की आवश्यकता है। मुझे विंडोज़ में काम करने वाली मूल txt-2img स्क्रिप्ट मिली। दुर्भाग्य से, जुलाई में जारी किए गए पुनर्प्राप्ति-संवर्धित प्रसार मॉडल के लिए, आपको scann
डेटासेट को अनुक्रमित करने के लिए स्कैन की आवश्यकता है, जो केवल लिनक्स पर उपलब्ध है। डब्ल्यूएसएल ने मेरे लिए ठीक काम किया।
यहाँ मोटे तौर पर वह है जो मैं इकट्ठा करता हूँ जिसकी आपको आवश्यकता होगी:
= 32GB रैम
जब मैं एआई सबरेडिट्स ब्राउज़ कर रहा था, तब मैंने अव्यक्त-प्रसार रेपो पर बेतरतीब ढंग से ठोकर खाई। कुछ पोस्ट ने इसका उल्लेख किया और मुझे नहीं पता था कि यह क्या था इसलिए मैं गुगल गया।
मैं कोई कंप्यूटर वैज्ञानिक, गणितज्ञ, या ऐसी कोई भी चीज़ नहीं हूँ जो वास्तव में यह समझने के लिए आवश्यक हो कि यहाँ क्या हो रहा है। नए आरएडी मॉडल के बारे में पेपर समझ में आता है और दिलचस्प है, लेकिन मैंने अभी तक बहुत अधिक शोध नहीं किया है।
अव्यक्त प्रसार के साथ 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 हैं। आप इस ज्यूपिटर नोटबुक का उपयोग बहुत अच्छे परिणामों के साथ छवियों को बेहतर बनाने के लिए कर सकते हैं।
htop
का उपयोग करें।pip
की conda
करें। आप यहां आरडीएम के बारे में अधिक पढ़ सकते हैं। जैसा कि पहले कहा गया है, यह अनिवार्य रूप से मौजूदा प्रसार प्रक्रिया के साथ क्लिप विवरण के साथ छवियों के डेटाबेस को जोड़ती है, जो मैं समझता हूं। इस हिस्से को चलने में काफी समय लगता है।
ध्यान दें, यह मॉडल, विशेष रूप से जब ओपनइमेज प्रशिक्षण का उपयोग करना वास्तविक चीजों को फिर से बनाने के लिए सबसे अच्छा है और यह बहुत अच्छा नहीं लगता है (अभी तक) और अजीब छवियां बनाना जो हम प्रसार मॉडल से उपयोग कर रहे हैं।
टेक्स्ट-टू-इमेज मॉडल पहले काम करें
नए पैकेज स्थापित करें और प्रशिक्षण मॉडल डाउनलोड करें।
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
जब तक आपके पास एक सुपर कंप्यूटर न हो, पाइथन मल्टीप्रोसेसिंग (जो मैं बता सकता हूं) में भयानक मेमोरी प्रबंधन हमें उन 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 . के साथ |
---|---|
आरडीएम
बिना pls | pls . के साथ |
---|---|
एक बैंगनी स्टॉप साइन
टेक्स्ट-टू-इमेज
बिना pls | pls . के साथ |
---|---|
आरडीएम
बिना pls | pls . के साथ |
---|---|
फॉक्स डेन, डिजिटल आर्ट
टेक्स्ट-टू-इमेज
बिना pls | pls . के साथ |
---|---|
आरडीएम
बिना pls | pls . के साथ |
---|---|
बड़ा खेल जीतना, पुरस्कार विजेता फोटोग्राफी
टेक्स्ट-टू-इमेज
बिना pls | pls . के साथ |
---|---|
आरडीएम
बिना pls | pls . के साथ |
---|---|
रेत के टीलों में चलती स्पोर्ट्स कार
टेक्स्ट-टू-इमेज
बिना pls | pls . के साथ |
---|---|
आरडीएम
बिना pls | pls . के साथ |
---|---|
और वहां आपके पास है - कोई और क्रेडिट या मासिक सीमा नहीं, केवल शुद्ध एआई छवि निर्माण सब कुछ। एक बार जब मैं कुछ ट्यूनिंग सेटिंग्स का पता लगा लेता हूं और अपना खुद का इमेज ट्रेनिंग डेटाबेस बना लेता हूं, तो हम इस बारे में फिर से बात करेंगे।
उम्मीद है कि कुछ ट्यूनिंग और नए रिलीज/मॉडल के साथ यह WOW फैक्टर DALL-E के करीब पहुंच जाएगा।
यहाँ भी प्रकाशित हो चुकी है।.