Τα μοντέλα ταξινόμησης εικόνων που έχουμε εξετάσει μέχρι τώρα λαμβάνουν μια εικόνα και παράγουν ένα κατηγορηματικό αποτέλεσμα, όπως η κατηγορία 'αριθμός' σε ένα πρόβλημα MNIST. Ωστόσο, σε πολλές περιπτώσεις δεν θέλουμε απλώς να γνωρίζουμε ότι μια εικόνα απεικονίζει αντικείμενα - θέλουμε να μπορούμε να προσδιορίσουμε την ακριβή τους θέση. Αυτό ακριβώς είναι το νόημα της ανίχνευσης αντικειμένων.
Εικόνα από ιστοσελίδα YOLO v2
Ας υποθέσουμε ότι θέλουμε να βρούμε μια γάτα σε μια εικόνα. Μια πολύ αφελής προσέγγιση για την ανίχνευση αντικειμένων θα ήταν η εξής:
- Διασπάστε την εικόνα σε έναν αριθμό πλακιδίων.
- Εκτελέστε ταξινόμηση εικόνας σε κάθε πλακίδιο.
- Τα πλακίδια που δίνουν αρκετά υψηλή ενεργοποίηση μπορούν να θεωρηθούν ότι περιέχουν το αντικείμενο που αναζητούμε.
Εικόνα από Exercise Notebook
Ωστόσο, αυτή η προσέγγιση απέχει πολύ από το ιδανικό, καθώς επιτρέπει στον αλγόριθμο να εντοπίσει το πλαίσιο του αντικειμένου πολύ αόριστα. Για πιο ακριβή εντοπισμό, πρέπει να εκτελέσουμε κάποιο είδος παλινδρόμησης για να προβλέψουμε τις συντεταγμένες των πλαισίων - και για αυτό, χρειαζόμαστε συγκεκριμένα σύνολα δεδομένων.
Αυτό το άρθρο παρέχει μια εξαιρετική εισαγωγή στην ανίχνευση σχημάτων.
Μπορεί να συναντήσετε τα εξής σύνολα δεδομένων για αυτήν την εργασία:
- PASCAL VOC - 20 κατηγορίες
- COCO - Common Objects in Context. 80 κατηγορίες, πλαίσια και μάσκες τμηματοποίησης
Ενώ για την ταξινόμηση εικόνων είναι εύκολο να μετρήσουμε πόσο καλά αποδίδει ο αλγόριθμος, για την ανίχνευση αντικειμένων πρέπει να μετρήσουμε τόσο την ορθότητα της κατηγορίας όσο και την ακρίβεια της προβλεπόμενης θέσης του πλαισίου. Για το τελευταίο, χρησιμοποιούμε τη λεγόμενη Intersection over Union (IoU), η οποία μετρά πόσο καλά δύο πλαίσια (ή δύο αυθαίρετες περιοχές) επικαλύπτονται.
Εικόνα 2 από αυτό το εξαιρετικό άρθρο για το IoU
Η ιδέα είναι απλή - διαιρούμε την περιοχή της τομής μεταξύ δύο σχημάτων με την περιοχή της ένωσής τους. Για δύο πανομοιότυπες περιοχές, το IoU θα είναι 1, ενώ για εντελώς ασύνδετες περιοχές θα είναι 0. Διαφορετικά, θα κυμαίνεται από 0 έως 1. Συνήθως λαμβάνουμε υπόψη μόνο εκείνα τα πλαίσια για τα οποία το IoU είναι πάνω από μια συγκεκριμένη τιμή.
Ας υποθέσουμε ότι θέλουμε να μετρήσουμε πόσο καλά αναγνωρίζεται μια δεδομένη κατηγορία αντικειμένων
- Εξετάζουμε την καμπύλη Precision-Recall που δείχνει την ακρίβεια ανάλογα με την τιμή του κατωφλίου ανίχνευσης (από 0 έως 1).
- Ανάλογα με το κατώφλι, θα εντοπιστούν περισσότερα ή λιγότερα αντικείμενα στην εικόνα, και θα έχουμε διαφορετικές τιμές ακρίβειας και ανάκλησης.
- Η καμπύλη θα μοιάζει με αυτή:
Εικόνα από NeuroWorkshop
Η μέση ακρίβεια για μια δεδομένη κατηγορία
Θα εξετάσουμε μόνο εκείνες τις ανιχνεύσεις για τις οποίες το IoU είναι πάνω από μια συγκεκριμένη τιμή. Για παράδειγμα, στο σύνολο δεδομένων PASCAL VOC συνήθως
Εικόνα από NeuroWorkshop
Η κύρια μετρική για την Ανίχνευση Αντικειμένων ονομάζεται Mean Average Precision, ή mAP. Είναι η τιμή της Μέσης Ακρίβειας, μέσος όρος σε όλες τις κατηγορίες αντικειμένων, και μερικές φορές επίσης πάνω από το
Υπάρχουν δύο ευρείες κατηγορίες αλγορίθμων ανίχνευσης αντικειμένων:
- Region Proposal Networks (R-CNN, Fast R-CNN, Faster R-CNN). Η βασική ιδέα είναι να δημιουργηθούν Regions of Interests (ROI) και να εκτελεστεί CNN πάνω τους, αναζητώντας μέγιστη ενεργοποίηση. Είναι κάπως παρόμοιο με την αφελή προσέγγιση, με τη διαφορά ότι τα ROI δημιουργούνται με πιο έξυπνο τρόπο. Ένα από τα κύρια μειονεκτήματα αυτών των μεθόδων είναι ότι είναι αργές, επειδή απαιτούν πολλές περάσεις του ταξινομητή CNN πάνω από την εικόνα.
- One-pass (YOLO, SSD, RetinaNet) μέθοδοι. Σε αυτές τις αρχιτεκτονικές σχεδιάζουμε το δίκτυο να προβλέπει τόσο τις κατηγορίες όσο και τα ROI σε μία μόνο περά.
Το R-CNN χρησιμοποιεί Selective Search για να δημιουργήσει ιεραρχική δομή περιοχών ROI, οι οποίες στη συνέχεια περνούν από εξαγωγείς χαρακτηριστικών CNN και ταξινομητές SVM για να προσδιοριστεί η κατηγορία του αντικειμένου, και γραμμική παλινδρόμηση για να προσδιοριστούν οι συντεταγμένες του bounding box. Επίσημο Άρθρο
Εικόνα από van de Sande et al. ICCV’11
Εικόνες από αυτό το άρθρο
Αυτή η προσέγγιση είναι παρόμοια με το R-CNN, αλλά οι περιοχές ορίζονται αφού έχουν εφαρμοστεί τα επίπεδα συνελικτικής.
Εικόνα από το Επίσημο Άρθρο, arXiv, 2015
Η βασική ιδέα αυτής της προσέγγισης είναι να χρησιμοποιηθεί ένα νευρωνικό δίκτυο για να προβλέψει τα ROI - το λεγόμενο Region Proposal Network. Άρθρο, 2016
Εικόνα από το επίσημο άρθρο
Αυτός ο αλγόριθμος είναι ακόμα πιο γρήγορος από το Faster R-CNN. Η βασική ιδέα είναι η εξής:
- Εξάγουμε χαρακτηριστικά χρησιμοποιώντας ResNet-101.
- Τα χαρακτηριστικά επεξεργάζονται από Position-Sensitive Score Map. Κάθε αντικείμενο από
$C$ κατηγορίες διαιρείται σε$k\times k$ περιοχές, και εκπαιδεύουμε το δίκτυο να προβλέπει μέρη αντικειμένων. - Για κάθε μέρος από τις
$k\times k$ περιοχές, όλα τα δίκτυα ψηφίζουν για τις κατηγορίες αντικειμένων, και η κατηγορία αντικειμένου με τη μέγιστη ψήφο επιλέγεται.
Εικόνα από επίσημο άρθρο
Το YOLO είναι ένας αλγόριθμος πραγματικού χρόνου με μία μόνο περά. Η βασική ιδέα είναι η εξής:
- Η εικόνα διαιρείται σε
$S\times S$ περιοχές. - Για κάθε περιοχή, CNN προβλέπει
$n$ πιθανά αντικείμενα, τις συντεταγμένες του bounding box και την confidence=πιθανότητα * IoU.
Εικόνα από επίσημο άρθρο
- RetinaNet: επίσημο άρθρο
- Υλοποίηση PyTorch στο Torchvision
- Υλοποίηση Keras
- Ανίχνευση Αντικειμένων με RetinaNet στα δείγματα Keras
- SSD (Single Shot Detector): επίσημο άρθρο
Συνεχίστε τη μάθησή σας στο παρακάτω notebook:
Σε αυτό το μάθημα κάνατε μια γρήγορη περιήγηση σε όλους τους διάφορους τρόπους με τους οποίους μπορεί να επιτευχθεί η ανίχνευση αντικειμένων!
Διαβάστε αυτά τα άρθρα και notebooks σχετικά με το YOLO και δοκιμάστε τα μόνοι σας:
- Καλό άρθρο που περιγράφει το YOLO
- Επίσημη ιστοσελίδα
- Yolo: Υλοποίηση Keras, notebook βήμα-βήμα
- Yolo v2: Υλοποίηση Keras, notebook βήμα-βήμα
- Ανίχνευση Αντικειμένων από τον Nikhil Sardana
- Μια καλή σύγκριση αλγορίθμων ανίχνευσης αντικειμένων
- Ανασκόπηση Αλγορίθμων Deep Learning για Ανίχνευση Αντικειμένων
- Εισαγωγή βήμα-βήμα στους βασικούς αλγορίθμους ανίχνευσης αντικειμένων
- Υλοποίηση του Faster R-CNN σε Python για Ανίχνευση Αντικειμένων











