Სარჩევი:

ვარსკვლავის ამოცნობა კომპიუტერული ხედვის გამოყენებით (OpenCV): 11 ნაბიჯი (სურათებით)
ვარსკვლავის ამოცნობა კომპიუტერული ხედვის გამოყენებით (OpenCV): 11 ნაბიჯი (სურათებით)

ვიდეო: ვარსკვლავის ამოცნობა კომპიუტერული ხედვის გამოყენებით (OpenCV): 11 ნაბიჯი (სურათებით)

ვიდეო: ვარსკვლავის ამოცნობა კომპიუტერული ხედვის გამოყენებით (OpenCV): 11 ნაბიჯი (სურათებით)
ვიდეო: ეკჰარტ ტოლე - "აწმყოს ძალა" - აუდიო წიგნი - Audible Read Along 2024, ნოემბერი
Anonim
ვარსკვლავის ამოცნობა კომპიუტერული ხედვის გამოყენებით (OpenCV)
ვარსკვლავის ამოცნობა კომპიუტერული ხედვის გამოყენებით (OpenCV)

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

პროექტი შეჯამებულია ამ ვიდეოში:

რატომ დავწერე ეს სასწავლო?

  1. ვარსკვლავების ნიმუშის იდენტიფიკაციის მეთოდი, რომელსაც მე ვამუშავებ, მე მჯერა, რომ პოტენციალი შეიძლება გამოყენებულ იქნას სამოყვარულო ასტრონომიის პროექტების ფართო სპექტრში - იქნება ეს ტელესკოპზე ორიენტაცია, სურათების ავტომატური კლასიფიკაცია, ან თუნდაც საბოლოოდ ვარსკვლავის სენსორი ღია კოდზე თუ სამოყვარულო CubeSat.
  2. აქ არის ბევრი კარგი OpenCV ინსტრუქცია, მაგრამ ასეც რომ აღმოვაჩინე, ძალიან რთული პროცესია სწავლა, ამიტომ ვიმედოვნებ, რომ ეს სახელმძღვანელო იქნება კარგი მითითება სხვა ადამიანებისთვის, რომლებიც ეძებენ HAAR კლასიფიკატორების მომზადებას OpenCV– სთვის (არ არის აუცილებელი ამის გაკეთება ასტრონომია ალბათ!).
  3. მე თვითონ არ ვარ გაწვრთნილი პროგრამისტი, ამიტომ ამ პროექტმა ნამდვილად გამიძლიერა ჩემი გაგება. ვიმედოვნებთ, რომ დაწერეთ ეს ინსტრუქციული სხვა, უფრო გამოცდილი, შემქმნელები შთააგონებენ იმუშაონ ამ კონცეფციაზე და წვლილი შეიტანონ GitHub– ში და ამ ინსტრუქციებში ამ გვერდზე კომენტარების საშუალებით.
  4. სამოყვარულო ასტრონომია და ორიენტაციის მეთოდები ჩემთვის დიდი ინტერესია, იხილეთ ჩემი წინა ინსტრუქცია Arduino Star-Finder ტელესკოპებისთვის.

ამ ინსტრუქციის გარეკანი არის 3U CubeSat დიზაინის კონცეფცია, რომელშიც მე მონაწილეობა მივიღე დიზაინში. მე გამოვიყენე ეს სასწავლო მიზნის მისაღწევად, რადგან კომპიუტერის ხედვის ვარსკვლავის ამოცნობის სისტემის ორიგინალური პროგრამა უნდა ყოფილიყო სამოყვარულო წარმოების CubeSats– ის ორიენტაციის სენსორისთვის Raspberry Pi V2 კამერის გამოყენებით. მე მჯერა, რომ კომპიუტერული ხედვის ვარსკვლავის ამოცნობის მრავალი სხვა პოტენციური პროგრამა არსებობს, მაგრამ მე ვფიქრობ, რომ ეს არის ყველაზე მაგარი!

პატარა ლექსიკონი:

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

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

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

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

OpenCV - ღია კოდის კომპიუტერული ხედვა, კომპიუტერული ხედვის ინსტრუმენტების ბიბლიოთეკა.

Stellarium - ღია კოდის ასტრონომიის პროგრამული უზრუნველყოფა.

ნაბიჯი 1: მოთხოვნები

OpenCV არის ლინუქსზე დაფუძნებული ბიბლიოთეკა, ასე რომ, მიუხედავად იმისა, რომ სავარაუდოა, რომ შესაძლებელია Windows- ზე მისი კარგად ფუნქციონირება, თქვენ გექნებათ ბევრად უფრო ადვილი დრო, რომ გაუშვათ ის Linux გარემოში (მიიღეთ ეს ჩემგან და მრავალი დღის განმავლობაში, რომ სრულად იმუშაოთ Windows!). როგორც ექსპერიმენტი, მე გადმოვწერე და გავუშვი OpenCV ჩემს Raspberry Pi 3B+ - ზე, რომელიც წარმატებული იყო, თუმცა კლასიფიკატორების სწავლება RAM– ით ძალიან ინტენსიური პროცესია, ასე რომ, თუ გსურთ ამის გაკეთება ნებისმიერი სიჩქარით, რეკომენდებული მარშრუტი არის Linux ვირტუალური სერვერის დაქირავება (რაც შეიძლება გასაკვირი იაფი იყოს რეალურად) რამდენიმე დღის/კვირის/თვის განმავლობაში და გამოიყენეთ ეს როგორც ერთგული გარემო, რომელშიც გაატარებთ კლასიფიკაციის ტრენინგს. თქვენ შეძლებთ სერვერის გაკონტროლებას Windows PC– დან SSH კლიენტის გამოყენებით, როგორიცაა Putty. მას შემდეგ, რაც კასკადები გაწვრთნილი იქნება VPS– ის გამოყენებით, მათი გადმოწერა შესაძლებელია თქვენს Windows კომპიუტერზე, ხოლო პითონი შეიძლება გამოყენებულ იქნას Windows– ის გამოსახულების ამოცნობის პროგრამის გასაშვებად.

Linux ვირტუალური სერვერი:

HAAR კასკადის სასწავლო პროცესების შესასრულებლად საჭიროა Linux ვირტუალური სერვერი (VPS). თავდაპირველად დავიქირავე სერვერი 8 GB ოპერატიული მეხსიერებით და Ubuntu 16.04.6 (LTS) x64, ხოლო მოგვიანებით მეორე, რომელიც გაორმაგდა კასკადების გაწვრთნის სიჩქარეზე, თუმცა თქვენ დაგჭირდებათ მხოლოდ ერთი

პროგრამული უზრუნველყოფა:

  • Stellarium - ეს არის ვირტუალური პლანეტარიუმის/ასტრონომიის პროგრამული უზრუნველყოფა, თავისუფლად ხელმისაწვდომი. ის გამოყენებული იქნება იმიტირებული ვარსკვლავური სურათების შესაგროვებლად გამოსაცდელად.
  • Putty - ეს არის SSH კლიენტი, რომელიც გამოიყენება VPS– ის გასაკონტროლებლად ბრძანების ხაზის საშუალებით.
  • WinSCP - ეს გამოიყენება Windows PC– დან ფაილის გადაცემის შესასრულებლად.

ნაბიჯი 2: VPS დაყენება

არსებობს მცირე დაყენების პროცესი VPS– ის ამოქმედების მიზნით. პირველად შეიძლება ამას ცოტა დრო დასჭირდეს, მაგრამ ეს არც ისე სახიფათოა, თუ ზედმიწევნით მიჰყვებით ნაბიჯებს. ეს გაკვეთილი ჩემთვის დიდი მითითება იყო, გირჩევთ წაიკითხოთ ესეც, სანამ ამ ინსტრუქტაჟს მუშაობთ. იგი მოიცავს linux ბრძანებების სპეციფიკას სტრიქონით, რაც აუცილებელია წერილის დაცვით.

უხეშად, პროცესი მოიცავს:

  1. Linux სერვერის შექმნა Ubuntu– ს სწორი ვერსიით.
  2. სერვერის განახლება და განახლება.
  3. სამუშაო სივრცის დირექტორიის შექმნა, რომელშიც დაინსტალირებულია OpenCV.
  4. ზოგიერთი აუცილებლის, კერძოდ შემდგენლის, სხვადასხვა ბიბლიოთეკების და პითონის კავშირების დაყენება.

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

ნაბიჯი 3: პროცესი

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

ძირითადი პროცესი

  1. არსებობს უარყოფითი სურათების ნაკრები, რომელიც შედგება რამდენიმე ათასი სურათისგან, რომელიც არ შეიცავს ინტერესის ობიექტს. ეს უნდა ატვირთოთ VPS– ში.
  2. იქმნება ერთი დადებითი სურათი, რომელიც შეიცავს ინტერესის ობიექტს. ეს ასევე უნდა აიტვირთოს VPS– ში.
  3. ერთი პოზიტიური სურათი დამახინჯებულია, გადახრილია, ბრუნავს და ა.შ. ეს არის ხელოვნური გზა ერთი დიდი გამოსახულებისგან დიდი პოზიტიური მონაცემთა ნაკრების შესაქმნელად. (სხვა რეალური პროგრამებისთვის, როგორიცაა კატის იდენტიფიცირება, შეგიძლიათ უბრალოდ გამოიყენოთ კატების რამდენიმე ათასი სურათი, მაგრამ ეს მეთოდი ყოველთვის არ არის შესაფერისი, თუ არ გაქვთ პოზიტიური სურათების ასეთი დიდი ნაკრები. აქ გამოყენებული ხელოვნური მიდგომა იქნება ნაკლებად ეფექტური, მაგრამ ეს არის ერთადერთი ვარიანტი მსგავსი შემთხვევისათვის).
  4. ტარდება სასწავლო პროცესი, რომელიც მუშაობს ეტაპობრივად. თითოეული ეტაპი გაწვრთნის კასკადს, რათა განსაზღვროს HAAR ტიპის სხვადასხვა მახასიათებლები სურათების ნაკრებში. თითოეულ საფეხურს ექსპონენციალურად მეტი დრო დასჭირდება და კლასიფიკატორის ეფექტურობა ყოველ ჯერზე იზრდება (ასევე შესაძლებელია ზედმეტად ვარჯიში მხოლოდ იმისთვის, რომ იცოდეთ!).
  5. ერთ გაწვრთნილ კასკადს შეეძლება მოძებნოს ერთი სამიზნე ობიექტი. თუ გსურთ მრავალი უნიკალური ობიექტის იდენტიფიცირება, თითოეული მათგანისთვის დაგჭირდებათ გაწვრთნილი კასკადი. ამ შემთხვევაში, მე ვვარჯიშებდი 50 – მდე სხვადასხვა კასკადს უნიკალური ვარსკვლავებისთვის, ისეთი ნაკრების შესაქმნელად, რომელიც დაფარავდა ჩრდილოეთ ციურ ნახევარსფეროს.
  6. დაბოლოს, გამოიყენება გამოვლენის პროგრამა, რომელიც აწარმოებს ნაკრების თითოეულ კასკადს შეყვანის სურათის წინააღმდეგ. კასკადი ეძებს მოცემულ სამიზნე ობიექტს შეყვანის სურათში.
  7. წარმატების შემთხვევაში, სამიზნე ობიექტი იდენტიფიცირდება შეყვანის სურათში.

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

ნაბიჯი 4: უარყოფითი და დადებითი

ნეგატივები

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

დადებითი

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

ნაბიჯი 5: სტელარიუმის კონტროლი

სტელარიუმის კონტროლი
სტელარიუმის კონტროლი
სტელარიუმის კონტროლი
სტელარიუმის კონტროლი

GitHub საცავის Stellarium Scripts საქაღალდე შეიცავს სამ პროგრამას, რომელიც მე დავწერე Stellarium– ის გამოყენების გასაკონტროლებლად. მათი გამოსაყენებლად, განათავსეთ ისინი თქვენი Stellarium install საქაღალდის სკრიპტების საქაღალდეში. მათი გასაშვებად, თქვენ შეგიძლიათ გახსნათ სკრიპტების ფანჯარა სტელარიუმის მენიუდან, ან უბრალოდ ორმაგი დაწკაპუნებით პროგრამის სკრიპტების საქაღალდეში, რომელიც გაუშვებს სტელარიუმს და დაუყოვნებლივ გაუშვებს არჩეულ პროგრამას.

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

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

ნაბიჯი 6: სარაკეტო კაცი

სარაკეტო კაცი
სარაკეტო კაცი

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

ელტონ

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

ნაბიჯი 7: ფიდუციალური მარკერები

ფიდუციალური მარკერები
ფიდუციალური მარკერები

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

ნაბიჯი 8: კასკადების გამოყენება

კასკადების გამოყენება
კასკადების გამოყენება

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

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

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

ნაბიჯი 9: როგორ შეინარჩუნოთ პოზიტიური დამოკიდებულება ცრუ პოზიტივის მიმართ

როგორ შევინარჩუნოთ პოზიტიური დამოკიდებულება ცრუ პოზიტივის შესახებ
როგორ შევინარჩუნოთ პოზიტიური დამოკიდებულება ცრუ პოზიტივის შესახებ
როგორ შევინარჩუნოთ პოზიტიური დამოკიდებულება ცრუ პოზიტივის შესახებ
როგორ შევინარჩუნოთ პოზიტიური დამოკიდებულება ცრუ პოზიტივის შესახებ

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

Cascade_test19.py პროგრამა GitHub repo– ს Star Identification საქაღალდეში იყენებს ორ მეთოდს შედეგების დასალაგებლად. უპირველეს ყოვლისა, detectMultiScale ფუნქცია ადგენს შედეგის მინიმალურ და მაქსიმალურ ზომას, რაც გონივრულია, როგორც ფანჯარაში სამიზნე ვარსკვლავის ნიმუშის სავარაუდო ზომა (მოცემული ლინზებისა და გადიდებისათვის - ჩემი იმიტირებული სტელარიუმის სურათები იყენებენ თვისებებს Raspberry Pi V2 კამერა) ცნობილია. მეორეც, კოდი შეარჩევს შედეგს ყველაზე დიდი შემოსაზღვრული ყუთით (წინა ლიმიტებში). ტესტირებისას, ეს აღმოჩნდა ნამდვილი დადებითი. მესამე, პროგრამა ადგენს მინიმალურ „წონას“(ეფექტურად „ნდობის ღირებულებას“), რომელიც საჭიროა ამ პირადობის მოწმობის ნამდვილ დადებითად განსახილველად. ამ მეთოდით, კასკადები ეფექტური იყო სწორი შედეგის მოსაძებნად.

ვარსკვლავური ველის სურათების გარდა, მე ასევე გამოვცადე ეს ჩემი მაგიდის სურათებთან შედარებით, ვვარჯიშობ კასკადებს ჩემი ნოუთბუქის, ჭიქის და ა.შ. ზემოაღნიშნული მეთოდები კარგად მუშაობდა ყველა გარემოებაში, რაც გამამხნევებელი იყო.

ნაბიჯი 10: დისკუსია

დისკუსია
დისკუსია
დისკუსია
დისკუსია
დისკუსია
დისკუსია

გაუმჯობესების სფეროები

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

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

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

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

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

ნაბიჯი 11: ბოლო სიტყვა

Ბოლო სიტყვა
Ბოლო სიტყვა

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

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

კოსმოსური გამოწვევა
კოსმოსური გამოწვევა
კოსმოსური გამოწვევა
კოსმოსური გამოწვევა

მეორე ადგილი კოსმოსურ გამოწვევაში

გირჩევთ: