გამოსახულების სეგმენტაცია კომპიუტერული ხედვის სფეროში კარგად ცნობილი ამოცანაა. ის კომპიუტერს საშუალებას აძლევს, არა მხოლოდ იცოდეს, თუ რა არის გამოსახულებაზე (კლასიფიკაცია) და სად მდებარეობს ობიექტები (ამოცნობა), არამედ განსაზღვროს მათი კონტურებიც. ობიექტების კონტურების ცოდნა აუცილებელია ისეთ სფეროებში, როგორიცაა რობოტიკა და ავტონომიური მართვა. მაგალითად, რობოტმა უნდა იცოდეს ობიექტის ფორმა, რათა სწორად აიღოს იგი. სეგმენტაცია ასევე შეიძლება გაერთიანდეს გამოსახულების შევსებასთან (inpainting), რაც მომხმარებლებს საშუალებას აძლევს აღწერონ, გამოსახულების რომელი ნაწილის შეცვლა სურთ. გამოსახულების სეგმენტაციის მოდელების უმრავლესობის ერთ-ერთი შეზღუდვა ის არის, რომ ისინი მხოლოდ კატეგორიების ფიქსირებული სიით მუშაობენ. მაგალითად, თქვენ ვერ გამოიყენებთ ფორთოხლებზე გაწვრთნილ სეგმენტაციის მოდელს ვაშლების სეგმენტაციისთვის. სეგმენტაციის მოდელისთვის დამატებითი კატეგორიის სწავლებისთვის საჭიროა ახალი კატეგორიის მონაცემების მარკირება და ახალი მოდელის გაწვრთნა, რაც შეიძლება ძვირი და შრომატევადი იყოს. მაგრამ რა მოხდება, თუ არსებობს მოდელი, რომელსაც უკვე შეუძლია თითქმის ნებისმიერი სახის ობიექტის სეგმენტაცია, ყოველგვარი დამატებითი წვრთნის გარეშე? სწორედ ამას აღწევს CLIPSeg, „ნულოვანი-კადრის“ (zero-shot) სეგმენტაციის მოდელი. ამჟამად, CLIPSeg-ს ჯერ კიდევ აქვს თავისი შეზღუდვები. მაგალითად, მოდელი იყენებს 352 x 352 პიქსელის ზომის გამოსახულებებს, ამიტომ შედეგი საკმაოდ დაბალი რეზოლუციისაა. ეს ნიშნავს, რომ თანამედროვე კამერებიდან მიღებულ გამოსახულებებთან მუშაობისას პიქსელურად ზუსტ შედეგებს ვერ მივიღებთ. თუ უფრო ზუსტი სეგმენტაცია გვსურს, შეგვიძლია დავხვეწოთ უახლესი სეგმენტაციის მოდელი, როგორც ეს ჩვენს წინა ბლოგპოსტშია ნაჩვენები. ამ შემთხვევაში, ჩვენ კვლავ შეგვიძლია გამოვიყენოთ CLIPSeg გარკვეული სავარაუდო მარკირების შესაქმნელად, შემდეგ კი მათი დახვეწა ისეთ ხელსაწყოებში, როგორიცაა Segments.ai. სანამ ამის გაკეთებას აღვწერთ, მოდით, ჯერ განვიხილოთ, როგორ მუშაობს CLIPSeg. CLIP, რაც ნიშნავს კონტრასტულ ენისა და გამოსახულების წინასწარ წვრთნას (Contrastive Language–Image Pre-training), არის მოდელი, რომელიც OpenAI-მ 2021 წელს შეიმუშავა. თქვენ შეგიძლიათ CLIP-ს მიაწოდოთ გამოსახულება ან ტექსტის ნაწილი, და CLIP გამოიტანს თქვენი შეტანის აბსტრაქტულ წარმოდგენას. ეს აბსტრაქტული წარმოდგენა, რომელსაც ასევე ეწოდება "ჩანერგვა" (embedding), სინამდვილეში უბრალოდ ვექტორია (რიცხვების სია). შეგიძლიათ ეს ვექტორი წარმოიდგინოთ, როგორც წერტილი მაღალგანზომილებიან სივრცეში. CLIP გაწვრთნილია ისე, რომ მსგავსი სურათებისა და ტექსტების წარმოდგენებიც მსგავსი იყოს. ეს ნიშნავს, რომ თუ ჩვენ შევიტანთ გამოსახულებას და ტექსტურ აღწერას, რომელიც შეესაბამება ამ გამოსახულებას, გამოსახულებისა და ტექსტის წარმოდგენები მსგავსი იქნება (ანუ, მაღალგანზომილებიანი წერტილები ახლოს იქნებიან ერთმანეთთან). თავიდან ეს შეიძლება არც ისე სასარგებლო ჩანდეს, მაგრამ სინამდვილეში ის ძალიან მძლავრია. მაგალითად, მოდით, სწრაფად გადავხედოთ, როგორ შეიძლება CLIP-ის გამოყენება გამოსახულებების კლასიფიკაციისთვის, ისე, რომ ის ამ ამოცანაზე არ ყოფილა გაწვრთნილი. გამოსახულების კლასიფიკაციისთვის, ჩვენ CLIP-ში შევიტანთ გამოსახულებას და იმ სხვადასხვა კატეგორიებს, რომელთა არჩევაც გვსურს (მაგალითად, შევიტანთ გამოსახულებას და სიტყვებს „ვაშლი“, „ფორთოხალი“...). შემდეგ CLIP გვაძლევს გამოსახულებისა და თითოეული კატეგორიის ჩანერგვას (embedding). ახლა, ჩვენ უბრალოდ უნდა შევამოწმოთ, რომელი კატეგორიის ჩანერგვაა ყველაზე ახლოს გამოსახულების ჩანერგვასთან, და ვუალა! ჯადოს ჰგავს, არა? უფრო მეტიც, CLIP სასარგებლოა არა მხოლოდ კლასიფიკაციისთვის, არამედ მისი გამოყენება შეიძლება გამოსახულების ძიებისთვის (ხედავთ, როგორ ჰგავს ეს კლასიფიკაციას?), ტექსტიდან-გამოსახულების მოდელებისთვის (DALL-E 2 CLIP-ზე მუშაობს), ობიექტის ამოცნობისთვის (OWL-ViT) და ჩვენთვის ყველაზე მნიშვნელოვანი: გამოსახულების სეგმენტაციისთვის. ახლა თქვენ ხედავთ, რატომ იყო CLIP ნამდვილად გარღვევა მანქანურ სწავლებაში. მიზეზი, რის გამოც CLIP ასე კარგად მუშაობს, ის არის, რომ მოდელი გაწვრთნილი იყო ტექსტური წარწერების მქონე გამოსახულებების უზარმაზარ მონაცემთა ნაკრებზე. მონაცემთა ნაკრები შეიცავდა 400 მილიონ გამოსახულება-ტექსტის წყვილს, რომლებიც ინტერნეტიდან იყო აღებული. ეს გამოსახულებები მოიცავს ობიექტებისა და კონცეფციების ფართო სპექტრს, და CLIP შესანიშნავად ქმნის წარმოდგენას თითოეული მათგანისთვის. CLIPSeg არის მოდელი, რომელიც იყენებს CLIP-ის წარმოდგენებს გამოსახულების სეგმენტაციის ნიღბების შესაქმნელად. ის გამოაქვეყნეს ტიმო ლუდეკემ (Timo Lüddecke) და ალექსანდერ ეკერმა (Alexander Ecker). მათ მიაღწიეს „ნულოვანი-კადრის“ გამოსახულების სეგმენტაციას, CLIP მოდელზე (რომელიც გაყინულია) ტრანსფორმატორზე დაფუძნებული დეკოდერის გაწვრთნით. დეკოდერი იღებს გამოსახულების CLIP წარმოდგენას და იმ ობიექტის CLIP წარმოდგენას, რომლის სეგმენტაციაც გსურთ. ამ ორი შეტანის გამოყენებით, CLIPSeg დეკოდერი ქმნის ბინარულ სეგმენტაციის ნიღაბს. უფრო ზუსტად რომ ვთქვათ, დეკოდერი იყენებს არა მხოლოდ სეგმენტირებული გამოსახულების საბოლოო CLIP წარმოდგენას, არამედ CLIP-ის ზოგიერთი ფენის გამოსავლებსაც. დეკოდერი გაწვრთნილია PhraseCut მონაცემთა ნაკრებზე, რომელიც შეიცავს 340,000-ზე მეტ ფრაზას შესაბამისი გამოსახულების სეგმენტაციის ნიღბებით. ავტორებმა ასევე ექსპერიმენტები ჩაატარეს სხვადასხვა მონაცემთა გამდიდრების მეთოდებით (augmentations) მონაცემთა ნაკრების ზომის გასაფართოებლად. მიზანი აქ არის არა მხოლოდ იმ კატეგორიების სეგმენტაცია, რომლებიც წარმოდგენილია მონაცემთა ნაკრებში, არამედ უცნობი კატეგორიების სეგმენტაციაც. ექსპერიმენტები ნამდვილად აჩვენებს, რომ დეკოდერს შეუძლია უცნობ კატეგორიებზე განზოგადება. CLIPSeg-ის ერთ-ერთი საინტერესო მახასიათებელია ის, რომ როგორც მოთხოვნა (query) (გამოსახულება, რომლის სეგმენტაციაც გვსურს), ასევე მითითება (prompt) (ობიექტი, რომლის სეგმენტაციაც გვსურს გამოსახულებაზე) შედის CLIP ჩანერგვების სახით. მითითებისთვის განკუთვნილი CLIP ჩანერგვა შეიძლება მოდიოდეს ტექსტიდან (კატეგორიის სახელი), ან სხვა გამოსახულებიდან. ეს ნიშნავს, რომ თქვენ შეგიძლიათ სე