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

წინასწარ გაწვრთნილი ქსელები და გადაცემის სწავლა

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

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

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

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

წინასწარ მომზადებული მოდელები, როგორც მხატვრული ექსტრაქტორები

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

ორივე Keras და PyTorch შეიცავს ფუნქციებს, რათა ადვილად ჩაიტვირთოს წინასწარ მომზადებული ნერვული ქსელის წონა ზოგიერთი ჩვეულებრივი არქიტექტურისთვის, რომელთა უმეტესობა გაწვრთნილი იყო ImageNet სურათებზე. ყველაზე ხშირად გამოყენებული პირობა აღწერილია წინა გაკვეთილის CNN Architectures გვერდზე. კერძოდ, შეგიძლიათ განიხილოთ ერთ-ერთი შემდეგი:

  • VGG-16/VGG-19 რომლებიც შედარებით მარტივი მოდელებია, რომლებიც მაინც კარგ სიზუსტეს იძლევა. ხშირად VGG-ის გამოყენება, როგორც პირველი მცდელობა, კარგი არჩევანია იმის სანახავად, თუ როგორ მუშაობს გადაცემის სწავლება.
  • ResNet is a family of models proposed by Microsoft Research in 2015. They have more layers, and thus take more resources.
  • MobileNet is a family of models with reduced size, suitable for mobile devices. გამოიყენეთ ისინი, თუ რესურსები არ გაქვთ და ცოტა სიზუსტეს შესწირავთ.

აქ მოცემულია VGG-16 ქსელის მიერ კატის სურათიდან ამოღებული მახასიათებლების ნიმუში:

Features extracted by VGG-16

კატები ძაღლების წინააღმდეგ მონაცემთა ნაკრები

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

Exercise: Transfer Learning

ვნახოთ სწავლის გადაცემა მოქმედებაში შესაბამის რვეულებში:

  • გადაცემის სწავლება - PyTorch
  • ტრანსფერული სწავლება - TensorFlow

მოწინააღმდეგე კატის ვიზუალიზაცია

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

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

Image Optimization Loop

თუმცა, თუ ამას გავაკეთებთ, მივიღებთ შემთხვევითი ხმაურის მსგავს რაღაცას. ეს იმიტომ ხდება, რომ არსებობს მრავალი გზა, რათა ქსელმა იფიქროს, რომ შეყვანის სურათი არის კატა, მათ შორის ზოგიერთი, რომელსაც ვიზუალურად აზრი არ აქვს. While those images contain a lot of patterns typical for a cat, there is nothing to constrain them to be visually distinctive.

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

Ideal CatIdeal Zebra
იდეალური კატაიდეალური ზებრა

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

Picture of a DogPicture of a dog classified as a cat
ძაღლის ორიგინალური სურათიკატის კლასიფიცირებული ძაღლის სურათი

იხილეთ კოდი ზემოაღნიშნული შედეგების გასამრავლებლად შემდეგ ნოუთბუქში:

  • იდეალური და მოწინააღმდეგე კატა - TensorFlow

დასკვნა

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

გამოწვევა

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

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

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

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

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