ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ. Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA.

Σχετικά έγγραφα
4. ΚΕΦΑΛΑΙΟ ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΥ FOURIER

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Άσκηση 3 Υπολογισμός του μέτρου της ταχύτητας και της επιτάχυνσης

ΦΙΛΤΡΟ KALMAN ΔΙΑΚΡΙΤΟΥ ΧΡΟΝΟΥ

Σήματα και Συστήματα. Διάλεξη 9: Μελέτη ΓΧΑ Συστημάτων με τον Μετασχηματισμό Fourier. Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής

E[ (x- ) ]= trace[(x-x)(x- ) ]

Αριθμητική Ανάλυση και Εφαρμογές

Ηλεκτρομαγνητισμός. Μαγνητικό πεδίο. Νίκος Ν. Αρπατζάνης

Σήματα και Συστήματα. Διάλεξη 13: Μελέτη ΓΧΑ Συστημάτων με τον Μετασχηματισμό Laplace. Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής

Αριθμητικές μέθοδοι σε ταλαντώσεις μηχανολογικών συστημάτων

Τμήμα Τεχνολογίας Τροφίμων. Ανόργανη Χημεία. Ενότητα 10 η : Χημική κινητική. Δρ. Δημήτρης Π. Μακρής Αναπληρωτής Καθηγητής.

I. ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ. math-gr

ΚΕΦΑΛΑΙΟ ΟΡΙΖΟΝΤΙΑ ΒΟΛΗ ΘΕΩΡΙΑ

Συστήματα συντεταγμένων

4. ΚΕΦΑΛΑΙΟ ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΥ FOURIER

1. ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB... 13

2 Η ΠΡΟΟΔΟΣ. Ενδεικτικές λύσεις κάποιων προβλημάτων. Τα νούμερα στις ασκήσεις είναι ΤΥΧΑΙΑ και ΟΧΙ αυτά της εξέταση

Αρχές κωδικοποίησης. Τεχνολογία Πολυμέσων και Πολυμεσικές Επικοινωνίες 08-1

Σήματα και Συστήματα. Διάλεξη 10: Γραμμικά Φίλτρα. Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά.

Ο μετασχηματισμός Fourier

ΠΕΡΙΕΧΟΜΕΝΑ Υλικό και Λογισμικό Αρχιτεκτονική Υπολογιστών Δομή, Οργάνωση και Λειτουργία Υπολογιστών 6

2. Ανάλυση και Σύνθεση κυματομορφών με την μέθοδο Fourier

Φυσική για Μηχανικούς

ΠΕΡΙΕΧΟΜΕΝΑ. ΠΡΟΛΟΓΟΣ... vii ΠΕΡΙΕΧΟΜΕΝΑ... ix ΓΕΝΙΚΗ ΒΙΒΛΙΟΓΡΑΦΙΑ... xv. Κεφάλαιο 1 ΓΕΝΙΚΕΣ ΕΝΝΟΙΕΣ ΑΠΟ ΤΗ ΣΤΑΤΙΣΤΙΚΗ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Υπολογίζουμε εύκολα τον αντίστροφο Μετασχηματισμό Fourier μιας συνάρτησης χωρίς να καταφεύγουμε στην εξίσωση ανάλυσης.

Τετραγωνικά μοντέλα. Τετραγωνικό μοντέλο συνάρτησης. Παράδειγμα τετραγωνικού μοντέλου #1. Παράδειγμα τετραγωνικού μοντέλου #1

ΦΥΣΙΚΗ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Σερρών Τμήμα Πληροφορικής & Επικοινωνιών Σήματα και Συστήματα

Φυσική για Μηχανικούς

ΒΙΟΜΗΧΑΝΙΚΑ ΗΛΕΚΤΡΟΝΙΚΑ

6. ΚΕΦΑΛΑΙΟ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΣ LAPLACE

Κεφάλαιο 8. Οπτικοποίηση Απαλοιφή

9. Συστολικές Συστοιχίες Επεξεργαστών

Εισαγωγή στην Στατιστική (ΔΕ200Α-210Α)

Η Επιτάχυνση. η τα- χύτητά του ( Σχήμα 1 ). Από τον ορισμό της ταχύτητας θα ισχύει (3)

Μαθηματική Εισαγωγή Συναρτήσεις

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

All Pairs Shortest Path

17-Φεβ-2009 ΗΜΥ Ιδιότητες Συνέλιξης Συσχέτιση

ΔΙΑΧΕΙΡΙΣΗ ΥΔΑΤΙΚΩΝ ΠΟΡΩΝ

Μάθημα 5: Χαρακτηριστικά της Κ.Μ.Ε.

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΔΕΟ13 - Επαναληπτικές Εξετάσεις 2010 Λύσεις

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 8 Επεξεργασία Σήματος με την Ανάλυση Fourier. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

Αριθμητική Ανάλυση & Εφαρμογές

Σφαίρα σε ράγες: Η συνάρτηση Lagrange. Ν. Παναγιωτίδης

Ψηφιακή Επεξεργασία Σημάτων

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

ΕΡΓΑΣΙΕΣ 4 ου ΚΕΦΑΛΑΙΟΥ. 1 η Ομάδα: Ερωτήσεις πολλαπλής επιλογής

Σφαίρα σε ράγες: Η συνάρτηση Lagrange. Ν. Παναγιωτίδης

ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ. Εργαστήριο 8 ο. Αποδιαμόρφωση PAM-PPM με προσαρμοσμένα φίλτρα

ΘΕΩΡΙΑ Β ΓΥΜΝΑΣΙΟΥ. Μια παράσταση που περιέχει πράξεις με μεταβλητές (γράμματα) και αριθμούς καλείται αλγεβρική, όπως για παράδειγμα η : 2x+3y-8

HMY 429: Εισαγωγή στην Επεξεργασία Ψηφιακών Σημάτων. Διάλεξη 22: Γρήγορος Μετασχηματισμός Fourier Ανάλυση σημάτων/συστημάτων με το ΔΜΦ

Εισαγωγή στην Στατιστική (ΔΕ200Α-210Α)

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου

Μιγαδική ανάλυση Μέρος Α Πρόχειρες σημειώσεις 1. Μιγαδικοί αριθμοί. ΤΕΤΥ Εφαρμοσμένα Μαθηματικά Μιγαδική Ανάλυση Α 1

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 9 Ανάλυση Fourier: Από τη Θεωρία στην Πρακτική Εφαρμογή των Μαθηματικών

Τυπικές χρήσεις της Matlab

Ψηφιακή Επεξεργασία Σημάτων

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Σερρών Τμήμα Πληροφορικής & Επικοινωνιών Σήματα και Συστήματα

Κεφάλαιο 5. Το Συμπτωτικό Πολυώνυμο

Πρόβλημα 4.9.

Μεταπτυχιακό Πρόγραμμα «Γεωχωρικές Τεχνολογίες» Ψηφιακή Επεξεργασία Εικόνας. Εισηγητής Αναστάσιος Κεσίδης

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Τεχνολογία Πολυμέσων. Ενότητα # 8: Αρχές κωδικοποίησης Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Μαθηματική Εισαγωγή Συναρτήσεις

ΕΙΔΗ ΔΥΝΑΜΕΩΝ ΔΥΝΑΜΕΙΣ ΣΤΟ ΕΠΙΠΕΔΟ

ΕΡΓΑΣΙΕΣ 4 ου ΚΕΦΑΛΑΙΟΥ. 1 η Ομάδα: Ερωτήσεις πολλαπλής επιλογής

Επομένως το εύρος ζώνης του διαμορφωμένου σήματος είναι 2.

Προγραμματισμός Ι (HY120)

1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης

Τετραγωνικά μοντέλα. Τετραγωνικό μοντέλο συνάρτησης. Παράδειγμα τετραγωνικού μοντέλου #1. Παράδειγμα τετραγωνικού μοντέλου #1

Κεφάλαιο 10 Περιστροφική Κίνηση. Copyright 2009 Pearson Education, Inc.

Λειτουργία και Απόδοση του Πρότυπου Ανιχνευτή ΝΕΣΤΩΡ

υναµική Μηχανών Ι Ακαδηµαϊκό έτος : Ε. Μ. Π. Σχολή Μηχανολόγων Μηχανικών - Εργαστήριο υναµικής και Κατασκευών ΥΝΑΜΙΚΗ ΜΗΧΑΝΩΝ Ι - 22.

Σήματα και Συστήματα. Διάλεξη 8: Ιδιότητες του Μετασχηματισμού Fourier. Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής

ΜΕΓΙΣΤΙΚΟΣ ΤΕΛΕΣΤΗΣ 18 Σεπτεμβρίου 2014

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

ΣΥΣΤΗΜΑΤΑ ΠΑΡΑΛΛΗΛΗΣ ΕΠΕΞΕΡΓΑΣΙΑΣ 9o εξάμηνο ΗΜΜΥ, ακαδημαϊκό έτος

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Σερρών Τμήμα Πληροφορικής & Επικοινωνιών Σήματα και Συστήματα

Σήματα και Συστήματα. Διάλεξη 7: Μετασχηματισμός Fourier. Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής

ΠΑΡΟΥΣΙΑΣΗ ΣΤΑΤΙΣΤΙΚΩΝ ΔΕΔΟΜΕΝΩΝ


ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Παραρτήματα. Παράρτημα 1 ο : Μιγαδικοί Αριθμοί

Μελέτη και έλεγχος της διατήρησης της μηχανικής ενέργειας στην ελεύθερη πτώση σώματος. (Ανάλυση video μέσω του Σ.Σ.Λ.Α, LoggerPro της Vernier)

Επίλυση Συστήματος Γραμμικών Διαφορικών Εξισώσεων

ΦΥΣΙΚΗ Ο.Π Β Λ-Γ Λ ΧΡΗΣΤΟΣ ΚΑΡΑΒΟΚΥΡΟΣ ΙΩΑΝΝΗΣ ΤΖΑΓΚΑΡΑΚΗΣ

Συστήµατα και Αλγόριθµοι Πολυµέσων

Κεφάλαιο 2. Διανύσματα και Συστήματα Συντεταγμένων

ΕΛΕΓΧΟΣ ΠΑΡΑΓΩΓΙΚΩΝ ΔΙΕΡΓΑΣΙΩΝ

ΣΤΟΧΑΣΤΙΚΑ ΣΗΜΑΤΑ ΚΑΙ ΕΦΑΡΜΟΓΕΣ

ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

M m l B r mglsin mlcos x ml 2 1) Να εισαχθεί το µοντέλο στο simulink ορίζοντας από πριν στο MATLAB τις µεταβλητές Μ,m,br

Φυσική για Μηχανικούς

Transcript:

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA. Βασιλική Κ. Σιάκκα ΑΕΜ: 6182 Eπιβλέπων: Νικόλαος Π. Πιτσιάνης Επίκουρος Καθηγητής

2

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA Η παρούσα διπλωματική εργασία εκπονήθηκε το ακαδημαϊκό έτος 2011-2012 στο τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών του Αριστοτελείου Πανεπιστημίου Θεσσαλονίκης. Θα ήθελα να ευχαριστήσω ιδιαίτερα τον καθηγητή μου κ. Νίκο Πιτσιάνη για την υπομονή του και για την ευκαιρία που μου προσέφερε να ασχοληθώ με ένα τόσο ενδιαφέρον θέμα, καθώς και για την καθοδήγηση που μου προσέφερε μαζί με τον καθηγητή κ. Γεώργιο Σεργιάδη. Επίσης, ευχαριστώ τον κ. Δημήτριο Αλεξιάδη και τον κ. Αλέξανδρο-Σταύρο Ηλιόπουλο για την πολύτιμη βοήθεια τους. Η εργασία αυτή αφιερώνεται στην οικογένεια μου. Βασιλική Σιάκκα 3

4

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA Περίληψη Το πρόβλημα της εκτίμησης μιας κίνησης (motion estimation) συνίσταται στον προσδιορισμό της ταχύτητας με την οποία κινείται ένα αντικείμενο ή μια επιφάνεια στο πλαίσιο μιας αλληλουχίας εικόνων. Από τη μελέτη της ταχύτητας συνάγονται συμπεράσματα που αφορούν τόσο στο χωρικό όσο και στο χρονικό περιεχόμενο των εικόνων, τα οποία βρίσκουν εφαρμογή στον εντοπισμό και στην αναγνώριση αντικειμένων, στη συμπίεση βίντεο, στην πλοήγηση ρομπότ και στην ανίχνευση κίνησης. Τα τελευταία χρόνια έχουν προταθεί πολυάριθμες μέθοδοι για την εκτίμηση της κίνησης, οι οποίες μπορούν να κατηγοριοποιηθούν σε διαφορικές μεθόδους, μεθόδους συσχέτισης περιοχών (block matching) και μεθόδους που βασίζονται στη μελέτη του φασματικού περιεχομένου του σήματος και τη χρήση φίλτρων. Η προσέγγιση που ακολουθείται στην παρούσα διπλωματική εργασία ανήκει στην τελευταία κατηγορία. Αρχικά, κατασκευάζεται ένας μικρός αριθμός βασικών φίλτρων, τα οποία συνδυάζονται με κατάλληλους συντελεστές προκειμένου να δημιουργήσουν νέα φίλτρα στραμμένα προς όλες τις κατευθύνσεις. Εφαρμόζοντας τα νέα αυτά φίλτρα στις εικόνες, υπολογίζεται η ενέργεια του φάσματος σε ολόκληρο το χώρο. Στη συνέχεια, η κατεύθυνση προς την οποία μεγιστοποιείται το ενεργειακό περιεχόμενο στο πεδίο της συχνότητας αντιστοιχίζεται στην ταχύτητα της κίνησης στο πεδίο του χρόνου. Ο προρρηθείς αλγόριθμος υλοποιήθηκε σε MATLAB και έπειτα σε CUDA για τη βελτιστοποίηση της απόδοσης του. 5

6

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA Κατάλογος περιεχομένων Περίληψη...5 Κεφάλαιο 1 1. Εισαγωγή...13 1.1 Δομή του κειμένου...15 Κεφάλαιο 2 2. Αλγόριθμος Εκτίμησης Κίνησης...17 2.1 Στρεφόμενα Κατευθυντικά Φίλτρα...17 2.2 Μηχανισμός Donut...21 2.3 Αλγόριθμος...23 Κεφάλαιο 3 3. Υλοποίηση σε CUDA...29 3.1 Περιβάλλον προγραμματισμού της CUDA...29 3.1.1 Εισαγωγή στην CUDA...29 3.1.2 Αρχιτεκτονική της CUDA στο υλικό...34 3.1.3 Εκτέλεση προγράμματος σε CUDA...35 3.2 Υλοποίηση του αλγόριθμου σε CUDA...36 Κεφάλαιο 4 4. Πειραματικά Αποτελέσματα...39 Παράρτημα Α...55 Παράρτημα B...57 Παράρτημα Γ...65 Βιβλιογραφία...89 7

8

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA Κατάλογος εικόνων Εικόνα 2-1: Ισοδυναμική επιφάνεια βασικού φίλτρου 2ς τάξης παράλληλο προς το n1...19 Εικόνα 2-2: Ισοδυναμική επιφάνεια βασικού φίλτρου 2ς τάξης παράλληλο προς το n2...19 Εικόνα 2-3: Ισοδυναμική επιφάνεια βασικού φίλτρου 2ς τάξης παράλληλο προς το n3...19 Εικόνα 2-4: Ισοδυναμική επιφάνεια βασικού φίλτρου 2ς τάξης παράλληλο προς το n4...19 Εικόνα 2-5: Ισοδυναμική επιφάνεια βασικού φίλτρου 2ς τάξης παράλληλο προς το n5...19 Εικόνα 2-6: Ισοδυναμική επιφάνεια βασικού φίλτρου 2ς τάξης παράλληλο προς το n6...19 Εικόνα 2-7: Επέκταση εικόνας...23 Εικόνα 2-8: Ισοεπιφάνεια 50% για το υψιπερατό φίλτρο...25 Εικόνα 2-9: Ισοεπιφάνεια 20% για το χαμηλοπερατό φίλτρο...25 Εικόνα 3-1: Πράξεις κινητής υποδιαστολής ανά δευτερόλεπτο σε CPU και GPU[16]...30 Εικόνα 3-2: Ταχύτητα μεταφοράς δεδομένων από την κύρια μνήμη προς CPU και GPU[16]...30 Εικόνα 3-3: Σύγκριση των πόρων CPU - GPU[16]...31 Εικόνα 3-4: Αυτόματη παράλληλη εκτέλεση[16]...32 Εικόνα 3-5: Ιεραρχία μνήμης[16]...33 Εικόνα 3-6: Αρχιτεκτονική SIMT[17]...34 Εικόνα 3-7: Εκτέλεση προγράμματος γραμμένου σε CUDA[16]...35 Εικόνα 4-1: 1o frame από τη σειρά Yosemite[21]...40 Εικόνα 4-2: 7o frame από τη σειρά Yosemite[21]...40 Εικόνα 4-3: Yosemite sequence, Χάρτης ταχυτήτων για σ = 0.5, σ1 = π/2...41 Εικόνα 4-4: Yosemite sequence, πραγματικές ταχύτητες [5]...41 Εικόνα 4-5: Yosemite Sequence, Χρόνοι εκτέλεσης σε MATLAB...42 Εικόνα 4-6: Yosemite Sequence, Μεταβολή πλήθους πιθανών ταχυτήτων και χρόνου εκτέλεσης...42 Εικόνα 4-7: Yosemite Sequence, Χρόνοι εκτέλεσης σε CUDA...43 9

Εικόνα 4-8: 1o frame από τη σειρά Diverging Tree[21]...44 Εικόνα 4-9: 20ο frame από τη σειρά Diverging Tree[21]...44 Εικόνα 4-10: Diverging Tree Sequence, Χάρτης ταχυτήτων, σ = 1, σ1 = 3π/4...44 Εικόνα 4-11: Diverging Tree Sequence, πραγματικές ταχύτητες [5]...44 Εικόνα 4-12: Diverging Tree Sequence, Χρόνοι εκτέλεσης σε MATLAB...45 Εικόνα 4-13: Diverging Tree Sequence, Μεταβολή πλήθους πιθανών ταχυτήτων και χρόνου εκτέλεσης...45 Εικόνα 4-14: Diverging Tree Sequence, Χρόνοι εκτέλεσης σε CUDA...46 Εικόνα 4-15: 5031ο frame της σειράς I Don t Care [20]...47 Εικόνα 4-16: 5045ο frame της σειράς I Don t Care [20]...47 Εικόνα 4-17: I Don't Care, Χάρτης ταχυτήτων, σ = 1, σ1 = 3π/4...48 Εικόνα 4-18: I Don't Care Sequence, Χρόνος εκτέλεσης MATLAB / Χρόνος εκτέλεσης CUDA...49 Εικόνα 4-19: Επιτάχυνση των GPU έναντι CPU, για βήμα αναζήτησης ταχύτητας 0,1 pixels/frame...51 Εικόνα 4-20: Επιτάχυνση των GPU έναντι CPU, για βήμα αναζήτησης ταχύτητας 0,2 pixels/frame...51 Εικόνα 4-21: Επιτάχυνση των GPU έναντι CPU, για βήμα αναζήτησης ταχύτητας 0,3 pixels/frame...52 Εικόνα 4-22: Επιτάχυνση των GPU έναντι CPU, για βήμα αναζήτησης ταχύτητας 0,4 pixels/frame...52 Εικόνα 4-23: Επιτάχυνση των GPU έναντι CPU, για βήμα αναζήτησης ταχύτητας 0,5 pixels/frame...53 10

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA Ευρετήριο πινάκων Πίνακας 2-1: Περιοχές επέκτασης εικόνας...24 Πίνακας 4-1: Διακριτική ικανότητα αλγορίθμου - Πλήθος πιθανών ταχυτήτων στο [-4,4]...40 Πίνακας 4-2: Yosemite Sequence, Χρόνοι εκτέλεσης σε MATLAB...41 Πίνακας 4-3: Yosemite Sequence, Χρόνοι εκτέλεσης CUDA...43 Πίνακας 4-4: Diverging Tree Sequence, Χρόνοι εκτέλεσης σε MATLAB...45 Πίνακας 4-5: Diverging Tree Sequence, Χρόνοι εκτέλεσης σε CUDA...46 Πίνακας 4-6: Μέγεθος εικόνας που υποστηρίζουν οι GPUs...47 Πίνακας 4-7: I Don t Care Sequence 720x1280, Χρόνοι εκτέλεσης σε MATLAB...48 Πίνακας 4-8: I Don t Care Sequence 720x1280, Χρόνοι εκτέλεσης σε CUDA...49 Πίνακας 4-9: I Don t Care Sequence 480x854, Χρόνοι εκτέλεσης σε MATLAB...49 Πίνακας 4-10: I Don t Care Sequence 480x854, Χρόνοι εκτέλεσης σε CUDA...49 Πίνακας 4-11: I Don t Care Sequence 270x480, Χρόνοι εκτέλεσης σε MATLAB...50 Πίνακας 4-12: I Don t Care Sequence 270x480, Χρόνοι εκτέλεσης σε CUDA...50 Πίνακας Α-1: Χαρακτηριστικά των GPU...55 11

12

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA Κεφάλαιο 1 Εισαγωγή Η όραση θεωρείται η σημαντικότερη από τις πέντε αισθήσεις του ανθρώπου, καθώς μέσω αυτής γίνεται αντιληπτός ο εξωτερικός χώρος, η δομή και η θέση των αντικειμένων εντός του. Με την επεξεργασία της οπτικής πληροφορίας ο ανθρώπινος εγκέφαλος είναι σε θέση να εκτιμά την κίνηση και την ταχύτητα της. Αυτήν την καθημερινή, ανεπαίσθητη δραστηριότητα του ανθρώπινου μυαλού προσπαθεί, κατά κάποιο τρόπο, να μοντελοποιήσει, να εγγράψει με μαθηματικούς όρους ο κλάδος λογισμικού υπολογιστών με τη διαδικασία της «εκτίμησης κίνησης». «Εκτίμηση κίνησης» ονομάζεται ο υπολογισμός της ταχύτητας της κίνησης ενός αντικειμένου ή μιας επιφάνειας, η οποία μπορεί να αναφέρεται είτε καθολικά στην εικόνα, είτε σε κάποια επιμέρους περιοχή της, μέσα από τη μελέτη μιας αλληλουχίας εικόνων. Πρόκειται για ένα πολυσχιδές επιστημονικό πεδίο που έχει προκαλέσει το ενδιαφέρον των ερευνητών εξαιτίας, αφενός του εύρους της εφαρμογής του, αφετέρου, λόγω του επικουρικού ρόλου του προς όφελος της κατανόησης του τρόπου λειτουργίας των βιολογικών οργανισμών. Πιο συγκεκριμένα, η «εκτίμηση κίνησης» χρησιμοποιείται στον εντοπισμό και την αναγνώριση αντικειμένων, στην κωδικοποίηση και εν τέλει στη συμπίεση βίντεο, στη δυναμική ανάλυση τρισδιάστατων σκηνών και στην πλοήγηση αυτόνομων συστημάτων ρομπότ. Οι μεθοδολογίες που έχουν προταθεί για τον υπολογισμό της ταχύτητας μιας κίνησης μπορούν να χωριστούν σε τρεις κατηγορίες: 13

Εισαγωγή Διαφορικές μέθοδοι. Οι μέθοδοι αυτοί βασίζονται στην παραδοχή ότι η φωτεινότητα μιας αλληλουχίας εικόνων παραμένει σταθερή, επομένως οποιαδήποτε μη μηδενική τιμή της παράγωγου της φωτεινότητας ως προς το χρόνο οφείλεται σε κάποια κίνηση. Η εξίσωση συνέχειας της φωτεινότητας δίνεται από τον τύπο: I x V x I y V y = I t, όπου τα I x, I y, I t είναι οι μερικές παράγωγοι της φωτεινότητας της εικόνας ως προς το χώρο και το χρόνο και V x, V y οι ταχύτητες στον οριζόντιο και στον κάθετο άξονα αντίστοιχα. Το πεδίο που ορίζεται από τις V x, V y ονομάζεται οπτική ροή. Είναι φανερό ότι για να υπολογιστεί η οπτική ροή απαιτείται τουλάχιστον άλλη μία συνάρτηση που να συνδέει τις δύο ταχύτητες. Για αυτό το σκοπό, έχουν προταθεί πολυάριθμες μέθοδοι με πιο γνωστές τη μέθοδο Lucas-Kanade και τη Horn- Schunk. Ο αριθμός των frames που απαιτούνται για την εκτίμηση της κίνησης είναι 2 με 3. Μέθοδοι συσχέτισης περιοχών (block matching). Η κάθε εικόνα χωρίζεται σε περιοχές (blocks) και η περιοχές το ενός frame συγκρίνονται με αυτές του επόμενου. Η σύγκριση μπορεί να γίνει είτε υπολογίζοντας την απόλυτη διαφορά, είτε με τον υπολογισμό της συσχέτισης των εν λόγω blocks. Τέτοιες τεχνικές χρησιμοποιούνται ευρέως στη συμπίεση βίντεο, στα πρότυπα τηλεοπτικού σήματος και, όμοια με τις διαφορικές μεθόδους, συνήθως χρειάζονται 2 ή 3 διαδοχικά frames. Μέθοδοι που βασίζονται στη μελέτη του φασματικού περιεχομένου του σήματος και τη χρήση φίλτρων. Οι τεχνικές αυτές αξιοποιούν την πληροφορία που βρίσκεται στο χωροχρονικό φάσμα του σήματος και ως εκ τούτου απαιτούν μεγαλύτερο αριθμό από frames σε σχέση με τις προηγούμενες μεθόδους. Η εκτίμηση της κίνησης στο πεδίο της συχνότητας γίνεται εντοπίζοντας το επίπεδο που περνά από το κέντρο των αξόνων, στο οποίο μεγιστοποιείται η συγκέντρωση ενέργειας η κατεύθυνση του επιπέδου αυτού είναι η ταχύτητα της κίνησης. Αξίζει να αναφέρουμε ότι υπάρχουν νευροφυσιολογικές μελέτες που ισχυρίζονται ότι το ανθρώπινο σύστημα όρασης λειτουργεί με παρόμοιο τρόπο, αλλά και ότι τα περισσότερα συστήματα όρασης βασίζονται σε μελέτη του φασματικού περιεχομένου του σήματος. Ο αλγόριθμος που αναπτύχθηκε στα πλαίσια της παρούσας διπλωματικής ανήκει στην τελευταία κατηγορία. Συγκεκριμένα, χρησιμοποιήθηκαν στρεφόμενα, κατευθυντικά φίλτρα στενής ζώνης που σε συνδυασμό με το μηχανισμό Dοnut προσφέρουν μια ικανοποιητική λύση στο πρόβλημα της εκτίμησης της κίνησης. Το πρόγραμμα υλοποιήθηκε αρχικά σε MATLAB και έπειτα σε CUDA για τη βελτιστοποίηση της απόδοσης του. 14

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA 1.1 Δομή του κειμένου Στην επόμενη ενότητα εξετάζεται αναλυτικά ο αλγόριθμος που επιλέχτηκε για την εκτίμηση της κίνησης. Μέσα από τη μαθηματική ανάλυση των στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης και του συνδυασμού τους με το μηχανισμό Dοnut θα εξηγήσουμε πώς μπορεί να υπολογιστεί η ταχύτητα κίνησης μιας περιοχής, μελετώντας το φασματικό της περιεχόμενο. Στο τρίτο κεφάλαιο παρουσιάζονται συνοπτικά τα χαρακτηριστικά του προγραμματιστικού περιβάλλοντος της CUDA, τα προβλήματα για τα οποία ενδείκνυται και το μοντέλο του υλικού που την υποστηρίζει. Επιπλέον, γίνεται αναφορά στα μέρη του αλγόριθμου που παραλληλοποιήθηκαν και στο λόγο για τον οποίο αυτά επιλέχθηκαν. Στο τέταρτο κεφάλαιο παρατίθενται τα αποτελέσματα από την εκτέλεση του προγράμματος για τρεις σειρές εικόνων, τόσο σε MATLAB όσο και σε CUDA. Γίνεται σύγκριση των χρόνων εκτέλεσης σε διαφορετικό υλικό και για διαφορετικό μέγεθος εικόνας. Στο Παράρτημα Α μπορεί κανείς να βρει τις προδιαγραφές του υλικού που χρησιμοποιήθηκε. Στο Παράρτημα Β παρατίθεται ο κώδικας που γράφτηκε στη γλώσσα προγραμματισμού MATLAB. Για να εκτελεστούν τα διάφορα πειράματα πρέπει να γίνει uncomment στην ανάγνωση της εκάστοτε σειράς εικόνων, στη συνάρτηση readimages, και να τεθεί η μεταβλητή resolution, της συνάρτησης motionestimation, στην επιθυμητή ποσότητα. Στο Παράρτημα Γ, μπορεί κανείς να βρει τον κώδικα σε CUDA. Η επιλογή της σειράς εικόνων και την ανάλυσης της ταχύτητας γίνεται με την χρήση macros. 15

16

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA Κεφάλαιο 2 Αλγόριθμος Εκτίμησης Κίνησης 2.1 Στρεφόμενα Κατευθυντικά Φίλτρα Έστω ότι έχουμε το χωροχρονικό διάνυσμα ω= ω x,ω y,ω t και ω= ω/ ω το αντίστοιχο μοναδιαίο διάνυσμα στο πεδίο της συχνότητας. Ένα τρισδιάστατο κατευθυντικό φίλτρο υψηλής τάξης με διεύθυνση παράλληλη ως προς ένα μοναδιαίο διάνυσμα v δίνεται από από τον τύπο: Β N v ω =G ω ω v Τ N (1) όπου με ( ) συμβολίζεται η πράξη του πολλαπλασιασμού και η G ω είναι μία συνάρτηση που δεν επηρεάζει τον αλγόριθμο μας, επομένως τη θεωρούμε ίση με 1. Ένα τέτοιο φίλτρο μπορεί να στραφεί προς οποιαδήποτε κατεύθυνση v με τη χρήση τουλάχιστον: N 1 N 2 L N = 2 (2) βασικών φίλτρων Β i προσανατολισμένων παράλληλα προς τα διανύσματα n i, i= 1, 2,..., L(N). Δεν υπάρχει κάποιος περιορισμός στην επιλογή των διανυσμάτων διεύθυνσης των βασικών φίλτρων n i, αλλά για 17

Αλγόριθμος Εκτίμησης Κίνησης λόγους συμμετρίας και ελαχιστοποίησης της επίδρασης του θορύβου τα τοποθετούμε πάνω στη μοναδιαία σφαίρα. Στην υλοποίηση μας, χρησιμοποιήθηκαν φίλτρα δεύτερης τάξης με αποτέλεσμα ο αριθμός των αναγκαίων βασικών φίλτρων να ισούται με 6. Σύμφωνα με τη θεωρία των πολυέδρων [6] οι κατευθύνσεις των βασικών φίλτρων δεύτερης τάξης συμπίπτουν με τις 6 από τις 12 κορυφές ενός εικοσάεδρου που βρίσκονται στο ίδιο ημισφαίριο και είναι οι εξής: n 1 = 0,8507, 0,5257, 0 T n 2 = 0,8507, 0,5257, 0 T n 3 = 0, 0,8507, 0,5257 T n 4 = 0, 0,8507, 0,5257 T n 5 = 0,5257, 0, 0,8507 T n 6 = 0,5257, 0, 0,8507 T. Τα βασικά φίλτρα μεγέθους 100x100x100 που αντιστοιχούν στα εν λόγω διανύσματα παρουσιάζονται στις εικόνες 2-1 έως 2-6. Το διάνυσμα n i, που αντιστοιχεί στη διεύθυνση του i-οστού βασικού φίλτρου, μπορεί να αναπαρασταθεί στη γενική μορφή ως n i = n ix, n iy, n iz, τότε η εξίσωση (1) γράφεται: Β v 2 ω = ω v T 2 = ω 2 ω x n ix ω y n iy ω t n it = ω 2 p, q, r 0 p q r=n C pqr k i, pqr ω x p ω y q ω t r, (3) όπου k =n p ix n q r iy n iz N =2 2 k=[nix, n ix n iy, n ix n it, n 2 iy, n iy n it, n 2 it ] (4) και C pqr = N! p! q! r! (5). Δημιουργούμε τη βοηθητική μεταβλητή: N =2 w N ω = ω N [C pqr ω p x ω q y ω r t ] p, q,r 0 p q r= N (6). w 2 ω = ω 2 [ω 2 x,2 ω x ω y, 2ω x ω t,ω 2 y,2ω y ω t,ω 2 t ] T Από τις εξισώσεις (3) και (6) προκύπτει ότι: B i 2 ω = k i w 2 ω (7). (1 x 1) = (1 x 6) (6 x 1) 18

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA Εικόνα 2-1: Ισοδυναμική επιφάνεια βασικού φίλτρου 2ς τάξης παράλληλο προς το n 1 Εικόνα 2-2: Ισοδυναμική επιφάνεια βασικού φίλτρου 2ς τάξης παράλληλο προς το n 2 Εικόνα 2-3: Ισοδυναμική επιφάνεια βασικού φίλτρου 2ς τάξης παράλληλο προς το n 3 Εικόνα 2-4: Ισοδυναμική επιφάνεια βασικού φίλτρου 2ς τάξης παράλληλο προς το n 4 Εικόνα 2-5: Ισοδυναμική επιφάνεια βασικού φίλτρου 2ς τάξης παράλληλο προς το n 5 Εικόνα 2-6: Ισοδυναμική επιφάνεια βασικού φίλτρου 2ς τάξης παράλληλο προς το n 6 19

Αλγόριθμος Εκτίμησης Κίνησης Αν εφαρμοσθεί ο τύπος (7) για όλα τα i, θα προκύψει το γραμμικό σύστημα: B ω =Κ w 2 ω (8) (6 x 1) = (6 x 6) (6 x 1) όπου το B ω =[ B 1 ω, Β 2 ω,β 3 ω, Β 4 ω, Β 5 ω, Β 6 ω ] είναι ένα διάνυσμα που περιέχει όλα τα βασικά φίλτρα και ο πίνακας Κ είναι η οριζόντια παράθεση των ανάστροφων των διανυσμάτων k, ήτοι K =[ k 1, k 2, k 3, k 4, k5, k 6 ] T. Λύνοντας την εξίσωση (8) ως προς το w 2 ω προκύπτει ότι: w 2 ω = Κ 1 B ω (9) όπου στη συγκεκριμένη περίπτωση ο Κ -1 είναι ο αντίστροφος του Κ, ενώ στην γενικότερη περίπτωση, όπου ο Κ δεν είναι τετραγωνικός, ο Κ -1 αντιστοιχεί στον ψευδοαντίστροφο του Κ. Έστω ότι θέλουμε να κατασκευάσουμε ένα κατευθυντικό φίλτρο Β v στραμμένο κατά τη διεύθυνση του διανύσματος v= υ x,υ y,υ t. Δουλεύοντας με τη μεθοδολογία που αναλύθηκε παραπάνω, καταλήγουμε στην εξίσωση: Β v 2 ω = ω 2 p,q,r 0 p q r= N C pqr d pqr v ω x p ω y q ω t r = d v w 2 ω (10) όπου το d, κατά αντιστοιχία με το k, ισούται με d =υ p ix υ q r iy υ iz (11) και d =[υ 2 ix,υ ix υ iy,υ ix υ it,υ 2 iy,υ iy υ it,υ 2 it ] (12). Από τις εξισώσεις (9) και (10) έχουμε: 6 B v ω = d v K 1 B ω = t v B ω = t i v B i ω (13) i=1 (1 x 1) = (1 x 6) (6 x 6) (6 x 1) = (1 x 6) (6 x 1) όπου το t v = d v K 1 (14) είναι το διάνυσμα παρεμβολής, με το οποίο κατασκευάζουμε ένα κατευθυντικό φίλτρο στραμμένο προς το διάνυσμα v από τα βασικά φίλτρα Β i. Συγκεκριμένα, τα στοιχεία του μονοδιάστατου πίνακα t v είναι οι συντελεστές της γραμμικής παρεμβολής με τα στοιχεία του πίνακα B ω. 20

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA Αν f(x,y,t) είναι το σήμα της εισόδου, δηλαδή μια σειρά εικόνων, και F(ω x,ω y,ω t ) ο αντίστοιχος μετασχηματισμός Fourier, η απόκριση του τρισδιάστατου φίλτρου, το οποίο είναι στραμμένο κατά τη διεύθυνση του v, θα είναι, στο πεδίο του χρόνου: y x, y,t = f x, y,t b v x, y,t (15), όπου η πράξη (*) δηλώνει τη συνέλιξη των δύο συναρτήσεων, ενώ στο πεδίο της συχνότητας η απόκριση θα δίνεται από τον τύπο: Από τις εξισώσεις (13) και (16) προκύπτει ότι: Υ ω x, ω y, ω t =F ω x,ω y, ω t B v ω x,ω y, ω t (16). 6 Υ ω x,ω y,ω t =F ω x,ω y,ω t i=1 6 t i v B i ω x, ω y, ω t = t i v Υ i ω x,ω y,ω t (17) i=1 όπου Υ i (ω x,ω y,ω t ) είναι η απόκριση του βασικού φίλτρου i στο σήμα εισόδου. Επομένως, αποδείχτηκε ότι η στρεψιμότητα, που έως τώρα αναφέρονταν στις συναρτήσεις μεταφοράς των φίλτρων, ισχύει και για τις αποκρίσεις τους. 2.2 Μηχανισμός Donut Η μεθοδολογία που συνδέει τα στρεφόμενα φίλτρα υψηλής τάξης με την αναγνώριση κίνησης ονομάζεται μηχανισμός Donut. Αρχικά, θα αναφέρουμε κάποια εισαγωγικά θεωρητικά στοιχεία και έπειτα θα αναλύσουμε τον εν λόγω μηχανισμό. Έστω ότι η εικόνα της εισόδου κινείται με ταχύτητα u= u x,u y, τότε η ισχύς του φάσματος της εικόνας θα βρίσκεται σε ένα επίπεδο κάθετο στο μοναδιαίο διάνυσμα: s u = u x,u y,1 u 2 1 (18). Για να περιγράψουμε το επίπεδο στο οποίο συγκεντρώνεται η ισχύς του φάσματος χρειαζόμαστε τουλάχιστον δύο διανύσματα που βρίσκονται επάνω σε αυτό. Επιλέγουμε τα διανύσματα αυτά έτσι ώστε να είναι κάθετα στο s u και μεταξύ τους: s a u = s u e και s b u = s u s a u (19) Το e είναι ένα τυχαίο μοναδιαίο διάνυσμα με μοναδικό περιορισμό να είναι πάντα διάφορο από το s και 21

Αλγόριθμος Εκτίμησης Κίνησης η πράξη (x) συμβολίζει το εξωτερικό διανυσματικό γινόμενο. Από τα s a και s b μπορούν να προκύψουν Ν+1 διανύσματα που να ανήκουν στο επίπεδο ενδιαφέροντος και να είναι ομοιόμορφα κατανεμημένα, ως προς τη γωνία τους, ξεκινώντας από το s a : συνάρτηση: π n s u =cos N 1 s u sin π n a N 1 s b u (20) με n = 0, 1, 2. Σύμφωνα με το μηχανισμό Donut το επίπεδο της κίνησης μπορεί να βρεθεί μεγιστοποιώντας τη P N u = ω N n=0 B sn u ω F ω 2 = ω N n=0 b sn u x, y,t f x, y,t 2 = ω N n=0 y sn u x, y,t 2 (21) όπου B sn u ω = ω s n u T N είναι το στρεφόμενο φίλτρο παράλληλο προς το s n u, b sn u x, y,t ο αντίστροφος τρισδιάστατος μετασχηματισμός Fourier του και y x, y, t =b sn u s n u x, y,t f x, y, t η απόκριση. Το Ν όπως έχει προαναφερθεί είναι η τάξη του φίλτρου που στην υλοποίηση μας Ν = 2. Η πράξη (*) συμβολίζει τη συνέλιξη στο πεδίο του χρόνου και για να γίνει η γίνει η μετάβαση από το δεύτερο στον τρίτο όρο χρησιμοποιήθηκε το θεώρημα του Parseval. Από την εξίσωση (21) προκύπτει ότι για να υπολογιστεί η κατανομή P N u για μια υποψήφια ταχύτητα u, βρίσκουμε τα διανύσματα s n u, που κείτονται στο επίπεδο που μας ενδιαφέρει, από τύπους (18) και (19). Τα φίλτρα b sn u σχηματίζουν ένα Donut πάνω στο εξεταζόμενο επίπεδο και με τη βοήθεια της εξίσωσης (15) υπολογίζουμε την απόκριση τους στο σήμα εισόδου, y sn u. Τέλος, προστίθενται οι ενέργειες που υπολογίστηκαν για όλα τα s n u. Για την επιτάχυνση του υπολογισμού της P N u, αλλά και για τη μείωση των απαιτήσεων του σε μνήμη, μπορούμε εκμεταλλευόμαστε τα όσα αναπτύχθηκαν στην προηγούμενη ενότητα και έχουμε: P N u = ω N n =0 y sn u x, y,t 2 = ω N n=0 2 y s n u x, y,t = ω N n=0 6 [ t i s n u y i x, y,t ] 2 (22). i =1 Αναλύοντας το πολυώνυμο και αλλάζοντας την προτεραιότητα των αθροισμάτων καταλήγουμε στο: N 6 P N u = n=0 i=1 6 t i s n u j=1 t j s n u x y i x, y, t y j x, y, t (23) y t δηλαδή μπορούμε να υπολογίσουμε το P N u μια τυχαία ταχύτητα u, από τα σ 6 = 6 1 6/2 τετραγωνικά στοιχεία x y i x, y, t y i x, y,t. y t 22

2.3 Αλγόριθμος Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA Με βάση την ανάλυση που προηγήθηκε θα παραθέσουμε σε απλά βήματα τη διαδικασία που ακολουθεί ο αλγόριθμος. Βήμα 1 Αφού διαβαστεί η είσοδος, τα frames επεκτείνονται κατά 1/15 σε κάθε πλευρά και στα επιπρόσθετα pixel που εισάγονται καθρεφτίζουμε την εικόνα. Συνολικά δηλαδή μεγαλώνουμε την εικόνα κατά 2/15 στους χωρικούς άξονες. Η επέκταση αυτή γίνεται για να μειωθεί το φαινόμενο κατά το οποίο πληροφορία βγαίνει από την εικόνα χωρίς να ξαναμπεί ή και αντίστροφα. Η επέκτασης ενός frame φαίνεται στην εικόνα 2-7, όπου η αρχική εικόνα βρίσκεται μέσα στο πλαίσιο και η επέκταση της εκτός του πλαισίου. 1 2 3 4 5 6 7 8 9 Εικόνα 2-7: Επέκταση εικόνας Η εικόνα χωρίζεται σε εννέα περιοχές. Αν im(x,y) η αρχική εικόνα μεγέθους (Ny,Nx), f(x,y) η εικόνα μετά την επέκταση και xext, yext το πλήθος τον pixel επέκτασης στους άξονες x, y αντίστοιχα, θα έχουμε: 23

Αλγόριθμος Εκτίμησης Κίνησης Περιοχή 1 f(x,y) = im(xext - x, yext - y) Περιοχή 2 f(x,y) = im(x, yext - y) Περιοχή 3 f(x,y) = im(xext + Nx - x, yext - y) Περιοχή 4 f(x,y) = im(xext-x, yext + y) Περιοχή 5 f(x,y) = im(xext + x, yext +y) Περιοχή 6 f(x,y) = im(xext + Nx - x, yext +y) Περιοχή 7 f(x,y) = im(xext - x, yext + Ny -y) Περιοχή 8 f(x,y) = im(xext + x, yext + Ny -y) Περιοχή 9 f(x,y) = im(xext + Nx - x, yext + Ny -y) Πίνακας 2-1: Περιοχές επέκτασης εικόνας Βήμα 2 Δημιουργούμε δύο φίλτρα (προφίλτρα) το πρώτο είναι ένα υψιπερατό φίλτρο με κυλινδρική συμμετρία (εικόνα 2-8) και το δεύτερο είναι ένα χαμηλοπερατό φίλτρο με σφαιρική συμμετρία (εικόνα 2-9). Για το πρώτο φίλτρο θα έχουμε: ω 2 G h ω = x ω 2 y π με ω x,ω y,ω z [ π, π] (24) το οποίο ουσιαστικά παραγωγίζει το σήμα στο χώρο, ενισχύοντας τις αδύναμες συνιστώσες υψηλής συχνότητας, που εμφανίζονται κυρίως σε φυσικές εικόνες, σε σχέση με αυτές των χαμηλότερων συχνοτήτων. Έτσι διευκολύνεται η αναγνώριση των επιπέδων κίνησης. Το δεύτερο φίλτρο απομονώνει τις συνιστώσες πολύ υψηλής συχνότητας που οφείλονται σε χωροχρονικό θόρυβο, χωροχρονικό aliasing κλπ, και είναι ένα σφαιρικό Γκαουσιανό φίλτρο: G ω =exp 1 2 ω 2 x σ ω 2 y 2 ω σ ω 2 t 2 ω σ με ω,ω,ω 2 x y z [ π,π] (25) ω Ο συνδυασμός των παραπάνω φίλτρων δημιουργεί ένα χαμηλοπερατό ως προς το χρόνο και ζωνοπερατό ως προς το χώρο φίλτρο G b ω =G ω G h ω. Η τιμή του σ ω επηρεάζει τις αποκοπτόμενες συχνότητες, δηλαδή την απόκριση του τελικού φίλτρου, και πρέπει να επιλέγεται στο διάστημα (π/4, 3π/4) ανάλογα με τα επίπεδα του θορύβου που αναμένουμε στο σήμα εισόδου. Για υψηλές ταχύτητες εικόνας ( 2 pixels/frame) προτείνεται η επιλογή μεγάλου σ ω προκειμένου να μειωθεί η επίδραση του temporal aliasing και να βελτιωθεί η εκτίμηση της κίνησης. 24

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA Εικόνα 2-8: Ισοεπιφάνεια 50% για το υψιπερατό φίλτρο Εικόνα 2-9: Ισοεπιφάνεια 20% για το χαμηλοπερατό φίλτρο 25

Αλγόριθμος Εκτίμησης Κίνησης Βήμα 3 Υπολογίζουμε τον τρισδιάστατο μετασχηματισμό Fourier F(ω x, ω y, ω t ) των εικόνων που επεκτείναμε. Βήμα 4 Εφαρμόζουμε τα προφίλτρα στο μετασχηματισμένο σήμα εισόδου: F ω x,ω y,ω t =F ω x,ω y, ω t G b ω x,ω y,ω t (26) Βήμα 5 Υπολογίζουμε τα βασικά φίλτρα Β i 2 ω από τον τύπο (3). Βήμα 6 Εφαρμόζουμε τα βασικά φίλτρα στο F(ω x, ω y, ω t ): Υ i =Β 2 i ω F ω, i = 1, 2,, 6 Η απόκριση y i στο πεδίο του χρόνου προκύπτει από τον αντίστροφο τρισδιάστατο μετασχηματισμό Fourier της Y i. Βήμα 7 Χρησιμοποιούμε το μηχανισμό Donut για να υπολογίσουμε την κατανομή μέγιστης ενέργειας: N 6 P N u = n=0 i=1 6 t i s n u t j s n u j=1 x, y, t D w 2 D x x y x, y, t y D i j x, y, t (27) Η σχέση (27) προκύπτει από τη σχέση (23) με την προσθήκη του παραθύρου: 2 2 2 w x = D 1 2 x y t σ 1 D x σ 1 D y σ 1 D t (28) Το x d στον τύπο (27) είναι το κέντρο της περιοχής D. Με αυτόν τον τρόπο τα τοπικά χαρακτηριστικά της περιοχής D συνδυάζονται ώστε το μεγαλύτερο βάρος να δίνεται στο κέντρο της περιοχής x d. Η παράμετρος σ 1 είναι η τυπική απόκλιση του παραθύρου και μπορεί να πάρει τιμές έως και 1. 26

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA Στην παρούσα υλοποίηση οι περιοχές D x και D y επιλέχθηκαν στα 20 pixels, είναι δηλαδή αρκετά μεγάλες για να περιέχουν την απαιτούμενη πληροφορία, αλλά μικρές για να περιλαμβάνουν πολλαπλές κινήσεις. Η παράμετροι D t και σ 1 επιλέχθηκαν πειραματικά για κάθε σειρά εικόνων που μελετήθηκε και κυμαίνονται στα 14-20 frames και 0.5-1 αντίστοιχα. Βήμα 8 Για κάθε μία από τις περιοχές D βρίσκουμε για ποιο u μεγιστοποιείται η κατανομή ενέργειας. Το u αυτό είναι η ταχύτητα κίνησης της περιοχής. 27

Αλγόριθμος Εκτίμησης Κίνησης 28

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA Κεφάλαιο 3 Υλοποίηση σε CUDA 3.1 Περιβάλλον προγραμματισμού της CUDA 3.1.1 Εισαγωγή στην CUDA Τα τελευταία χρόνια έχει γίνει επιτακτική η ανάγκη για πολυπύρηνες κεντρικές μονάδες επεξεργασίας (CPU) και πολυπύρηνες μονάδες επεξεργασίας γραφικών (Graphics Prossesor Unit ή GPU). Οι εταιρίες που κατασκευάζουν τέτοιου είδους υλικό έχουν ανταποκριθεί στις απαιτήσεις της αγοράς, με αποτέλεσμα οι επεξεργαστές που είναι ευρέως διαθέσιμοι να είναι πλέον παράλληλα συστήματα (Eικόνες 3-1 και 3-2). Η τάξη της παραλληλοποίησης σε CPU και κάρτες γραφικών αυξάνεται σύμφωνα με το νόμο του Moore, παρουσιάζοντας την εξής πρόκληση πώς θα εκμεταλλευτούμε στο μέγιστο τις δυνατότητες παραλληλοποίησης που μας προσφέρει το υλικό στο λογισμικό. 29

Υλοποίηση σε CUDA Εικόνα 3-1: Πράξεις κινητής υποδιαστολής ανά δευτερόλεπτο σε CPU και GPU [16] Εικόνα 3-2: Ταχύτητα μεταφοράς δεδομένων από την κύρια μνήμη προς CPU και GPU [16] 30

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA Από τις παραπάνω εικόνες γίνεται φανερό ότι ο ρυθμός αύξησης τόσο των πράξεων κινητής υποδιαστολής, όσο και της ταχύτητας μεταφοράς δεδομένων από την κύρια μνήμη, για τις GPU, είναι μεγαλύτερος από αυτόν των CPU, γεγονός που οφείλεται στη διαφορετική σκοπιμότητα της κάθε συσκευής. Οι GPU κατασκευάζονται για να εκτελούν παράλληλα μεγάλο αριθμό από μαθηματικούς υπολογισμούς, δηλαδή για rendering γραφικών, και έτσι έχουν περισσότερα τρανζίστορ για την επεξεργασία δεδομένων. Αντίθετα, οι CPU υπερέχουν σε τομείς που αφορούν την προσωρινή αποθήκευση δεδομένων και τον έλεγχο ροής της πληροφορίας (Εικόνα 3-3). Εικόνα 3-3: Σύγκριση των πόρων CPU - GPU [16] Συγκεκριμένα, οι GPU είναι ιδανικές για την αντιμετώπιση προβλημάτων με υψηλές αριθμητικές απαιτήσεις που μπορούν να εκφραστούν ως παράλληλη επεξεργασία δεδομένων, δηλαδή σε περιπτώσεις που πρέπει το ίδιο πρόγραμμα να εκτελεστεί παράλληλα σε πολλά στοιχεία δεδομένων και ο λόγος των αριθμητικών υπολογισμών προς τις προσπελάσεις μνήμης είναι μεγάλος. Το γεγονός ότι το ίδιο πρόγραμμα εκτελείται για κάθε στοιχείο δεδομένων, έχει ως αποτέλεσμα να μην είναι απαραίτητος κάποιος πολύπλοκος μηχανισμός ελέγχου της ροής των δεδομένων. Επιπλέον, το πλήθος των αριθμητικών υπολογισμών μπορεί να εκτελεστεί ταυτόχρονα με κάποια μεταφορά μνήμης και έτσι να αποφευχθεί η καθυστέρηση που θα προκαλούνταν σε ένα πρόγραμμα από τη μεταφόρτωση δεδομένων. Η CUDA είναι ένα παράλληλο προγραμματιστικό μοντέλο που δημιουργήθηκε από την NVIDIA με σκοπό να εκμεταλλευθεί τα χαρακτηριστικά των GPU επιτρέποντας στον προγραμματιστή να πετύχει παραλληλοποίηση λογισμικού, η οποία αυξάνεται ανάλογα με τον αριθμό των επεξεργαστών της GPU. Ταυτόχρονα, δεν απαιτεί από τον developer να μάθει από τον μηδέν μια καινούρια γλώσσα 31

Υλοποίηση σε CUDA προγραμματισμού, αφού η CUDA μπορεί να θεωρηθεί επέκταση της C, ενώ ταυτόχρονα υποστηρίζει Fortran, OpenCL, Direct Compute, Java και Python. Η CUDA προσφέρει τρία επίπεδα γενίκευσης: ιεραρχία των νημάτων (threads) σε ομάδες (blocks) διαμοιραζόμενη μνήμη μηχανισμούς συγχρονισμού που προτρέπουν τον προγραμματιστή να χωρίσει το αρχικό πρόβλημα σε ανεξάρτητα υποπροβλήματα, τα οποία μπορούν να λυθούν παράλληλα σε blocks, και κάθε υποπρόβλημα σε μικρότερες ενότητες που μπορούν να εκτελεστούν από τα επιμέρους threads του εκάστοτε block. Επιπλέον, η CUDA επιτρέπει τη συνεργασία των threads υπό τη μορφή της ανταλλαγής δεδομένων μεταξύ των threads της ίδιας ομάδας και του συγχρονισμού τους. Με τη διάσπαση του προβλήματος επιτυγχάνεται η μέγιστη παραλληλοποίηση, αφού τα blocks μπορούν να εκτελεσθούν με οποιαδήποτε σειρά όταν υπάρχει κάποιος διαθέσιμος πυρήνας ή να τεθούν σε αναμονή. Ο αυτόματος διαμοιρασμός των blocks σε ελεύθερους πυρήνες έχει ως αποτέλεσμα μια GPU με περισσότερους πυρήνες να εκτελέσει ένα πρόγραμμα πιο γρήγορα από μια GPU με λιγότερους πυρήνες, ενώ το τελικό πρόγραμμα μπορεί να εκτελεστεί σε οποιοδήποτε αριθμό επεξεργαστών χωρίς το πλήθος τους να είναι γνωστό κατά τη συγγραφή του κώδικα. Εικόνα 3-4: Αυτόματη παράλληλη εκτέλεση [16] 32

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA Η ιεραρχία των thread μπορεί να συνοψιστεί ως εξής: τα threads ομαδοποιούνται σε blocks, τα οποία μπορεί να έχουν έως και τρεις διαστάσεις, ενώ τα blocks ομαδοποιούνται σε ένα πλέγμα (grid) το οποίο, όμοια με τα blocks, μπορεί να έχει μία, δύο ή τρεις διαστάσεις. Κατά την εκτέλεση τους, τα threads, έχουν πρόσβαση σε διαφορετικούς χώρους μνήμης (Εικόνα 3-5). Το κάθε thread έχει μια τοπική μνήμη που είναι ορατή μόνο από το ίδιο, ενώ το κάθε block έχει μια τοπική μνήμη που είναι προσβάσιμη μόνο από τα threads του συγκεκριμένου block και καταστρέφεται όταν ολοκληρωθεί η εκτέλεση του. Επιπλέον, υπάρχει η κύρια μνήμη της συσκευής, την οποία μπορούν να προσπελάσουν όλα τα threads. Υπάρχουν δύο ακόμα χώροι μνήμης στους οποίος ένας kernel έχει δικαιώματα μόνο ανάγνωσης η μνήμη σταθερών (constant memory) και η texture μνήμη. Οι πιο γρήγορες μνήμες είναι οι τοπικές μνήμες των threads και των blocks, ακολουθούν η constant και η texture μνήμη, ενώ η κύρια μνήμη της συσκευής είναι η πιο αργή. Έτσι, για να βελτιώσουμε την απόδοση ενός προγράμματος πρέπει να μειώσουμε στο ελάχιστο τις κλήσεις στην κύρια μνήμη. Εικόνα 3-5: Ιεραρχία μνήμης [16] 33

Υλοποίηση σε CUDA 3.1.2 Αρχιτεκτονική της CUDA στο υλικό Η αρχιτεκτονική της CUDA είναι δομημένη γύρω από έναν επεκτάσιμο πίνακα που αποτελείται από πολυνηματικούς πολυεπεξεργαστές συνεχούς ροής (Streaming Multiprocessors ή SMs). Όταν το πρόγραμμα που εκτελείται στη CPU καλέσει έναν kernel, δηλαδή μια συνάρτηση που θα εκτελεστεί στην GPU, θα πρέπει να την ενημερώσει για τις διαστάσεις του grid και των blocks. Τα blocks, και τα threads ανά block που θα δημιουργηθούν, θα απαριθμηθούν και θα κατανεμηθούν στους διαθέσιμους πολυεπεξεργαστές της κάρτας γραφικών. Ένας πολυεπεξεργαστής μπορεί να αναλάβει την εκτέλεση πολλών blocks, όμως τα threads του κάθε block θα εκτελεστούν ταυτόχρονα στον ίδιο πολυεπεξεργαστή. Οι μονάδες του πολυεπεξεργαστή που εκτελούν τα threads ονομάζονται CUDA cores και μπορούν να εκτελέσουν ένα thread τη φορά. Ένας πολυεπεξεργαστής περιέχει 8, 32 ή 48 CUDA cores, ανάλογα με τη γενιά της GPU. Όταν δοθούν σε έναν πολυεπεξεργαστή ένα ή περισσότερα blocks για εκτέλεση, αυτός τα χωρίζει σε ομάδες των 32 threads, τα επονομαζόμενα warps, και στη συνέχεια διαχειρίζεται τα warps, τα χρονοπρογματίζει και τα εκτελεί. Όλα τα threads του warp ξεκινούν να εκτελούνται από την ίδια εντολή, αλλά το κάθε thread έχει το δικό του καταχωρητή κατάστασης και απαριθμητή προγράμματος, επομένως μπορεί να εκτελεστεί ανεξάρτητα από τα υπόλοιπα threads του warp. Ένα warp εκτελεί μια κοινή εντολή ανά κύκλο. Στην περίπτωση που μία εντολή ελέγχου, για παράδειγμα η εντολή if, δημιουργεί πολλαπλά μονοπάτια, το warp εκτελεί κάθε ένα από αυτά σειριακά, ενεργοποιώντας κάθε φορά μόνο τα thread που πληρούν την εκάστοτε συνθήκη. Επομένως, για να ελαχιστοποιηθεί ο χρόνος εκτέλεσης ενός προγράμματος γραμμένου σε CUDA είναι επιθυμητό όλα τα thread του ίδιου wrap να έχουν το ίδιο μονοπάτι εκτέλεσης. Τα thread που ανήκουν σε διαφορετικά warp εκτελούνται ούτως ή άλλως ανεξάρτητα, οπότε η ύπαρξη πολλών μονοπατιών εκτέλεσης για διαφορετικά warps δεν επηρεάζει την απόδοση ενός προγράμματος. Εικόνα 3-6: Αρχιτεκτονική SIMT [17] 34

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA 3.1.3 Εκτέλεση προγράμματος σε CUDA Η εκτέλεση ενός προγράμματος γραμμένου σε CUDA φαίνεται στην εικόνα, όπου ως Host συμβολίζεται η CPU και ως Device η GPU. Εικόνα 3-7: Εκτέλεση προγράμματος γραμμένου σε CUDA [16] 35

Υλοποίηση σε CUDA 3.2 Υλοποίηση του αλγόριθμου σε CUDA Όπως αναφέρθηκε στην προηγούμενη ενότητα, η CUDA είναι μια γλώσσα προγραμματισμού κατάλληλη για να λύσει προβλήματα, τα οποία μπορούν να χωριστούν σε ανεξάρτητες ενότητες και να εκτελεστούν παράλληλα, όπως οι πράξεις μεταξύ πινάκων. Έχοντας υπόψιν αυτό, κληθήκαμε να επιλέξουμε τα μέρη του αλγόριθμου που περιγράφτηκε στο Κεφάλαιο 2 που θα παραλληλοποιηθούν. Το πρώτο τμήμα του αλγορίθμου που επιλέχθηκε είναι ο κώδικας για την επέκταση των εικόνων εισόδου (Βήμα 1). Ο kernel δέχεται ως ορίσματα τους πίνακες που αντιστοιχούν στις αρχικές εικόνες (είσοδος) και στις εκτεταμένες εικόνες (έξοδος), ενώ καλείται για τόσα threads, όσα και τα στοιχεία του πίνακα εξόδου. Με τις συνθήκες ελέγχου που αναφέρθηκαν στο 2ο κεφάλαιο, το εξεταζόμενο pixel κατατάσσεται σε μια από τις 9 περιοχές της εικόνας και χρησιμοποιείται η κατάλληλη σχέση για να δοθεί τιμή στην έξοδο. Το παραπάνω σημαίνει ότι μπορεί να υπάρξει ένα warp με πολλαπλά πιθανά μονοπάτια, κάτι που ιδανικά θα έπρεπε να αποφευχθεί. Παρ' όλα αυτά, η λύση που δώσαμε είναι πιο γρήγορη από τη μοναδική εναλλακτική, δηλαδή τη δημιουργία ξεχωριστού kernel για κάθε περιοχή, αφού η κλήση ενός kernel είναι μια αργή διαδικασία. Στη συνέχεια του προγράμματος υπολογίζουμε το μετασχηματισμό Fourier των επεκταμένων εικόνων (Βήμα 3). Για αυτό το σκοπό αξιοποιήθηκε η βιβλιοθήκη CUFFT, την οποία προσφέρει η NVIDIA μαζί με τα εργαλεία προγραμματισμού της CUDA. Για την εκτέλεση του γρήγορου μετασχηματισμού Fourier (FFT) του τρισδιάστατου σήματος από την CUFFT, αρχικά κατασκευάζουμε ένα πλάνο, στο οποίο ορίζουμε τον τύπο του μετασχηματισμού (μιγαδικό σε μιγαδικό, Complex to Complex ή C2C), το μέγεθος του και το πλήθος των διαστάσεων (τρεις). Στη συνέχεια χρησιμοποιούμε το πλάνο για να καλέσουμε τη συνάρτηση που εκτελεί τον FFT δηλώνοντας σε αυτή ότι ο μετασχηματισμός είναι ο ευθύς μετασχηματισμός Fourier. Η επεκταμένη εικόνα δηλώνεται ως πίνακας μιγαδικών μεταβλητών, αλλά πριν το μετασχηματισμό όλα τα φανταστικά μέρη είναι μηδέν. Τα προφίλτρα δίνονται από τον τύπο G b ω =G ω G h ω, όπου: G ω =exp 1 2 ω 2 2 2 x 2 σ ω y 2 ω σ ω t ω σ και 2 ω ω 2 G h ω = x ω 2 y π. Είναι εμφανές ότι θεωρώντας ότι τα παραπάνω φίλτρα αποτελούν πίνακες συντελεστών, η τιμή για κάθε στοιχείο του πίνακα εξαρτάται μόνο από το δείκτη του στοιχείου και δεν είναι απαραίτητο να τα προϋπολογίσουμε. Το ίδιο ισχύει και για τα βασικά φίλτρα του μηχανισμού Donut: 36

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA Β v 2 ω = ω 2 ω x n ix ω y n iy ω t n it 1. Επομένως, θα μπορούσαμε να γράψουμε έναν kernel που να καλείται για τόσα threads, όσα και τα στοιχεία του πίνακα επί τον αριθμό των βασικών φίλτρων. Κάθε thread υπολογίζει την τιμή των προφίλτρων και του βασικού φίλτρου που του αντιστοιχεί και την πολλαπλασιάζει με το στοιχείο του πίνακα των εκτεταμένων εικόνων που έχει τους ίδιους δείκτες θέσης. Με αυτόν τον τρόπο τα βήματα 2, 4, 5 και εν μέρει και το 6, δηλαδή η δημιουργία και η εφαρμογή των προφίλτρων και ο υπολογισμός της απόκρισης των βασικών φίλτρων στο πεδίο της συχνότητας, συνδυάζονται σε ένα. Συνοψίζοντας, η είσοδος του kernel είναι ο FFT της επεκταμένης εικόνας και η έξοδός του είναι ένας πίνακας εξαπλάσιου μεγέθους που περιέχει την απόκριση των βασικών φίλτρων. Ο μετασχηματισμός της απόκρισης των φίλτρων από το πεδίο της συχνότητας στο πεδίο του χρόνου γίνεται με τη χρήση της βιβλιοθήκης CUFFT για κάθε μία από τις αποκρίσεις των βασικών φίλτρων. Ο FFT αυτή τη φορά είναι ο αντίστροφος, ενώ το πλάνο παραμένει το ίδιο. Για να επιταχυνθεί ο υπολογισμός της κατανομής της ενέργειας σπάμε το βήμα 7 σε δύο υποβήματα, το καθένα από τα οποία αντιστοιχεί στην κλήση ενός kernel. Πρώτα υπολογίζουμε το άθροισμα: w 2 D x x D y i x, y, t y j x, y, t x, y,t D για όλους τους πιθανούς συνδυασμούς D και i. Στη συνέχεια, καλούμε το δεύτερο kernel για να υπολογίσουμε την κατανομή της ενέργειας. Ο τελευταίος kernel που καλείται, εκτελεί το βήμα 8. Ο kernel εκτελείται τόσες φορές, όσες είναι οι περιοχές στις οποίες έχουμε χωρίσει τις εικόνες μας. Για κάθε μία από αυτές βρίσκει για ποια ταχύτητα μεγιστοποιείται η κατανομή ενέργειας και δίνει την τιμή αυτή στο στοιχείο του πίνακα ταχυτήτων που αντιστοιχεί στην εν λόγω περιοχή. Οι συναρτήσεις που διαβάζουν δεδομένα εκτελούνται από τη CPU και αντιγράφονται στην κύρια μνήμη της GPU με τις εντολές που προσφέρει το προγραμματιστικό περιβάλλον της CUDA. Τέλος, πρέπει να επισημάνουμε ότι οι συντελεστές t v, οι οποίοι είναι ανεξάρτητοι από τις εικόνες και το μέγεθος τους, προϋπολογίζονται με τη χρήση του MATLAB και το πρόγραμμα σε CUDA απλώς τους διαβάζει από ένα αρχείο. Το παραπάνω γίνεται επειδή οι συντελεστές t v εξαρτώνται αποκλειστικά από την τάξη των στρεφόμενων φίλτρων, η οποία δεν αλλάζει, και από την ακρίβεια υπολογισμού της ταχύτητα, δηλαδή από μία από τις απαιτήσεις απόδοσης του προγράμματος, οι οποίες είναι γνωστές πολύ πριν την εκτέλεση του. 1 Το 2 στον εκθέτη του B δηλώνει την τάξη των φίλτρων και όχι ότι η συνάρτηση Β είναι υψωμένη στο τετράγωνο. 37

38

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA Κεφάλαιο 4 Πειραματικά Αποτελέσματα Αρχικά, ο αλγόριθμος γράφτηκε και εκτελέστηκε στο MATLAB, με τη χρήση των συναρτήσεων που προσφέρει αυτή το προγραμματιστικό περιβάλλον για την επιτάχυνση των πράξεων μεταξύ πινάκων. Αφού επιβεβαιώθηκε η σωστή λειτουργία του, το πρόγραμμα ξαναγράφτηκε σε CUDA και εκτελέστηκε σε τέσσερις διαφορετικές GPU. Στα πειράματα μας χρησιμοποιήθηκαν τρία σετ εικόνων, δύο από τα οποία αποτελούνται από συνθετικές εικόνες, ενώ στο τρίτο σετ απεικονίζεται μια πραγματική σκηνή. Οι χρόνοι εκτέλεσης που εμφανίζονται στους πίνακες και τα διαγράμματα αντιστοιχούν στο μέσο όρο της χρονικής διάρκειας δέκα διαδοχικών εκτελέσεων του εκάστοτε πειράματος. Προτού προχωρήσουμε στην παράθεση των αποτελεσμάτων οφείλει να διευκρινιστεί ότι η μέγιστη ταχύτητα που μπορεί να ανιχνευτεί από την παρούσα υλοποίηση είναι τα ±4 pixels/frame ανά άξονα, πρακτικά όμως για ταχύτητες μεγαλύτερες των 2.5-3 pixel/frame, το πρόγραμμα παύει να παράγει σωστά αποτελέσματα. Οι ταχύτητες κίνησης υπολογίστηκαν με ακρίβεια 0,1, 0,2, 0,3, 0,4 και 0,5 pixels/frame ενώ στον πίνακα 4-1 μπορεί κανείς να δει το πλήθος των πιθανών ταχυτήτων στο διάστημα [-4,4] που αντιστοιχούν σε κάθε ανάλυση. 39

Πειραματικά Αποτελέσματα Ακρίβεια Πιθανές ταχύτητες ανά άξονα Συνολικές πιθανές ταχύτητες 0,1 81 6561 0,2 41 1681 0,3 27 729 0,4 21 441 0,5 17 289 Πίνακας 4-1: Διακριτική ικανότητα αλγορίθμου - Πλήθος πιθανών ταχυτήτων στο [-4,4] Η πρώτη σειρά εικόνων που μελετήθηκε είναι η σειρά Yosemite, η οποία δημιουργήθηκε από τον Lynn Quam στο Stanford Research Institute και αποτελείται από συνθετικές εικόνες που απεικονίζουν μια πτήση πάνω από την ομώνυμη κοιλάδα. Τα σύννεφα κινούνται με ταχύτητα 2 pixels/frame, ενώ οι ταχύτητες στο κάτω αριστερό κομμάτι της εικόνας είναι 4-5 pixels/frame. Η συνέχεια της φωτεινότητας δεν ισχύει για τα σύννεφα, καθώς υπάρχει επικάλυψη του ορίζοντα από τις κορυφές του βουνού. Εικόνα 4-1: 1o frame από τη σειρά Yosemite [21] Εικόνα 4-2: 7o frame από τη σειρά Yosemite [21] Όπως αναφέρθηκε και στο Κεφάλαιο 2, η εικόνα χωρίστηκε σε αλληλεπικαλυπτόμενες περιοχές των 20x20 pixels, και η ταχύτητα υπολογίστηκε ξεχωριστά για κάθε μία από αυτές. Δεδομένου του μεγέθους των εικόνων της πρώτης σειράς, που είναι 252x316, οι εικόνες χωρίστηκαν σε 25x31 περιοχές στον κατακόρυφο και οριζόντιο άξονα αντίστοιχα. Στα υλοποιημένα πειράματα, υπολογίστηκε η ταχύτητα στο 7ο frame της σειρά Yosemite με σύννεφα, μελετώντας τα frames 1-14. Η ταχύτητα αυτή φαίνεται στην εικόνα 4-3, ενώ ο χάρτης των πραγματικών ταχυτήτων μπορεί να βρεθεί στην εικόνα 4-4. 40

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA Εικόνα 4-3: Yosemite sequence, Χάρτης ταχυτήτων για σ = 0.5, σ 1 = π/2 Εικόνα 4-4: Yosemite sequence, πραγματικές ταχύτητες [5] Η εικόνα 4-4 δεν περιλαμβάνει τις ταχύτητες για την περιοχή του ορίζοντα και ενώ ο αλγόριθμος στις περιοχές όπου η φωτεινότητα και η υφή των σύννεφων άλλαξε, παρουσιάζει κάποια λάθη. Οι μέσοι χρόνοι εκτέλεσης του προγράμματος στο MATLAB, για τα διάφορα βήματα αναζήτησης ταχύτητας παρουσιάζονται στον πίνακα 4-2. Βήμα Αναζήτησης Ταχύτητας (pixel) 0,1 0,2 0,3 0,4 0,5 MATLAB 47,77 s 16,03 s 9,88 s 7,93 s 6,95 s Πίνακας 4-2: Yosemite Sequence, Χρόνοι εκτέλεσης σε MATLAB Τόσο από τον πίνακα 4-2, όσο και από το διάγραμμα 4-12 γίνεται εμφανές ότι ο χρόνος εκτέλεσης εξαρτάται από το βήμα αναζήτησης ταχύτητας, δηλαδή από την ανάλυση που προσφέρεται στον υπολογισμό της ταχύτητας. Το παραπάνω, οφείλεται στο γεγονός ότι το πλήθος των πιθανών ταχυτήτων που εξετάζονται ανά άξονα δίνεται από τον τύπο 8/ βήματαχύτητας + 1, ήτοι το συνολικό πλήθος των διαφορετικών ταχυτήτων για ακρίβεια 0,1 pixels/frame είναι τετραπλάσιο από αυτό για 0,2 pixels/frame κ.ο.κ. 41

Πειραματικά Αποτελέσματα 5 0 Y o s e m i t e S e q u e n c e - M A T L A B I n t e l i 5 7 5 0 @ 2. 6 7 G H z E x e c u t i o n T i m e ( s e c o n d s ) 4 0 3 0 2 0 1 0 0 0. 1 0. 1 5 0. 2 0. 2 5 0. 3 0. 3 5 0. 4 0. 4 5 0. 5 V e l o c i t y R e s o l u t i o n ( p i x e l s / f r a m e ) Εικόνα 4-5: Yosemite Sequence, Χρόνοι εκτέλεσης σε MATLAB Παρ' όλα αυτά παρατηρούμε ότι η σχέση μεταξύ του πλήθους των πιθανών ταχυτήτων και του χρόνου εκτέλεσης δεν είναι γραμμική (εικόνα 4-5), καθώς για αναλύσεις ταχύτητας μικρότερες ή ίσες των 0,2 pixels/frame η διαφορά ανάμεσα στις καμπύλες του ποσοστού μείωσης του χρόνου εκτέλεσης και του ποσοστού μείωσης του πλήθους των ταχυτήτων αυξάνεται. Αυτό συμβαίνει επειδή ο χρόνος εκτέλεσης καθορίζεται και από άλλες μεταβλητές πέρα του πλήθους περιοχών, όπως είναι το μέγεθος εικόνας, το πλήθος των περιοχών, ο κώδικας C που εκτελείται αποκλειστικά στη CPU και ο χρόνος προσπέλασης της κύριας μνήμης του υπολογιστή. Όσο ο αριθμός των ταχυτήτων που εξετάζονται μειώνεται τόσο πιο έντονη γίνεται η επιρροή των υπολοίπων παραμέτρων. 1 0 0 8 0 % D e c r e a s e o f t h e E x e c u t i o n T i m e % D e c r e a s e o f t h e N u m b e r P o s s i b l e V e l o c i t i e s 6 0 % 4 0 2 0 0 0, 1 V s 0, 2 0, 2 V s 0, 3 0, 3 V s 0, 4 0, 4 V s 0, 5 V e l o c i t y R e s o l u t i o n ( p i x e l s ) Εικόνα 4-6: Yosemite Sequence, Μεταβολή πλήθους πιθανών ταχυτήτων και χρόνου εκτέλεσης 42

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA Οι χρόνοι εκτέλεσης στις GPU ακολουθούν μια παρόμοια καμπύλη με αυτούς του MATLAB (εικόνα 4-5). Η Quadro NVS προσφέρει επιτάχυνση μόλις 75%, διότι έχει μόλις 16 cuda cores και λειτουργεί στη χαμηλότερη συχνότητα σε σχέση με τις υπόλοιπες GPU. Όπως ήταν αναμενόμενο, τις καλύτερες επιδόσεις τις έχουμε στην GeForce GTX 480 που έχει το μέγιστο αριθμό πυρήνων και την πιο γρήγορη μνήμη. Η άμεση εξάρτηση του χρόνου εκτέλεσης από τον αριθμό των cuda cores αποτυπώνεται στον πίνακα 4-3, όπου παρατηρούμε ότι η Tesla C1060 με 240 πυρήνες είναι 1,6 φορές πιο αργή από την GeForce GTX 480 με 480 πυρήνες. Ο λόγος των χρόνων εκτέλεσης δεν είναι ακριβώς 2, καθότι υπάρχουν μέρη του προγράμματος, τα οποία εκτελούνται στη CPU και ο χρόνος εκτέλεσης τους είναι σταθερός και ανεξάρτητος από τη GPU που χρησιμοποιείται. GPU Quadro NVS 290 GeForce GTS 250 GeForce GTX 480 Βήμα Αναζήτησης Ταχύτητας (pixel) 0,1 0,2 0,3 0,4 0,5 14242,7 ms 9035,5 ms 8022,9 ms 7717,3 ms 7557,2 ms 1124,6 ms 740,4 ms 667,8 ms 645,7 ms 634,5 ms 441,6 ms 311,9 ms 289,6 ms 280,8 ms 277,9 ms Tesla C1060 725,5 ms 474,6 ms 434,5 ms 420,1 ms 412,4 ms Πίνακας 4-3: Yosemite Sequence, Χρόνοι εκτέλεσης CUDA E x e c u t i o n T i m e ( m i l i s e c o n d s ) 1 5 0 0 0 1 0 0 0 0 5 0 0 0 Y o s e m i t e S e q u e n c e - C U D A Q u a d r o N V S 2 9 0 G e F o r c e G T S 2 5 0 G e F o r c e G T X 4 8 0 T e s l a C 1 0 6 0 0 0. 1 0. 1 5 0. 2 0. 2 5 0. 3 0. 3 5 0. 4 0. 4 5 0. 5 V e l o c i t y R e s o l u t i o n ( p i x e l s / f r a m e s ) Εικόνα 4-7: Yosemite Sequence, Χρόνοι εκτέλεσης σε CUDA 43

Πειραματικά Αποτελέσματα H ορθότητα του αλγορίθμου και των συμπερασμάτων που προέκυψαν από τη μελέτη των χρόνων εκτέλεσης της σειράς εικόνων Yosemite επιβεβαιώνονται και στις υπόλοιπες σειρές εικόνων. Δεύτερο παράδειγμα συνιστά η ακολουθία εικόνων του David Fleet υπό την ονομασία Diverging Tree, κατά την κίνηση της οποίας απεικονίζεται η εστίαση της κάμερας στο κέντρο της εικόνας. Η ταχύτητα στις εικόνες κυμαίνεται από 1,29 pixels/frame στην αριστερή πλευρά, έως 1,86 pixels/frame στη δεξιά πλευρά ενώ το Εικόνα 4-8: 1o frame από τη σειρά Diverging Tree [21] μέγεθος των εικόνων της δεύτερης σειράς είναι 150x150 pixels. Ως αποτέλεσμα, οι εικόνες χωρίζονται σε 15x15 περιοχές των 20x20 pixels. Οι εικόνες που δόθηκαν στην είσοδο του προγράμματος για να υπολογιστεί η ταχύτητα είναι τα frames 1-20. H ταχύτητα που υπολόγισε ο αλγόριθμος φαίνεται στην εικόνα 4-10, ενώ η πραγματική ταχύτητα κίνησης στην εικόνα 4-11. Παρατηρούμε ότι η ταχύτητα που υπολογίστηκε από το πρόγραμμα συμπίπτει με την πραγματική στην πλειοψηφία των περιοχών, Εικόνα 4-9: 20ο frame από τη σειρά Diverging Tree [21] όπως συνέβη και στην πρώτη σειρά εικόνων. Το πλήθος των περιοχών για τις οποίες υπολογίστηκε λάθος ταχύτητα είναι σχετικά μικρό και επομένως αποδεκτό. Εικόνα 4-10: Diverging Tree Sequence, Χάρτης ταχυτήτων, σ = 1, σ1 = 3π/4 Εικόνα 4-11: Diverging Tree Sequence, πραγματικές ταχύτητες [5] 44

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA Στον πίνακα 4-4 και το διάγραμμα 4-12 δίνονται οι χρόνοι εκτέλεσης του αλγορίθμου στο MATLAB για τα διαφορετικά βήματα αναζήτησης ταχύτητας. Παρατηρούμε ότι ισχύουν τα όσα ειπώθηκαν για την πρώτη σειρά εικόνων ως προς τους χρόνους εκτέλεσης. Βήμα Αναζήτησης Ταχύτητας (pixel) 0,1 0,2 0,3 0,4 0,5 MATLAB 15,8 s 5,15 s 3,05 s 2,40 s 2,09 s Πίνακας 4-4: Diverging Tree Sequence, Χρόνοι εκτέλεσης σε MATLAB 1 6 1 4 D i v e r g i n g T r e e S e q u e n c e - M A T L A B I n t e l i 5 7 5 0 @ 2. 6 7 G H z E x e c u t i o n T i m e ( s e c o n d s ) 1 2 1 0 8 6 4 2 0. 1 0. 1 5 0. 2 0. 2 5 0. 3 0. 3 5 0. 4 0. 4 5 0. 5 V e l o c i t y R e s o l u t i o n ( p i x e l s / f r a m e ) Εικόνα 4-12: Diverging Tree Sequence, Χρόνοι εκτέλεσης σε MATLAB 8 0 7 0 % D e c r e a s e o f t h e E x e c u t i o n T i m e % D e c r e a s e o f t h e N u m b e r P o s s i b l e V e l o c i t i e s 6 0 5 0 % 4 0 3 0 2 0 1 0 0, 1 V s 0, 2 0, 2 V s 0, 3 0, 3 V s 0, 4 0, 4 V s 0, 5 V e l o c i t y R e s o l u t i o n ( p i x e l s ) Εικόνα 4-13: Diverging Tree Sequence, Μεταβολή πλήθους πιθανών ταχυτήτων και χρόνου εκτέλεσης 45

Πειραματικά Αποτελέσματα Στον πίνακα 4-5 και στο διάγραμμα 4-14 φαίνονται οι χρόνοι εκτέλεσης του προγράμματος σε GPU για τη δεύτερη σειρά εικόνων. Γίνεται εμφανές ότι όσο μικραίνει το μέγεθος των εικόνων εισόδου, τόσο λιγότερο επηρεάζεται ο χρόνος εκτέλεσης από τον αριθμό των CUDA cores. Ενώ στην πρώτη σειρά εικόνων, ο λόγος του χρόνου εκτέλεσης του προγράμματος στη GoForce GTS 250 προς το χρόνο εκτέλεσης στην GeForce GTX 480 ήταν 2,6 (Πίνακας 4-3) στη δεύτερη σειρά εικόνων είναι 2,2. Η μικρή αυτή διαφορά οφείλεται στο γεγονός ότι ο φόρτος εργασίας της GPU εξαρτάται άμεσα από το μέγεθος της εικόνας, ενώ το μοναδικό κομμάτι του κώδικα που εκτελείται στη CPU, το οποίο αλλάζει, είναι η ανάγνωση των δεδομένων. Επομένως, ο χρόνος εκτέλεσης στη GPU μειώνεται σε σημείο που γίνεται συγκρίσιμος με τον χρόνο εκτέλεσης στη CPU. Πλατφόρμα Quadro NVS 290 GeForce GTS 250 GeForce GTX 480 Βήμα Αναζήτησης Ταχύτητας (pixel) 0,1 0,2 0,3 0,4 0,5 4125,9 ms 2586,1 ms 2288,1 ms 2198,2 ms 2150,7 ms 362,7 ms 231,2 ms 207,1 ms 200,8 ms 197,9 ms 166,3 ms 101,2 ms 90,3 ms 87,6 ms 85,4 ms Tesla C1060 240,6 ms 142,5 ms 124,5 ms 120,1 ms 118,3 ms Πίνακας 4-5: Diverging Tree Sequence, Χρόνοι εκτέλεσης σε CUDA E x e c u t i o n T i m e ( s e c o n d s ) 5 0 0 0 4 0 0 0 3 0 0 0 2 0 0 0 1 0 0 0 D i v e r g i n g T r e e S e q u e n c e - C U D A Q u a d r o N V S 2 9 0 G e F o r c e G T S 2 5 0 G e F o r c e G T X 4 8 0 T e s l a C 1 0 6 0 0 0. 1 0. 1 5 0. 2 0. 2 5 0. 3 0. 3 5 0. 4 0. 4 5 0. 5 V e l o c i t y R e s o l u t i o n ( p i x e l s / f r a m e ) Εικόνα 4-14: Diverging Tree Sequence, Χρόνοι εκτέλεσης σε CUDA 46

Εκτίμηση κίνησης με τη χρήση στρεφόμενων, κατευθυντικών φίλτρων στενής ζώνης σε CUDA Εικόνα 4-15: 5031ο frame της σειράς I Don t Care [20] Εικόνα 4-16: 5045ο frame της σειράς I Don t Care [20] Η τρίτη σειρά εικόνων αποτελείται από τα frames 5031 έως 5045 του μουσικού βίντεο I Don't Care του συγκροτήματος 2ΝΕ1 και είναι μια σειρά από φυσικές εικόνες. Στο απόσπασμα που μελετήθηκε η κάμερα κινείται από δεξιά προς τα αριστερά, ενώ την ίδια στιγμή η κοπέλα στο δεξιό κομμάτι της εικόνας σηκώνει τα χέρια της. Το βίντεο αυτό, όπως προαναφέραμε, είναι ένα μη συνθετικό βίντεο, το οποίο συνδυάζει την ανθρώπινη κίνηση με την της κίνηση κάμερας. Για αυτόν ακριβώς το λόγο δεν είναι διαθέσιμες οι πραγματικές ταχύτητες κίνησης και ο έλεγχος της ορθότητας των αποτελεσμάτων επιτυγχάνεται οπτικά (σχήμα 4-17). Η διαθεσιμότητα του βίντεο I Don't Care σε ποιότητες από 1080p έως και 360p μας επιτρέπει να μελετήσουμε σε βάθος ποιο είναι το μέγιστο μέγεθος εικόνας που μπορεί να δεχθεί ο αλγόριθμος. Σε αυτό το σημείο αξίζει να υπογραμμιστεί ότι ο περιορισμός όσον αφορά το μέγεθος της εικόνας δεν καθορίζεται από το πρόγραμμα καθαυτό, αλλά από τη συσκευή, στην οποία εκτελείται το πρόγραμμα, όπως επίσης και τη μνήμη αυτής. Η διαθέσιμη μνήμη για κάθε συσκευή μπορεί να βρεθεί στο Παράρτημα Α. Τα μεγέθη εικόνας που υποστηρίζουν οι συσκευές μας παραθέτονται συνοπτικά στον πίνακα 4-6. Η Quadro NVS 290 δεν έχει επαρκή μνήμη για κανένα από αυτά τα μεγέθη εικόνας και εξαιτίας αυτού δεν εμφανίζονται στα αποτελέσματα οι χρόνοι εκτέλεσης της τρίτης σειράς εικόνων στη συγκεκριμένη GPU. 1280x720 854x480 480x270 i5 750 (MATLAB) GeForce GTS 250 - - GeForce GTX 480 - Tesla 1060 Πίνακας 4-6: Μέγεθος εικόνας που υποστηρίζουν οι GPUs 47