Πίνακας περιεχομένων:
- Βήμα 1: Απαιτήσεις
- Βήμα 2: Εγκατάσταση VPS
- Βήμα 3: Η διαδικασία
- Βήμα 4: Αρνητικά και θετικά
- Βήμα 5: Έλεγχος Stellarium
- Βήμα 6: Rocket Man
- Βήμα 7: Εμπιστευτικοί δείκτες
- Βήμα 8: Χρησιμοποιώντας τους καταρράκτες
- Βήμα 9: Πώς να μείνετε θετικοί σχετικά με τα ψεύτικα θετικά
- Βήμα 10: Συζήτηση
- Βήμα 11: Τελευταία λέξη
Βίντεο: Αναγνώριση αστεριού χρησιμοποιώντας το όραμα υπολογιστή (OpenCV): 11 βήματα (με εικόνες)
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-13 06:57
Αυτό το διδακτικό θα σας περιγράψει πώς να δημιουργήσετε ένα πρόγραμμα όρασης υπολογιστή για αυτόματη αναγνώριση μοτίβων αστεριών σε μια εικόνα. Η μέθοδος χρησιμοποιεί τη βιβλιοθήκη OpenCV (Open-Source Computer Vision) για να δημιουργήσει ένα σύνολο καταρτισμένων καταρράκτη HAAR που μπορούν να χρησιμοποιηθούν για την αναγνώριση συγκεκριμένων μοτίβων αστεριών. Αν και αυτός ο οδηγός είναι στο πλαίσιο της αναγνώρισης μοτίβου αστεριού, η διαδικασία OpenCV που περιγράφω μπορεί να εφαρμοστεί και σε άλλες εφαρμογές - οπότε ελπίζουμε ότι θα είναι χρήσιμος!
Το έργο συνοψίζεται σε αυτό το βίντεο:
Γιατί έγραψα αυτό το διδακτικό;
- Η μέθοδος αναγνώρισης μοτίβου αστεριού που αναπτύσσω πιστεύω ότι έχει τη δυνατότητα να εφαρμοστεί σε ένα ευρύ φάσμα ερασιτεχνικών αστρονομικών έργων - είτε πρόκειται για προσανατολισμό τηλεσκοπίου, αυτόματη ταξινόμηση εικόνας ή ακόμη και τελικά για αισθητήρα αστεριών σε ανοιχτό κώδικα ή ερασιτεχνικό CubeSat.
- Υπάρχουν πολλές καλές οδηγίες OpenCV εδώ, αλλά παρόλα αυτά μου φάνηκε μια πολύ δύσκολη διαδικασία να μάθω αρχικά, οπότε ελπίζω ότι αυτός ο οδηγός θα είναι μια καλή αναφορά για άλλα άτομα που θέλουν να εκπαιδεύσουν τους ταξινομητές HAAR για OpenCV (όχι απαραίτητα για αστρονομία ίσως!).
- Ο ίδιος δεν είμαι εκπαιδευμένος προγραμματιστής, οπότε αυτό το έργο ώθησε πραγματικά την κατανόησή μου. Ας ελπίσουμε ότι γράφοντας αυτό το Instructable, άλλοι, πιο έμπειροι, κατασκευαστές θα εμπνευστούν να δουλέψουν πάνω σε αυτή την ιδέα και να συνεισφέρουν στο GitHub και σε αυτό το διδακτικό μέσω σχολίων σε αυτήν τη σελίδα.
- Η ερασιτεχνική αστρονομία και οι μέθοδοι προσανατολισμού είναι ένα μεγάλο ενδιαφέρον μου, δείτε την προηγούμενη διδακτική μου πρόταση με Arduino Star-Finder for Telescopes.
Η φωτογραφία εξωφύλλου αυτού του Instructable είναι ενός σχεδίου 3U CubeSat που συμμετείχα στο σχεδιασμό. Το χρησιμοποίησα για να επεξηγήσω αυτό το διδακτικό, καθώς η αρχική εφαρμογή του συστήματος αναγνώρισης αστεριών του υπολογιστή ήταν για έναν αισθητήρα προσανατολισμού για ερασιτεχνικά κατασκευασμένα CubeSats, χρησιμοποιώντας μια κάμερα Raspberry Pi V2. Υπάρχουν πολλές άλλες πιθανές εφαρμογές αναγνώρισης αστεριού στον υπολογιστή, πιστεύω, αλλά νομίζω ότι αυτή είναι η πιο cool!
Ένα μικρό γλωσσάρι:
Η εκμάθηση της όρασης του υπολογιστή γίνεται πιο αργή από τον ηλίθιο όρο των ειδικών όρων που χρησιμοποιούνται, οπότε θα ορίσω μερικούς για εμάς εδώ:
Cascade - Ένας ταξινομητής που έχει εκπαιδευτεί για τον προσδιορισμό ενός συγκεκριμένου αντικειμένου στόχου.
Fiducial Marker - Ένας δείκτης που προσθέτει ένα σημείο οπτικής αναφοράς σε μια εικόνα.
HAAR - Τα χαρακτηριστικά που μοιάζουν με Haar είναι ένας τύπος χαρακτηριστικής εικόνας που χρησιμοποιείται για την κατάρτιση ταξινομητών.
OpenCV - Open Source Computer Vision, μια βιβλιοθήκη εργαλείων όρασης υπολογιστή.
Stellarium - Λογισμικό αστρονομίας ανοιχτού κώδικα.
Βήμα 1: Απαιτήσεις
Το OpenCV είναι μια βιβλιοθήκη που βασίζεται στο Linux, οπότε αν και υποτίθεται ότι είναι δυνατό να λειτουργήσει καλά σε Windows, θα έχετε πολύ πιο εύκολο χρόνο να το εκτελέσετε σε περιβάλλον Linux (πάρτε το από μένα και πολλές ημέρες προσπαθώντας να το δουλέψετε πλήρως Windows!). Ως πείραμα, κατέβασα και εκτέλεσα το OpenCV στο Raspberry Pi 3B+, το οποίο ήταν επιτυχές, αν και η κατάρτιση ταξινομητή είναι μια πολύ εντατική διαδικασία RAM, οπότε αν θέλετε να το κάνετε με οποιαδήποτε ταχύτητα, η προτεινόμενη διαδρομή είναι να προσλάβετε έναν εικονικό διακομιστή Linux (το οποίο μπορεί να είναι εκπληκτικά φθηνό στην πραγματικότητα) για μερικές ημέρες/εβδομάδες/μήνες και χρησιμοποιήστε το ως ειδικό περιβάλλον στο οποίο μπορείτε να εκτελέσετε την κατάρτιση ταξινόμησης. Θα μπορείτε να ελέγχετε τον διακομιστή από υπολογιστή με Windows χρησιμοποιώντας έναν υπολογιστή -πελάτη SSH όπως το Putty. Μόλις εκπαιδευτούν οι καταρράκτες χρησιμοποιώντας το VPS, μπορούν να μεταφορτωθούν στον υπολογιστή με Windows και η Python μπορεί να χρησιμοποιηθεί για την εκτέλεση του προγράμματος αναγνώρισης εικόνας σε περιβάλλον Windows.
Εικονικός διακομιστής Linux:
Απαιτείται ένας εικονικός διακομιστής Linux (VPS) για την εκτέλεση των εκπαιδευτικών διαδικασιών του καταρράκτη HAAR. Αρχικά προσέλαβα έναν διακομιστή με 8GB RAM και Ubuntu 16.04.6 (LTS) x64, και αργότερα έναν δεύτερο για να διπλασιάσω τον ρυθμό με τον οποίο θα μπορούσα να εκπαιδεύσω καταρράκτες, αν και θα χρειαστείτε μόνο ένα τουλάχιστον
Λογισμικό:
- Stellarium - αυτό είναι εικονικό λογισμικό πλανητάριου/αστρονομίας, δωρεάν διαθέσιμο. Θα χρησιμοποιηθεί για τη συλλογή προσομοιωμένων εικόνων αστεριών για χρήση σε δοκιμές.
- Putty - Πρόκειται για έναν πελάτη SSH που χρησιμοποιείται για τον έλεγχο του VPS μέσω της γραμμής εντολών.
- WinSCP - αυτό χρησιμοποιείται για την εκτέλεση μεταφοράς αρχείων από τον υπολογιστή με Windows.
Βήμα 2: Εγκατάσταση VPS
Υπάρχει μια μικρή διαδικασία ρύθμισης για να ξεκινήσει το VPS. Την πρώτη φορά μπορεί να χρειαστεί λίγος χρόνος για εσάς, αλλά δεν είναι πολύ δύσκολο αν ακολουθήσετε προσεκτικά τα βήματα. Αυτό το σεμινάριο ήταν μια μεγάλη αναφορά για μένα, θα σας συνιστούσα να το διαβάσετε επίσης ενώ εργάζεστε σε αυτό το διδακτικό. Καλύπτει τις ιδιαιτερότητες των εντολών linux γραμμή προς γραμμή, τις οποίες είναι απαραίτητο να ακολουθήσετε κατά γράμμα.
Σε γενικές γραμμές, η διαδικασία περιλαμβάνει:
- Δημιουργία διακομιστή Linux με σωστή έκδοση Ubuntu.
- Αναβάθμιση και ενημέρωση του διακομιστή.
- Δημιουργία καταλόγου χώρου εργασίας, στον οποίο είναι εγκατεστημένο το OpenCV.
- Εγκατάσταση ορισμένων βασικών, δηλαδή ενός μεταγλωττιστή, διαφόρων βιβλιοθηκών και συνδέσεων Python.
Μετά από αυτό το στάδιο, είστε έτοιμοι να ξεκινήσετε την προετοιμασία για τη διαδικασία εκπαίδευσης.
Βήμα 3: Η διαδικασία
Η όλη διαδικασία της όρασης του υπολογιστή χρησιμοποιώντας καταρράκτες HAAR είναι αρκετά μπερδεμένη στην αρχή, οπότε αυτό το Βήμα περιγράφει τη λογική με λίγο περισσότερες λεπτομέρειες:
Βασική Διαδικασία
- Υπάρχει ένα σύνολο δεδομένων αρνητικής εικόνας, που αποτελείται από αρκετές χιλιάδες εικόνες που δεν περιέχουν το αντικείμενο ενδιαφέροντος. Αυτό θα πρέπει να μεταφορτωθεί στο VPS.
- Δημιουργείται μια ενιαία θετική εικόνα που περιέχει το αντικείμενο ενδιαφέροντος. Αυτό θα πρέπει επίσης να μεταφορτωθεί στο VPS.
- Η μεμονωμένη θετική εικόνα παραμορφώνεται, παραμορφώνεται, περιστρέφεται κ.λπ., από ένα σύνολο επιλεγμένων παραμέτρων και επικαλύπτεται με μια επιλογή αρνητικών εικόνων. Αυτός είναι ένας τεχνητός τρόπος δημιουργίας ενός μεγάλου θετικού συνόλου δεδομένων από μία μόνο εικόνα. (Για άλλες πραγματικές εφαρμογές, όπως η ταυτοποίηση μιας γάτας, μπορείτε απλά να χρησιμοποιήσετε αρκετές χιλιάδες εικόνες γάτας, αλλά αυτή η μέθοδος δεν είναι πάντα κατάλληλη αν δεν έχετε τόσο μεγάλο σύνολο θετικών εικόνων. Η τεχνητή προσέγγιση που χρησιμοποιείται εδώ θα είναι λιγότερο αποτελεσματική, αλλά είναι η μόνη επιλογή για μια περίπτωση χρήσης όπως αυτή).
- Εκτελείται μια εκπαιδευτική διαδικασία, η οποία λειτουργεί σταδιακά. Κάθε στάδιο θα εκπαιδεύσει έναν καταρράκτη για τον εντοπισμό διαφορετικών χαρακτηριστικών τύπου HAAR μέσα στα σύνολα εικόνων. Κάθε στάδιο χρειάζεται εκθετικά περισσότερο χρόνο για να ολοκληρωθεί και η αποτελεσματικότητα του ταξινομητή αυξάνεται κάθε φορά (είναι επίσης δυνατό να προπονηθείτε υπερβολικά για να το γνωρίζετε!).
- Ένας εκπαιδευμένος καταρράκτης θα μπορεί να αναζητήσει ένα μόνο αντικείμενο -στόχο. Εάν επιθυμείτε να προσδιορίσετε πολλά μοναδικά αντικείμενα, θα χρειαστείτε έναν εκπαιδευμένο καταρράκτη για το καθένα. Σε αυτή την περίπτωση, εκπαιδεύτηκα περίπου 50 διαφορετικούς καταρράκτες για μοναδικά αστέρια, για να δημιουργήσω ένα σύνολο που θα μπορούσε να καλύψει το βόρειο ουράνιο ημισφαίριο.
- Τέλος, χρησιμοποιείται ένα πρόγραμμα ανίχνευσης που εκτελεί κάθε καταρράκτη ενός συνόλου σε μια εικόνα εισόδου. Ο καταρράκτης θα αναζητήσει το δεδομένο αντικείμενο -στόχο μέσα στην εικόνα εισόδου.
- Εάν είναι επιτυχές, το αντικείμενο -στόχος θα αναγνωριστεί μέσα στην εικόνα εισόδου.
n.b. εάν χρησιμοποιηθεί για παράδειγμα σε πλαίσιο δορυφορικού προσανατολισμού, μια εικόνα θα καταγραφεί χρησιμοποιώντας μια ενσωματωμένη κάμερα. Τα πιο φωτεινά αστέρια σε αυτήν την εικόνα θα αναγνωριστούν και οι δείκτες επικαλύπτονται σε αυτές τις θέσεις. Αυτή η εικόνα στη συνέχεια παρουσιάζεται στο σύνολο των καταρτισμένων καταρράκτη, που θα ελέγξουν εάν η εικόνα εισόδου περιέχει κάποιο από τα αντικείμενα -στόχους. Εάν ανιχνευθεί ένα πραγματικό θετικό, τότε η γωνιακή θέση ενός γνωστού αστερισμού ανακαλύπτεται σε σχέση με τους άξονες του δορυφορικού σώματος.
Βήμα 4: Αρνητικά και θετικά
Αρνητικά
Μια πραγματικά βασική πτυχή της κατάρτισης είναι να έχετε όσο το δυνατόν μεγαλύτερο σύνολο αρνητικών εικόνων. Μιλάμε για χιλιάδες, ιδανικά δεκάδες χιλιάδες εικόνες. Δεν έχει σημασία τι περιέχουν, ο στόχος είναι απλώς να παρέχουμε ποικιλία οπτικών πληροφοριών. Ο φάκελος Classifier Training περιέχει μια ποικιλία διαφορετικών συνόλων δεδομένων αρνητικών εικόνων που συνέταξα. Αρχικά αυτά αποτελούνταν αποκλειστικά από προσομοιωμένες εικόνες πεδίου αστεριών που συλλέχθηκαν από το Stellarium, αλλά αργότερα αύξησα το σύνολο δεδομένων με όσες τυχαιοποιημένες εικόνες μπορούσα να βρω (ναι, συμπεριλαμβανομένων των φωτογραφιών των διακοπών μου…). Το μεγαλύτερο σύνολο δεδομένων περιλαμβάνει σχεδόν 9000 εικόνες, το οποίο ήταν το μεγαλύτερο που έχω δημιουργήσει μέχρι τώρα. Χρησιμοποιώντας αυτό, θα εξοικονομήσετε τη σύνταξη του δικού σας.
Θετικά
Η θετική εικόνα (αυτό είναι το μοτίβο αστεριού -στόχου που ο καταρράκτης θα εκπαιδευτεί να αναγνωρίζει) ξεκινά ως ένα στιγμιότυπο οθόνης ενός αστεριού στο Stellarium. Στη συνέχεια, ένα πρόγραμμα python προσδιορίζει τα λαμπρότερα αστέρια στην εικόνα και επικαλύπτει δείκτες (που εξηγούνται αργότερα σε αυτό το διδακτικό) σε αυτές τις θέσεις αστεριών. Αυτή η εικόνα στη συνέχεια συρρικνώνεται στα 50x50 pixel. Αυτό είναι μικρό, αλλά ο χρόνος προπόνησης που απαιτείται για τους καταρράκτες θα αυξηθεί εκθετικά καθώς αυξάνεται αυτό το μέγεθος, και έτσι αυτός είναι ένας καλός συμβιβασμός μεταξύ ποιότητας και χρόνου.
Βήμα 5: Έλεγχος Stellarium
Ο φάκελος Stellarium Scripts του αποθετηρίου GitHub περιέχει τρία προγράμματα που έγραψα για τον έλεγχο της χρήσης του Stellarium. Για να τα χρησιμοποιήσετε, τοποθετήστε τα στο φάκελο scripts του φακέλου εγκατάστασης Stellarium. Για να τα εκτελέσετε, μπορείτε να ανοίξετε το παράθυρο των σεναρίων από το μενού Stellarium ή απλώς κάνοντας διπλό κλικ στο πρόγραμμα στο φάκελο σεναρίων, το οποίο θα εκκινήσει το Stellarium και θα εκτελέσει αμέσως το επιλεγμένο πρόγραμμα.
thesis_4 και thesis_5 καταγράφουν περίπου 2000 εικόνες το καθένα από το βόρειο και το νότιο, αντίστοιχα, ουράνια ημισφαίρια. Αυτά χρησιμοποιήθηκαν για τη δημιουργία βάσεων δεδομένων αρνητικών εικόνων, για την εκπαίδευση της θετικής εικόνας έναντι. Η διάκριση μεταξύ βορρά και νότου ήταν ένας απλός τρόπος για να διασφαλιστεί ότι το πρότυπο (θετικό) αστέρι δεν θα ήταν παρόν στο αρνητικό σύνολο δεδομένων εκπαιδεύοντας πρότυπα αστεριών του βόρειου ημισφαιρίου έναντι του συνόλου δεδομένων εικόνας του νότιου ουράνιου ημισφαιρίου και αντίστροφα. (Εάν υπάρχει επίσης μια θετική εικόνα στο σύνολο δεδομένων αρνητικής εικόνας, θα επηρεάσει την ποιότητα του ταξινομητή).
Το thesis_setup είναι επίσης χρήσιμο - αυτό καθιστά το Stellarium κατάλληλο για τη λήψη εικόνων - τις εικόνες που χρησιμοποιούνται για την προσομοίωση μιας προβολής από το διάστημα. Κάνει ενέργειες όπως απόκρυψη μενού, γραμμών πλέγματος, ετικετών κλπ αυτόματα για να σας εξοικονομήσει κάθε φορά που θέλετε να τραβήξετε μια εικόνα.
Βήμα 6: Rocket Man
Οι πρώτοι καταρράκτες που εκπαιδεύτηκα δεν μπόρεσαν να προσδιορίσουν σωστά κανένα μοτίβο αστεριών. Ταν πολύ αναξιόπιστοι και ήταν πολύ επιρρεπείς σε ψευδώς θετικά. Η υπόθεσή μου ήταν ότι ουσιαστικά οι εικόνες του αστρικού πεδίου από το Stellarium (βασικά μόνο λευκές κουκκίδες σε μαύρο φόντο) απλώς δεν περιείχαν επαρκείς οπτικές πληροφορίες για να περιέχουν αρκετά χαρακτηριστικά τύπου HAAR για επιτυχημένη κατάρτιση ταξινομητή. Νομίζω ότι ήταν αργά το βράδυ, αλλά αποφάσισα να δοκιμάσω την ιδέα να γράψω ένα πρόγραμμα για να τοποθετήσω αυτόματα μια μικρή μικρογραφία στην τοποθεσία κάθε φωτεινού αστεριού σε μια εικόνα πεδίου αστεριού.
Έλτον
Αυτό ήταν ένα ανόητο τεστ, αλλά προσθέτοντας μια μικρή εικόνα του προσώπου του Έλτον Τζον σε κάθε τοποθεσία με φωτεινά αστέρια, εκπαιδεύοντας τον ταξινομητή έναντι αυτής της θετικής εικόνας και, στη συνέχεια, εκτελώντας τους καταρράκτες στην αρχική εικόνα, ήταν πολύ πιο αποτελεσματικό στη σωστή εύρεση του σωστό μοτίβο. Knewξερα ότι ασχολούμαι με κάτι!
Βήμα 7: Εμπιστευτικοί δείκτες
Παρόλο που οι «Eltons» απέδειξαν τη θεωρία, χρειαζόμουν έναν δείκτη που να έχει πλήρη περιστροφική συμμετρία, έτσι ώστε το μοτίβο του αστεριού να φαίνεται το ίδιο ανεξάρτητα από τον προσανατολισμό που παρουσιάζεται. Δοκίμασα μια σειρά τύπων δεικτών και διαπίστωσα ότι ο τύπος κάτω δεξιά ήταν πιο αποτελεσματικός, με τους ασπρόμαυρους δακτυλίους σε αντίθεση. Το πρόγραμμα python που παρουσιάζεται στον θετικό φάκελο του repo του GitHub δείχνει πώς αναγνωρίζονται τα λαμπρότερα αστέρια σε μια δεδομένη εικόνα και αυτοί οι δείκτες επικαλύπτονται αυτόματα σε αυτές τις θέσεις. Έχουμε δημιουργήσει τώρα μια αναπαράσταση των βασικών προτύπων αστεριών που μπορούν να εκπαιδευτούν ενάντια.
Βήμα 8: Χρησιμοποιώντας τους καταρράκτες
Όταν έχετε εκπαιδεύσει ένα σύνολο καταρράκτη, πρέπει να ξέρετε πώς να τα χρησιμοποιήσετε για να προσδιορίσετε ένα αντικείμενο σε μια εικόνα!
Κοιτάξτε τον φάκελο Star Identification του GitHub, όπου θα βρείτε το πρόγραμμα cascade_test19.py. Αυτό το ελκυστικό πρόγραμμα παίρνει μια σειρά από καταρράκτες από έναν δεδομένο φάκελο και τους εκτελεί όλους σε μια εικόνα εισόδου και αναφέρει τις ανιχνεύσεις που έγιναν. Η συνάρτηση "deteMultiScale" είναι ο πυρήνας αυτής και απαιτεί μια ποικιλία από ορίσματα που καθορίζουν τη διαδικασία ανίχνευσης. Η αλλαγή αυτών είναι κρίσιμης σημασίας για την απόδοση του ταξινομητή καταρράκτη και περισσότερη συζήτηση για αυτό μπορεί να βρεθεί στο επόμενο βήμα, όπου εξετάζουμε τον τρόπο εξάλειψης των ψευδώς θετικών.
Αυτό θα μπορούσε να εφαρμοστεί σε ένα σύστημα δορυφορικού προσανατολισμού συσχετίζοντας την τιμή των εικονοστοιχείων στο κέντρο του πλαισίου οριοθέτησης με την ουράνια συντεταγμένη Ra/Dec του προσδιορισμένου αστέρι και στη συνέχεια συσχετίζοντάς το με τη γωνιακή μετατόπιση από το κέντρο της εικόνας (κάμερα άξονας). Από αυτό, χρησιμοποιώντας μια κατανόηση της παραμόρφωσης του φακού (κατά προσέγγιση σε μια γνωμική προβολή), η γωνία του δορυφόρου μπορεί να βρεθεί από δύο μόνο θετικές ταυτοποιήσεις.
Βήμα 9: Πώς να μείνετε θετικοί σχετικά με τα ψεύτικα θετικά
Αυτές οι δύο εικόνες δείχνουν τα αποτελέσματα της δοκιμής του σετ καταρράκτη με την ίδια εικόνα, αλλά με διαφορετικές παραμέτρους. Σαφώς, η πρώτη εικόνα περιέχει την πραγματική ταυτοποίηση, αλλά και έναν τεράστιο αριθμό ψευδώς θετικών, ενώ η δεύτερη εικόνα περιέχει μόνο τη σωστή αναγνώριση.
Το πρόγραμμα cascade_test19.py στο φάκελο Star Identification του repo του GitHub χρησιμοποιεί δύο μεθόδους για να ταξινομήσει τα αποτελέσματα. Πρώτον, το detectMultiScale functon ορίζει ένα Miminum και Maximum size του αποτελέσματος που μπορεί να βρεθεί, το οποίο είναι λογικό, ως το κατά προσέγγιση μέγεθος του μοτίβου αστεριού -στόχου εντός του παραθύρου (για τον δεδομένο φακό και μεγέθυνση - οι προσομοιωμένες εικόνες Stellarium μου χρησιμοποιούν τις ιδιότητες του η κάμερα Raspberry Pi V2) είναι γνωστή. Δεύτερον, ο κώδικας θα επιλέξει το αποτέλεσμα με το μεγαλύτερο πλαίσιο οριοθέτησης (εντός των προηγούμενων ορίων). Στις δοκιμές, αυτό βρέθηκε να είναι το πραγματικό θετικό. Τρίτον, το πρόγραμμα ορίζει ένα ελάχιστο «επίπεδοWeights» (ουσιαστικά «τιμή εμπιστοσύνης») που απαιτείται για να αντιμετωπιστεί αυτό το αναγνωριστικό ως πραγματικό θετικό. Με αυτή τη μέθοδο, οι καταρράκτες ήταν αποτελεσματικοί στην εύρεση του σωστού αποτελέσματος.
Εκτός από τις εικόνες του αστρικού πεδίου, το δοκίμασα επίσης με εικόνες του γραφείου μου, για παράδειγμα, εκπαιδεύοντας καταρράκτες για να αναγνωρίσω το σημειωματάριό μου, κούπα κλπ., Για να εξασκηθώ στην εξάλειψη των ψευδώς θετικών. Οι παραπάνω μέθοδοι λειτούργησαν καλά σε όλες τις συνθήκες που ήταν ενθαρρυντικές.
Βήμα 10: Συζήτηση
Τομείς βελτίωσης
Αυτό ήταν ένα πολύπλοκο έργο για μένα και πραγματικά ώθησε την κατανόησή μου για το θέμα. Συμμετείχε συνολικά αρκετούς μήνες σχεδόν πλήρους απασχόλησης για να φτάσω το έργο σε αυτό το σημείο, όταν μπορώ να το μοιραστώ μαζί σας, αλλά πρέπει να γίνουν πολλά ακόμη για να βελτιωθεί η απόδοση της μεθόδου. Ως έχει, μπορεί να λειτουργήσει καλά σε ορισμένους περιορισμούς. Εργάστηκα για να προσδιορίσω ποιες περιοχές χρειάζονται πρόσθετη εργασία και ελπίζω ότι θα μπορέσω να αφιερώσω χρόνο για την αντιμετώπισή τους τους επόμενους μήνες. Αυτοί είναι:
Γωνία - Αυτή είναι μια πολύπλοκη περιοχή, η ιδέα ότι τα αποτελέσματα των ταξινομητών πρέπει να είναι αμετάβλητα περιστροφικά, δηλαδή, πρέπει να αξιολογεί με αξιοπιστία το μοτίβο του αστέρα -στόχου, ανεξάρτητα από τη γωνία στην οποία παρουσιάζεται η εικόνα που περιέχει το αστέρι -στόχος. Ένας καταρράκτης που εκπαιδεύεται χρησιμοποιώντας μια εικόνα εισόδου σε έναν μόνο προσανατολισμό δεν θα μπορεί να προσδιορίσει αυτήν την εικόνα σε τυχαίους προσανατολισμούς, οπότε η διακύμανση της θετικής γωνίας εικόνας πρέπει να εισαχθεί στη διαδικασία εκπαίδευσης για να εκπαιδεύσει καταρράκτες που μπορούν να δεχτούν ένα εύρος στις γωνίες εισόδου. Η παράμετρος «maxzangle» στις εντολές κατάρτισης καταρράκτη παίρνει ένα επιχείρημα σε ακτίνια, το οποίο ελέγχει ένα όριο της γωνίας που η θετική εικόνα εισόδου θα επικαλυφθεί στις αρνητικές εικόνες που παρέχονται, οπότε το σύνολο θετικής εικόνας που προκύπτει θα περιέχει μια σειρά προσανατολισμών η θετική εικόνα. Ωστόσο, καθώς αυξάνεται αυτό το maxzangle, ο λόγος αποδοχής (σε γενικές γραμμές, ποιότητα) του καταρράκτη θα μειωθεί απότομα. Πιστεύω ότι η λύση είναι να εκπαιδεύσουμε καταρράκτες χρησιμοποιώντας μια σημαντικά μεγαλύτερη βάση δεδομένων αρνητικών εικόνων από αυτήν που χρησιμοποιούσα για να διασφαλίσω ότι μπορεί να δημιουργηθεί ένας καλής ποιότητας ταξινομητής καταρράκτη ακόμη και ενσωματώνοντας ένα μεγάλο εύρος προσανατολισμού.
Μια άλλη πιθανή λύση θα ήταν να εκπαιδεύσουμε έναν αριθμό καταρρακτών για έναν συγκεκριμένο στόχο, κάθε καταρράκτης να διέπει ένα ορισμένο τμήμα μιας πλήρους περιστροφής 360 μοιρών. Με αυτόν τον τρόπο η ποιότητα κάθε καταρράκτη μπορεί να διατηρηθεί σε υψηλό επίπεδο, αλλά από την άλλη πλευρά αυτό θα έχει ως αποτέλεσμα πολύ περισσότερους καταρράκτες, και ως εκ τούτου η διαδικασία αναγνώρισης θα είναι πιο αργή.
Η παράμετρος "levelWeight", η οποία είναι μια τιμή που παρέχεται από τη συνάρτηση "deteMultiScale", είναι ανάλογη με μια τιμή εμπιστοσύνης στην ανίχνευση που έχει πραγματοποιηθεί. Μελετώντας αυτό, δημιουργήθηκε το παραπάνω γράφημα, το οποίο δείχνει πώς η εμπιστοσύνη της θετικής ταύτισης μειώνεται απότομα καθώς ο προσανατολισμός της εικόνας αυξάνεται προς οποιαδήποτε κατεύθυνση, επιβεβαιώνοντας τις σκέψεις ότι αυτό είναι ένα αδύναμο σημείο.
Τοποθέτηση εικονοστοιχείων - Ένα πολύ πιο απλό, αλλά και προβληματικό σημείο είναι αυτό της τοποθέτησης εικονοστοιχείων, που απεικονίζεται με τις ακόλουθες δύο εικόνες, που δείχνουν μεγεθυμένη εικόνα μιας εικόνας αστεριού, έτσι ώστε να φαίνονται καθαρά τα μεμονωμένα εικονοστοιχεία δύο αστέρων. Η διαδικασία διάβρωσης που χρησιμοποιείται στο πρόγραμμα για να καθαρίσει όλα εκτός από τα πιο λαμπερά αστέρια από την εικόνα θα διατηρήσει το πρώτο αστέρι και θα απορρίψει το δεύτερο, παρά το ότι έχουν ίσες φωτεινότητες. Ο λόγος για αυτό είναι ότι το πρώτο αστέρι είναι κεντραρισμένο σε ένα pixel, ενώ το δεύτερο δεν είναι ως τέτοιο. Η συνάρτηση διάβρωσης απογυμνώνει ομόκεντρους δακτυλίους εικονοστοιχείων από το κεντρικό εικονοστοιχείο μιας ομάδας, και έτσι το πρώτο αστέρι θα έχει το κεντρικό εικονοστοιχείο να επιβιώνει από τη λειτουργία διάβρωσης, αλλά το δεύτερο αστέρι θα αφαιρεθεί εντελώς από την εικόνα. Επομένως, εμπιστευτικοί δείκτες θα τοποθετηθούν μόνο στο πρώτο αστέρι και όχι στο δεύτερο. Αυτό θα προκαλέσει ασυνέπειες σχετικά με το ποια φωτεινά αστέρια σε ένα συγκεκριμένο πεδίο αστέρων θα λάβουν δείκτες (και επομένως συγκρίνονται με τους εκπαιδευμένους ταξινομητές) - επομένως είναι πιθανό να μην είναι δυνατή μια σωστή θετική παρατήρηση.
Βήμα 11: Τελευταία λέξη
Σας ευχαριστώ που διαβάσατε το διδακτικό μου, ελπίζω να βρήκατε αυτό το έργο ενδιαφέρον. Beenταν μια πολύ ενδιαφέρουσα διαδικασία που το δούλεψε, έχει περάσει πάνω από ένας χρόνος από τότε που άρχισα να εργάζομαι πάνω στην ιδέα, και με ενθαρρύνουν τα αποτελέσματα σε αυτό το σημείο. Από τη βιβλιογραφία που διάβασα, αυτή είναι μια αρκετά πρωτότυπη έννοια και με περισσότερη ανάπτυξη μπορεί σίγουρα να εφαρμοστεί σε μια σειρά εφαρμογών για ερασιτεχνική αστρονομία ή και περισσότερο.
Αυτό το έργο ήταν μια απότομη καμπύλη εκμάθησης για μένα, και έτσι ελπίζω ότι κάποιοι αναγνώστες με περισσότερη εμπειρία προγραμματισμού μπορεί να εμπνευστούν για να συμβάλουν στη συνέχιση του έργου μέσω της σελίδας GitHub, και μπορούμε να συνεχίσουμε να αναπτύσσουμε αυτό το εργαλείο ανοιχτού κώδικα. Ανυπομονώ να διαβάσω τυχόν σχόλια που έχετε, αλλά μην κάνετε πολλές δύσκολες ερωτήσεις!
Δρομέας στην πρόκληση του διαστήματος