Stable Diffusion არის ტექსტიდან გამოსახულების გენერირების ლატენტური დიფუზიური მოდელი, შექმნილი CompVis-ის, Stability AI-სა და LAION-ის მკვლევრებისა და ინჟინრების მიერ. ის გაწვრთნილია LAION-5B მონაცემთა ბაზის ქვესიმრავლიდან მიღებული 512x512 ზომის სურათებზე. LAION-5B არის ყველაზე დიდი, თავისუფლად ხელმისაწვდომი მულტიმოდალური მონაცემთა ნაკრები, რომელიც ამჟამად არსებობს. ამ პოსტში გვსურს ვაჩვენოთ, როგორ გამოვიყენოთ Stable Diffusion 🧨 Diffusers ბიბლიოთეკასთან ერთად, განვმარტოთ, როგორ მუშაობს მოდელი და ბოლოს უფრო ღრმად ჩავუღრმავდეთ, თუ როგორ იძლევა Diffusers-ი საშუალებას სურათის გენერირების კონვეიერის მორგებისთვის. შენიშვნა: მკაცრად რეკომენდებულია გქონდეთ საბაზისო ცოდნა იმის შესახებ, თუ როგორ მუშაობს დიფუზიური მოდელები. თუ დიფუზიური მოდელები თქვენთვის სრულიად ახალია, გირჩევთ წაიკითხოთ ერთ-ერთი შემდეგი ბლოგპოსტი: ახლა, დავიწყოთ სურათების გენერირებით 🎨. მოდელის გამოყენებამდე, თქვენ უნდა დაეთანხმოთ მოდელის ლიცენზიას წონების ჩამოსატვირთად და გამოსაყენებლად. შენიშვნა: ლიცენზიის ექსპლიციტურად მიღება UI-ის მეშვეობით აღარ არის საჭირო. ლიცენზია შექმნილია ასეთი ძლიერი მანქანური სწავლების სისტემის პოტენციური მავნე ზემოქმედების შესამსუბუქებლად. ჩვენ ვთხოვთ მომხმარებლებს, სრულად და ყურადღებით წაიკითხონ ლიცენზია. აქ გთავაზობთ შეჯამებას: პირველ რიგში, უნდა დააინსტალიროთ diffusers==0.10.2 შემდეგი კოდის ფრაგმენტების გასაშვებად: ამ პოსტში ჩვენ გამოვიყენებთ მოდელის v1-4 ვერსიას, მაგრამ ასევე შეგიძლიათ გამოიყენოთ მოდელის სხვა ვერსიები, როგორიცაა 1.5, 2 და 2.1, კოდის მინიმალური ცვლილებებით. Stable Diffusion მოდელის გაშვება შესაძლებელია ინფერენციის რეჟიმში სულ რამდენიმე სტრიქონით StableDiffusionPipeline კონვეიერის გამოყენებით. კონვეიერი აწყობს ყველაფერს, რაც გჭირდებათ ტექსტიდან სურათების გენერირებისთვის, მარტივი from_pretrained ფუნქციის გამოძახებით. თუ GPU ხელმისაწვდომია, გადავიტანოთ მასზე! შენიშვნა: თუ შეზღუდული ხართ GPU მეხსიერებით და გაქვთ 10GB-ზე ნაკლები GPU RAM, დარწმუნდით, რომ ჩატვირთეთ StableDiffusionPipeline float16 სიზუსტით ნაგულისხმევი float32 სიზუსტის ნაცვლად, როგორც ეს ზემოთ გაკეთდა. ამის გაკეთება შეგიძლიათ fp16 ფილიალიდან წონების ჩატვირთვით და diffusers-ისთვის იმის მითითებით, რომ წონები float16 სიზუსტით იყოს: კონვეიერის გასაშვებად, უბრალოდ განსაზღვრეთ მოთხოვნა (prompt) და გამოიძახეთ pipe. შედეგი ასე გამოიყურება. წინა კოდი ყოველ ჯერზე სხვადასხვა სურათს მოგცემთ. თუ რომელიმე ეტაპზე მიიღებთ შავ სურათს, ეს შეიძლება გამოწვეული იყოს იმით, რომ მოდელში ჩაშენებულმა კონტენტის ფილტრმა შესაძლოა აღმოაჩინა NSFW შედეგი. თუ ფიქრობთ, რომ ასე არ უნდა იყოს, სცადეთ მოთხოვნის (prompt) შეცვლა ან სხვა „მარცვლის“ (seed) გამოყენება. ფაქტობრივად, მოდელის პროგნოზები მოიცავს ინფორმაციას იმის შესახებ, იქნა თუ არა აღმოჩენილი NSFW კონკრეტული შედეგისთვის. ვნახოთ, როგორ გამოიყურებიან ისინი: თუ გსურთ დეტერმინისტული გამოსავალი, შეგიძლიათ შემთხვევითი „მარცვალი“ (seed) გამოიყენოთ და გენერატორი გადასცეთ კონვეიერს. ყოველ ჯერზე, როდესაც ერთსა და იმავე „მარცვალს“ (seed) იყენებთ, მიიღებთ ერთსა და იმავე სურათის გამოსავალს. შედეგი ასე გამოიყურება. თქვენ შეგიძლიათ შეცვალოთ ინფერენციის ნაბიჯების რაოდენობა num_inference_steps არგუმენტის გამოყენებით. ზოგადად, რაც მეტ ნაბიჯს იყენებთ, მით უკეთესია შედეგები, თუმცა რაც მეტი ნაბიჯია, მით მეტი დრო სჭირდება გენერირებას. Stable Diffusion საკმაოდ კარგად მუშაობს შედარებით მცირე რაოდენობის ნაბიჯებით, ამიტომ გირჩევთ გამოიყენოთ ინფერენციის ნაბიჯების ნაგულისხმევი რაოდენობა – 50. თუ გსურთ უფრო სწრაფი შედეგები, შეგიძლიათ გამოიყენოთ მცირე რაოდენობა. თუ გსურთ პოტენციურად მაღალი ხარისხის შედეგები, შეგიძლიათ გამოიყენოთ უფრო დიდი რიცხვები. მოდით ვცადოთ კონვეიერის გაშვება ნაკლები ხმაურის მოცილების ნაბიჯებით. გაითვალისწინეთ, რომ სტრუქტურა იგივეა, მაგრამ პრობლემებია ასტრონავტის კოსტუმში და ცხენის საერთო ფორმაში. ეს გვიჩვენებს, რომ მხოლოდ 15 ხმაურის მოცილების ნაბიჯის გამოყენებამ მნიშვნელოვნად გააუარესა გენერირების შედეგის ხარისხი. როგორც აღინიშნა, 50 ხმაურის მოცილების ნაბიჯი ჩვეულებრივ საკმარისია მაღალი ხარისხის სურათების გენერირებისთვის. num_inference_steps-ის გარდა, ყველა წინა მაგალითში ვიყენებდით ფუნქციის კიდევ ერთ არგუმენტს, სახელად guidance_scale. guidance_scale არის გენერირების (ამ შემთხვევაში, ტექსტის) მართვის პირობით სიგნალთან შესაბამისობის გაზრდისა და ნიმუშის საერთო ხარისხის გაუმჯობესების საშუალება. ის ასევე ცნობილია როგორც classifier-free guidance, რაც მარტივად რომ ვთქვათ, აიძულებს გენერირებას უკეთ შეესაბამებოდეს მოთხოვნას, პოტენციურად სურათის ხარისხის ან მრავალფეროვნების ხარჯზე. 7-დან 8.5-მდე მნიშვნელობები, როგორც წესი, კარგი არჩევანია Stable Diffusion-ისთვის. ნაგულისხმევად, კონვეიერი იყენებს guidance_scale-ს 7.5. თუ იყენებთ ძალიან დიდ მნიშვნელობას, სურათები შეიძლება კარგად გამოიყურებოდეს, მაგრამ ნაკლებად მრავალფეროვანი იქნება. ამ პარამეტრის ტექნიკური დეტალების შესახებ შეგიძლიათ გაიგოთ პოსტის ამ ნაწილში. შემდეგ, ვნახოთ, როგორ შეგიძლიათ ერთდროულად გენერირება ერთი და იგივე მოთხოვნის რამდენიმე სურათის. პირველ რიგში, შევქმნით image_grid ფუნქციას, რომელიც დაგვეხმარება მათ ლამაზად ვიზუალიზაციაში ბადეში. ჩვენ შეგვიძლია ერთი და იგივე მოთხოვნის მრავალი სურათის გენერირება, უბრალოდ სიის გამოყენებით, რომელშიც ერთი და იგივე მოთხოვნა რამდენჯერმეა გამეორებული. ჩვენ გავაგზავნით სიას კონვეიერში იმ სტრიქონის ნაცვლად, რომელიც ადრე გამოვიყენეთ. ნაგულისხმევად, Stable Diffusion აწარმოებს 512 × 512 პიქსელის ზომის სურათებს. ნაგულისხმევი პარამეტრების შეცვლა ძალიან ადვილია height და width არგუმენტების გამოყენებით, პორტრეტულ ან ლანდშაფტურ თანაფარდობებში მართკუთხა სურათების შესაქმნელად. სურათის ზომების არჩევისას, გირჩევთ შემდეგს: მოდით გავუშვათ...