Die neue Herausforderung: Eine Flutter App zur Erkennung von Gesichtern und Logos
CODING PROJEKTE
12/7/20232 min read


Dies ist mein aktuelles Projekt das für das zweite Anwendungsprojekt der Universität Ulm, das im Software Engineering Bachelor extra gefordert wird. Bei diesem Projekt werden den Studenten verschiedene Themen in Zusammenarbeit mit verschiedenen Fachschaften, aber auch externen Unternehmen, vorgeschlagen. Ich habe mich, zusammen mit zwei Freunden aus meinem Kurs, für das Projekt O: Mobile App zur Erkennung von Logos und Gesichtern entschieden, was mehrere Gründe hatte. Zum einen sind Cross-Mobile-Frameworks wie Flutter auf einem stetigen Anstieg in der Popularität und Relevanz. Der Zusatz der Gesichtserkennung, die über neuronale Netze und deren Frameworks funktioniert, stellt eine Herausforderung dar, die nicht aktueller und spannender sein könnte. Ein weiterer äußerst auschlaggebender Punkt war die Kollaboration mit dem Software Dienstleister eXXcellent solutions um neben der Universität einen realen Einblick in die Praxis und erste Kontakte in IT-Unternehmen bekommen zu können.
Die eXXcellent solution GmbH macht nutzen von Runden Buttons (Durchmesser: 4cm) mit Aufdruck einer dazugehörigen mitarbeitenden Person, um die Zuteilung von Büroräumen und Aufgabenbereiche leicht erkennbar zu machen. Unsere Aufgabe war es nun eine bereits vorhandene Flutter-App, um die oben genannte Funktion zu erweitern. Zuerst standen das Sammeln und Aufbereiten von Daten an, um ein individuelles Modell zu trainieren. Eine langwierige und monotone Arbeit, die trotzdem mit Sorgfalt durchgeführt werden muss, um die Qualität der Daten zu garantieren. Für die Durchführung der Erkennung fiel die Wahl auf das Pytorch Framework zusammen mit dem Object-Detection-Model YOLOv8 von dem Unternehmen Ultralytics. Die Einarbeitung in Dart und das Flutter-Framework war zu Beginn anspruchsvoll, wurde aber mit der Zeit leichter gegeben durch die Masse an Ressourcen, die Online zu finden sind. In einem Scrum ähnlichen Prozess definierten wir unsere Sprint-Ziele und mussten auch nach verschiedenen Revisionen unsere Anforderungen anpassen und nachdem sich die intensive Akkunutzung der Live-Object-Detection als Problem herausstellte, auch komplette Features verwerfen. Nichtsdestotrotz war die Entwicklung eine spannende, großartige und innovative Aufgabe für uns angehende Entwickler.
Eine weitere große Herausforderung stellte das Einlernen von neuen Mitarbeitern dar, das zwar händisch problemlos möglich ist, aber auch viel Aufwand mit sich bringt. Die Automatisation dieses Prozesses nahm ich mir an und überlegte mir, wie ich das automatische Annotieren der geschossenen Bilder, das Exportieren in das YOLO-Annotationsformat, das Trainieren des neuen Modells basierend auf dem vorherigen und schließlich die Übertragung auf das Mobile Endgerät effizient und effektiv lösen kann. Meine Lösung bestand aus einem Web-Server, geschrieben in Python, der eine zweite KI, die auf die Erkennung der Buttons trainiert ist und eine aktive Führung von Versionshistorien, welche die automatische Aktualisierung der Mobile-App ermöglicht.
Insgesamt war dies eines der interessantesten Projekte, die ich je angegangen bin. Es gab mir die Möglichkeit nicht nur meine Fähigkeiten im Prozessmanagement und tiefergehende Kenntnisse zu Technologien wie GitLab und Python zu erwerben, sondern konnte auch meinen Tech-Horizont mit dem Umgang neuer Technologien wie Flutter, Dart, Pytorch, Webservern und mehr zu erweitern.
Kontakt
yannik.bleilinger@t-online.de