background image

αρχείο yolov3.weights αποτελεί το προ-εκπαιδευμένο μοντέλο στο COCO dataset

και ουσιαστικά είναι ο πυρήνας του αλγορίθμου YOLO v3. Στο αρχείο yolov3.cfg

ενσωματώνονται όλες οι απαραίτητες ρυθμίσεις για τον αλγόριθμο και στο αρχείο

coco.names περιέχονται τα 80 διαφορετικά ονόματα κλάσεων που χρησιμοποιού-

νται στο COCO dataset. Για τη φόρτωση των αρχείων yolov3.weights και yolov3.cfg

γίνεται χρήση του dnn module της OpenCV. Έχει οριστεί ως backend το DNN

back-end από την OpenCV και ως μονάδα εκτέλεσης του αλγορίθμου η CPU. Να

αναφερθεί ότι θα ήταν δυνατή η εκτέλεση του αλγορίθμου στη GPU εάν δινόταν

ως όρισμα στόχου εκτέλεσης το cv.dnn.DNN_TARGET_OPENCL. Ωστόσο, η τρέ-

χουσα έκδοση OpenCV έχει δοκιμαστεί μόνο με GPU της Intel και θα αλλάξει αυτό-

ματα σε CPU, εάν δεν εντοπιστεί GPU της Intel. Σε επόμενο βήμα καθορίζονται τα

επίπεδα εξόδου που είναι υπεύθυνα για τον προσδιορισμό του αντικειμένου που

εντοπίζεται χρησιμοποιώντας τις συναρτήσεις net.getUnconnectedOutLayers() και

net.getLayerNames().

Αφού έχουν εκτελεστεί όλες οι απαραίτητες εντολές παραμετροποίησης, ακολου-

θεί η μετατροπή κάθε καρέ εικόνας από τη ροή video σε blob μέσω της συνάρτησης

blobFromImage() για το νευρωνικό δίκτυο. Το blob είναι μια συλλογή από frames

με τις ίδιες διαστάσεις (ύψος, πλάτος) και το ίδιο βάθος (αριθμών χρωματικών κα-

ναλιών) που έχουν προ-επεξεργαστεί με τον ίδιο τρόπο. Σε αυτήν τη διαδικασία,

κλιμακώνονται οι τιμές εικονοστοιχείων στο εύρος τιμών 0 έως 1 χρησιμοποιώντας

συντελεστή κλίμακας 0.00392 (1/255). Επίσης γίνεται υποβάθμιση του μεγέθους της

εικόνας σε (320x320) χωρίς περικοπή, το οποίο θα επιτρέψει αύξηση της ταχύτητας

αναγνώρισης με σχετική απώλεια ακρίβειας.

Για την αναγνώριση των αντικειμένων εκτελείται η συνάρτηση forward(). Ως εί-

σοδος απαιτείται το τελικό επίπεδο το οποίο θα διατρεχθεί από ολόκληρο το δίκτυο.

Προκείμενου να προσδιοριστεί το τελευταίο επίπεδο του δικτύου χρησιμοποιείται

η συνάρτηση getUnconnectedOutLayers() που δίνει τα ονόματα των μη συνδεδεμέ-

νων επιπέδων εξόδου, τα οποία είναι ουσιαστικά τα τελευταία επίπεδα του δικτύου.

Στη συνέχεια, εκτελείται πέρασμα εμπρός (forward pass) του δικτύου για να ληφθεί

έξοδος από τα επίπεδα εξόδου.

112