Συντάχθηκε 10-07-2026 09:01
Τόπος:
Σύνδεσμος τηλεδιάσκεψης
Έναρξη: 14/07/2026 10:00
Λήξη: 14/07/2026 11:00
ΠΟΛΥΤΕΧΝΕΙΟ ΚΡΗΤΗΣ
Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών
Πρόγραμμα Προπτυχιακών Σπουδών
ΠΑΡΟΥΣΙΑΣΗ ΔΙΠΛΩΜΑΤΙΚΗΣ ΕΡΓΑΣΙΑΣ
ΝΙΚΟΛΑΟΥ ΧΕΙΛΑΔΑΚΗ
με θέμα
Αναγνώριση Αντικειμένων σε ροές video με μοντέλα Τεχνητής Νοημοσύνης στο Apache Flink
Real-time object detection in streaming video with AI models and Apache Flink
Εξεταστική Επιτροπή
Καθηγητής Ευριπίδης Πετράκης (επιβλέπων)
Καθηγητής Αντώνιος Δεληγιαννάκης
Αναπληρωτής Καθηγητής Βασίλειος Σαμολαδάς
Περίληψη
Στα πλαίσια της παρούσας διπλωματικής, υλοποιήθηκε ένα κατανεμημένο σύστημα για επεξεργασία βίντεο, αξιοποιώντας τις τεχνολογίες Apache Flink και Apache Kafka. Το σύστημα αυτό, είναι εγκατεστημένο σε cloud υποδομή με το Kubernetes να λειτουργεί ως πλατφόρμα ενορχήστρωσης. Στόχος της υλοποίησης, είναι η ανίχνευση αντικειμένων κι η ταξινόμησή τους στην κατηγορία που ανήκουν χρησιμοποιώντας το μοντέλο YOLO11, καθώς κι η εξαγωγή των τροχιών τους για πολλαπλές ροές βίντεο. Πρωταρχικό ερώτημα της εργασίας, ήταν αν το συγκεκριμένο σύστημα είναι εφικτό με την χρήση του Apache Flink, με απότερο σκοπό την αξιολόγηση των αποτελεσμάτων, τόσο των θεωρητικών εκτιμήσεων όσο των πειραματικών ευρημάτων που προέκυψαν από την ανάλυση. Η ακρίβεια των τελικών τροχιών, καθώς κι οι χρονικές αποδόσεις, αποτελούν τα κύρια αποτελέσματα της εργασίας. Βασιζόμενο στο Apache Flink για την κατανεμημένη επεξεργασία ροών και αξιοποιώντας το Apache Kafka για την διακίνηση μηνυμάτων και την ακεραιότητά τους, το σύστημα χρησιμοποιεί το προαναφερθέν μοντέλο ανίχνευσης αντικειμένων, σε συνδυασμό με αλγορίθμους μηχανικής όρασης, όπως η συγχώνευση ανιχνεύσεων για την δημιουργία ολόκληρων των αντικειμένων ανά καρέ και η παρακολούθησή τους με βάση τα κέντρα τους μαζί με την βοήθεια ενός φίλτρου Kalman για την ανάθεση των τροχιών τους. Η υλοποίηση των αλγορίθμων βασίζεται στο μοντέλο ροής δεδομένων (dataflow) που παρέχεται από το Apache Flink. Συνεπώς, τόσο το μοντέλο όσο και οι αλγόριθμοι, βρίσκονται μέσα σε ξεχωριστούς τελεστές του Flink. Με σκοπό να αξιοποιηθεί πλήρως η κατανεμημένη επεξεργασία, κάθε καρέ διασπάται σε μικρότερες δυναμικά προσαρμοζόμενες οριζόντιες λωρίδες χρησιμοποιώντας στρατηγική επικάλυψης, διασφαλίζοντας την αδιάλειπτη ανίχνευση των αντικειμένων που βρίσκονται στα όρια των τμημάτων, οι οποίες διανέμονται στους συντελεστές του Flink για ταυτόχρονη επεξεργασία. Αρχικά, όλες οι λωρίδες ενός βίντεο κατανέμονται ομοιόμορφα στα partitions του Apache Kafka κι έπειτα όλοι οι κόμβοι του Apache Flink τις επεξεργάζονται παράλληλα. Όσον αφορά την επεξεργασία, το πρώτο βήμα είναι κάθε λωρίδα να αποτελέσει την είσοδο του μοντέλου YOLO11, έτσι ώστε να ληφθούν οι πληροφορίες του κάθε αντικειμένου που περιέχει. Οι πληροφορίες αυτές περιλαμβάνουν το ορθογώνιο οριοθέτησης του αντικειμένου, το κέντρο του, την κλάση στην οποία ανήκει, καθώς και την πιθανότητα να ανήκει σε αυτήν. Έπειτα, όλα τα αναγνωρισμένα αντικείμενα του ίδιου καρέ ομαδοποιούνται και συγχωνεύονται, εφόσον πληρούν κάποιες προϋποθέσεις, έτσι ώστε να σχηματιστούν αντικείμενα σε επίπεδο καρέ. Τέλος, όλα τα αντικείμενα ενός καρέ, συγκεντρώνονται σε έναν τελεστή, ο οποίος είναι υπεύθυνος για την δημιουργία της τροχιάς κάθε αντικειμένου που εμφανίζεται στο βίντεο, με βάση τη θέση του κέντρου του και την κλάση του. Μετά την ολοκλήρωση της εξεργασίας όλων των καρέ ενός βίντεο, οι τελικές τροχιές ανακοινώνονται σε ένα άλλο Kafka topic. Η εφαρμογή εγκαταστάθηκε ως Flink Cluster πάνω σε Kubernetes cluster, με τη χρήση του Flink Kubernetes Operator. Από τα πειράματα που πραγματοποιήθηκαν σε περιβάλλον με 7 μηχανές, διαπιστώθηκε ότι το προτεινόμενο σύστημα έχει τη δυνατότητα κλιμάκωσης και υπερέχει σε απόδοση έναντι ενός μονολιθικού συστήματος, ενώ ταυτόχρονα παράγονται ακριβείς τροχιές για τα αντικείμενα στο βίντεο. Συγκεκριμένα, η εκτέλεση της εφαρμογής στο Apache Flink με παραλληλισμό 7 είναι 4.95 φορές πιο αποδοτική σε σύγκριση με την εκτέλεση με παραλληλισμό 1, που προσομοιώνει ένα πλήρως σειριακό σύστημα με ακριβή και ορθά αποτελέσματα ως προς τις τροχιές των αντικειμένων.
Abstract
In this thesis, a distributed video processing system was implemented, utilizing Apache Flink and Apache Kafka technologies. The system is deployed on a cloud infrastructure, using Kubernetes as the orchestration platform. The objective of this implementation is object detection and classification using the YOLO11 model, as well as trajectory extraction for multiple streaming or batch video sources. The main research question was whether such a system is feasible using Apache Flink, with the ultimate goal of evaluating both the theoretical estimations and the experimental findings derived from the analysis. The accuracy of the trajectories, alongside the system's speedup are the main results of this thesis. Relying on Apache Flink for distributed stream processing and Apache Kafka for message transmission and durability, the system combines the object detection model with computer vision algorithms, such as detection fusion, centroid-based object tracking and Kalman filtering. The implementation is based on the dataflow model provided by Apache Flink, where the model and the associated algorithms are implemented within separate Flink operators. To fully exploit distributed processing, each frame is split into smaller, dynamically adjusted horizontal blocks using an overlapping strategy, to ensure object detection accuracy at segment boundaries. These blocks are initially distributed uniformly across Apache Kafka partitions and then processed in parallel by an equal number of Apache Flink nodes. Regarding the processing pipeline, the first step consists of processing each block with the YOLO11 model to extract information about the objects it contains. This information includes the object's bounding box, its centroid, its class and the confidence score. Afterwards, all detected objects belonging to the same frame are grouped and fused, in order to reconstruct them at the frame level. In the final stage, all objects within a frame are aggregated into a single operator, which is responsible for extracting the trajectory of each object in the video, based on its centroid position and class. Upon completing the processing of every frame of a video, the final trajectories are published to a separate Kafka topic. The application was deployed as a Flink Cluster on top of a Kubernetes cluster, utilizing the Flink Kubernetes Operator. Experiments conducted in an environment consisting of 7 machines demonstrate that the proposed system is scalable and outperforms a monolithic architecture, while maintaining the accuracy of the trajectories. Specifically, executing the application on Apache Flink with parallelism 7 yields 4.95x performance increase compared to the execution with a parallelism 1, which simulates a serial implementation with precise object trajectory results.