კომპიუტერული ხედვა 5 წთ კითხვა

გენერაციული საპირისპირო ქსელები

წინა განყოფილებაში ვისწავლეთ გენერაციული მოდელები: მოდელები, რომლებსაც შეუძლიათ ტრენინგის მონაცემთა ნაკრების მსგავსი ახალი სურათების გენერირება. VAE იყო გენერაციული მოდელის კარგი მაგალითი.

სალექციო ვიქტორინა

თუმცა, თუ ჩვენ ვცდილობთ გამოვიმუშაოთ რაღაც მართლაც მნიშვნელოვანი, მაგალითად, ნახატი გონივრული გარჩევადობით, VAE-ით, დავინახავთ, რომ ტრენინგი კარგად არ ემთხვევა. ამ გამოყენების შემთხვევაში, ჩვენ უნდა ვისწავლოთ სხვა არქიტექტურის შესახებ, რომელიც სპეციალურად არის გათვლილი გენერაციულ მოდელებზე - Generative Adversarial Networks, ან GANs.

GAN-ის მთავარი იდეა არის ორი ნეირონული ქსელის ქონა, რომლებიც გაწვრთნიან ერთმანეთის წინააღმდეგ:

სურათი დიმიტრი სოშნიკოვი-ის მიერ

ცოტა ლექსიკა:

  • გენერატორი არის ქსელი, რომელიც იღებს რაღაც შემთხვევით ვექტორს და შედეგად აწარმოებს სურათს
  • Discriminator არის ქსელი, რომელიც იღებს სურათს და მან უნდა თქვას, არის თუ არა ეს რეალური სურათი (სავარჯიშო მონაცემთა ნაკრებიდან), თუ ის გენერირებულია გენერატორის მიერ. ეს არსებითად გამოსახულების კლასიფიკატორია.

დისკრიმინატორი

დისკრიმინატორის არქიტექტურა არ განსხვავდება ჩვეულებრივი გამოსახულების კლასიფიკაციის ქსელისგან. უმარტივეს შემთხვევაში ის შეიძლება იყოს სრულად დაკავშირებული კლასიფიკატორი, მაგრამ დიდი ალბათობით ეს იქნება კონვოლუციური ქსელი.

კონვოლუციურ ქსელებზე დაფუძნებულ GAN-ს ეწოდება DCGAN

CNN-ის დისკრიმინატორი შედგება შემდეგი ფენებისგან: რამდენიმე კონვოლუცია+გაერთიანება (სივრცითი ზომით მცირდება) და ერთი ან მეტი სრულად დაკავშირებული ფენა „ფუნქციის ვექტორის“ მისაღებად, საბოლოო ორობითი კლასიფიკატორი.

ამ კონტექსტში „გაერთიანება“ არის ტექნიკა, რომელიც ამცირებს გამოსახულების ზომას. „შრეების გაერთიანება ამცირებს მონაცემთა ზომებს ნეირონების კლასტერების შედეგების ერთ ფენაში გაერთიანებით ერთ ნეირონში მომდევნო ფენაში“. - წყარო

გენერატორი

გენერატორი ოდნავ უფრო რთულია. თქვენ შეგიძლიათ ჩათვალოთ, რომ ეს არის საპირისპირო დისკრიმინატორი. ლატენტური ვექტორიდან დაწყებული (მახასიათებლის ვექტორის ნაცვლად), მას აქვს სრულად დაკავშირებული ფენა საჭირო ზომაში/ფორმად გადასაყვანად, რასაც მოჰყვება დეკონვოლუციები+გაძლიერება. ეს არის ავტოკოდერი-ის დეკოდერის ნაწილის მსგავსი.

იმის გამო, რომ კონვოლუციის ფენა დანერგილია როგორც ხაზოვანი ფილტრი, რომელიც გადის გამოსახულებას, დეკონვოლუცია არსებითად მსგავსია კონვოლუციისა და შეიძლება განხორციელდეს იმავე ფენის ლოგიკის გამოყენებით.

სურათი დიმიტრი სოშნიკოვი-ის მიერ

GAN-ის ვარჯიში

GAN-ებს ეწოდება მოწინააღმდეგე, რადგან არსებობს მუდმივი კონკურენცია გენერატორსა და დისკრიმინატორს შორის. ამ კონკურსის დროს, როგორც გენერატორი, ასევე დისკრიმინატორი უმჯობესდება, რითაც ქსელი სწავლობს უკეთესი და უკეთესი სურათების შექმნას.

ტრენინგი ტარდება ორ ეტაპად:

  • დისკრიმინატორის მომზადება. ეს ამოცანა საკმაოდ მარტივია: ჩვენ ვქმნით სურათების ჯგუფს გენერატორის მიერ, ვაწერთ მათ 0, რაც ნიშნავს ყალბ სურათს და ვიღებთ სურათების ჯგუფს შეყვანის მონაცემთა ნაკრებიდან (ლეიბლით 1, რეალური სურათი). ჩვენ ვიღებთ დისკრიმინატორ დანაკარგს და ვასრულებთ backprop-ს. გენერატორის სწავლება. ეს ოდნავ უფრო რთულია, რადგან ჩვენ არ ვიცით უშუალოდ გენერატორის მოსალოდნელი გამომავალი. ჩვენ ვიღებთ მთელ GAN ქსელს, რომელიც შედგება გენერატორისგან, რასაც მოჰყვება დისკრიმინატორი, ვკვებავთ მას რამდენიმე შემთხვევითი ვექტორებით და ველოდებით, რომ შედეგი იქნება 1 (შეესაბამება რეალურ სურათებს). შემდეგ ჩვენ ვყინავთ დისკრიმინატორის პარამეტრებს (არ გვინდა, რომ ის ამ საფეხურზე იყოს გაწვრთნილი) და ვასრულებთ backprop-ს.

ამ პროცესის დროს, როგორც გენერატორის, ასევე დისკრიმინატორის დანაკარგები მნიშვნელოვნად არ მცირდება. იდეალურ სიტუაციაში, ისინი უნდა მერყეობდნენ, რაც შეესაბამება ორივე ქსელს, აუმჯობესებს მათ შესრულებას.

სავარჯიშოები: GANs

  • GAN ნოუთბუქი TensorFlow/Keras-ში
  • GAN ნოუთბუქი PyTorch-ში

პრობლემები GAN ვარჯიშთან დაკავშირებით

ცნობილია, რომ GAN-ები განსაკუთრებით რთული შესასწავლია. აქ არის რამდენიმე პრობლემა:

  • რეჟიმის კოლაფსი. ამ ტერმინით ვგულისხმობთ, რომ გენერატორი სწავლობს ერთი წარმატებული სურათის შექმნას, რომელიც ატყუებს გენერატორს და არა სხვადასხვა გამოსახულების მრავალფეროვნებას.
  • მგრძნობელობა ჰიპერპარამეტრების მიმართ. ხშირად ხედავთ, რომ GAN საერთოდ არ იყრის თავს და შემდეგ უეცრად მცირდება სწავლის სიჩქარე, რაც იწვევს კონვერგენციას.
  • ბალანსის დაცვა გენერატორსა და დისკრიმინატორს შორის. ხშირ შემთხვევაში დისკრიმინატორის დანაკარგი შეიძლება შედარებით სწრაფად ნულამდე დაეცეს, რის შედეგადაც გენერატორი ვერ შეძლებს შემდგომ ვარჯიშს. ამის დასაძლევად, ჩვენ შეგვიძლია ვცადოთ, დავაყენოთ სხვადასხვა სწავლის სიჩქარე გენერატორისა და დისკრიმინატორისთვის, ან გამოტოვოთ დისკრიმინატორის ტრენინგი, თუ დანაკარგი უკვე ძალიან დაბალია.
  • ტრენინგი მაღალი გარჩევადობისთვის. იგივე პრობლემის ასახვით, როგორც ავტოენკოდერებთან, ეს პრობლემა ჩნდება, რადგან კონვოლუციური ქსელის ძალიან ბევრი ფენის რეკონსტრუქცია იწვევს არტეფაქტებს. ეს პრობლემა, როგორც წესი, გვარდება ეგრეთ წოდებული პროგრესული მზარდით, როდესაც ჯერ რამდენიმე ფენა ივარჯიშება დაბალი რეზოლუციის სურათებზე, შემდეგ კი შრეები „იბლოკება“ ან ემატება. კიდევ ერთი გამოსავალი იქნება ფენებს შორის დამატებითი კავშირების დამატება და რამდენიმე რეზოლუციის ვარჯიში ერთდროულად - იხილეთ ეს Multi-Scale Gradient GANs ქაღალდი დეტალებისთვის.

სტილის გადაცემა

GANs შესანიშნავი გზაა მხატვრული სურათების შესაქმნელად. კიდევ ერთი საინტერესო ტექნიკაა ეგრეთ წოდებული სტილის გადაცემა, რომელიც იღებს ერთ შინაარსის სურათს და ხელახლა ხატავს მას სხვა სტილში, იყენებს ფილტრებს სტილის სურათიდან.

მისი მუშაობის გზა შემდეგია:

  • ვიწყებთ შემთხვევითი ხმაურის გამოსახულებით (ან შინაარსობრივი სურათით, მაგრამ გასაგებად უფრო ადვილია შემთხვევითი ხმაურიდან დაწყება)
  • ჩვენი მიზანი იქნება ისეთი იმიჯის შექმნა, რომელიც ახლოს იქნება როგორც შინაარსის, ისე სტილის იმიჯთან. ეს განისაზღვრება დაკარგვის ორი ფუნქციით:
    • კონტენტის დაკარგვა გამოითვლება CNN-ის მიერ ამოღებული ფუნქციების საფუძველზე მიმდინარე სურათისა და შინაარსის გამოსახულების ზოგიერთ ფენაში
    • სტილის დაკარგვა გამოითვლება მიმდინარე სურათსა და სტილის სურათს შორის ჭკვიანურად, გრამ მატრიცების გამოყენებით (დამატებითი ინფორმაცია მაგალითად ნოუთბუქი-ში)
  • გამოსახულების გასამარტივებლად და ხმაურის მოსაშორებლად, ჩვენ ასევე შემოგთავაზებთ ვარიაციის დაკარგვა, რომელიც ითვლის საშუალო მანძილს მეზობელ პიქსელებს შორის
  • ძირითადი ოპტიმიზაციის მარყუჟი არეგულირებს მიმდინარე სურათს გრადიენტული დაღმართის (ან სხვა ოპტიმიზაციის ალგორითმის) გამოყენებით, რათა მინიმუმამდე დაიყვანოს მთლიანი დანაკარგი, რაც არის სამივე დანაკარგის შეწონილი ჯამი.

მაგალითი: სტილის გადაცემა

ლექციის შემდგომი ვიქტორინა

დასკვნა

ამ გაკვეთილზე თქვენ შეიტყვეთ GANS-ის შესახებ და როგორ უნდა მოამზადოთ ისინი. თქვენ ასევე შეიტყვეთ იმ განსაკუთრებული გამოწვევების შესახებ, რომელთა წინაშეც შეიძლება აღმოჩნდეს ამ ტიპის ნერვული ქსელი და რამდენიმე სტრატეგია, თუ როგორ უნდა გადალახოთ ისინი.

გამოწვევა

გაიარეთ სტილის გადაცემის ნოუთბუქი თქვენი საკუთარი სურათების გამოყენებით.

მიმოხილვა და თვითშესწავლა

ცნობისთვის, წაიკითხეთ მეტი GAN-ების შესახებ ამ რესურსებში:

  • მარკო პასინი, 10 გაკვეთილი, რომელიც მე ვისწავლე ტრენინგის GANs ერთი წლის განმავლობაში
  • StyleGAN, დე ფაქტო GAN არქიტექტურა გასათვალისწინებელია
  • გენერაციული ხელოვნების შექმნა GAN-ების გამოყენებით Azure ML-ზე

ეს გაკვეთილი არის Microsoft “AI for Beginners” კურსის ქართული თარგმანი, გავრცელებული MIT ლიცენზიით.