zentrum für informations-
und medientechnik

FindTheDog! bei KI-Wettbewerb prämiert

Quelle: pixabay.com

Robin Köchel, Schüler aus der Jahrgangsstufe 2 am TGI, hatte vor den Sommerferien noch sein Programm dem Kollegium präsentiert – jetzt ist er damit zum Preisträger geworden! Mit dem KI-Projekt hat er bei einem von Intel ausgeschriebenen Wettbewerb eine Auszeichnung erhalten. „FindTheDog!“ wertet online Bilder auf der Suche nach vermissten Haustieren aus. Die Idee zu „FindTheDog!“ war im Rahmen der KI-AG an der it.schule entstanden – geleitet von Sandro DeGiorgi, der auch von Intel für sein Engagement und seine Ideen beim Unterrichten von KI ausgezeichnet wurde. Wir gratulieren beiden ganz herzlich!

Robin Köchel haben wir aus diesem Anlass ein paar Fragen zu seinem Projekt und seiner Begeisterung für KI gestellt:

Was ist für Sie das Faszinierende an dem Thema künstliche Intelligenz?
Roboter, die sich fast schon menschlich bewegen, KIs die Spiele spielen und damit besser sind als die menschlichen Weltmeister und Chatbots, die man nicht von einem echten Menschen unterscheiden kann, sind nur ein paar wenige Beispiele für „KIs“, die uns Menschen sehr, sehr gut nachahmen und sogar übertreffen können. Ich wollte wissen, woher die Maschinen das können und vor allem wie ich meine eigene KI schreiben kann. Es ist schon beeindruckend, wie „mächtig“ solche Programme sind und wie vielseitig sie eingesetzt werden.

Erkennt nicht nur Hunde: FindTheDog vergleicht charakteristische Eigenschaften von Haustieren

Wie funktioniert das Programm, mit dem Sie beim Wettbewerb gewonnen haben?
Mein Programm mit dem Namen ‚FindTheDog!‘ findet verlorene Haustiere anhand eines Fotos wieder oder aber es findet den Besitzer eines zugelaufenen Tieres. Von der reinen Logik des Programmes her kann man das Programm in drei Hauptbereiche unterteilen: Scraping, Bildverarbeitung und Bildvergleich. Beim Scraping werden von einem der größten Haustierreginster Deutschlands Hunderte Bilder und deren Daten von vermissten oder gefundenen Tieren heruntergeladen. Diese Bilder werden später mit dem Eingabebild verglichen. Im zweiten Schritt wird sowohl das Bild des gesuchten bzw. gefundenen Tieres als auch alle soeben automatisch heruntergeladenen Bilder bearbeitet. Die Bilder werden zurechtgeschnitten (hier kommt das erste Mal „KI“ ins Spiel). Das heißt, am Ende ist auf dem Bild nur noch das Tier zusehen. Als Nächstes wird erkannt, um was es sich überhaupt für ein Tier handelt – ist es ein Hund? Oder doch eine Katze? Nebenbei werden noch Informationen über die Farbe des Tieres gesammelt. Nachdem jetzt alle Bilder auf diese Weise bearbeitet und klassifiziert worden sind, werden alle Bilder der gefundenen/vermissten Tiere mit dem Eingabebild verglichen. In jedem Bild werden markante Punkte gefunden. Diese werden dann mit den Punkten des Eingabebildes darauf überprüft, wie gut sie übereinstimmen. Umso mehr Punkte übereinstimmen, desto besser ist das „Ranking“. Jetzt kann man die Haustiere anschauen, die am besten übereinstimmen und wenn man Glück hat, ist ja das vermisste Tier dabei. Das Programm ist in Python3.8 geschrieben wurden und benutzt viele Standard Libraries wie numpy, matplotlib und scipy. Für den Webscraping part habe ich beautifulsoup4 und requests benutzt. Den ganzen Rest habe ich hauptsächlich mit opencv und dem Framework PyTorch umgesetzt.

Wo auf dem Bild ist das Tier? Bevor verglichen werden kann, wählt das Programm zuerst den relevanten Teil des Bilds aus

Wie viel Aufwand muss man in so ein Projekt stecken? Und wie sind Sie diese Aufgabe angegangen?
Wenn ich jetzt so auf das Projekt und das letzte halbe Jahr zurückschaue muss ich sagen, dass ich enorm viel Zeit in das Projekt gesteckt habe. Da ich vor einem halben Jahr praktisch noch keine Ahnung von KI hatte und überhaupt nicht wusste, wie ich jetzt starten muss, habe ich sehr viel Zeit damit verbracht, Artikel über KI zu lesen, Tutorials zu schauen und so weiter. Den Plan von diesen drei Hauptbereichen des Programms (Scraping, Bildverarbeitung und Bildvergleich) habe ich mir schon ganz am Anfang gemacht und habe mich auch daran gehalten. Und obwohl ich diesen Plan hatte und ich genau wusste, was ich alles im Programm haben muss, hat es sehr lange gedauert, bis es dann endlich funktioniert hat und lief.
Ich wollte mit dem Teil starten, der am einfachsten ist: Klassifizieren. Danach habe ich das Zurechtschneiden der Bilder gemacht und dann das Webscraping. Als letztes und kam dann das Vergleichen der Bilder dran. Am Ende musste ich dann nur noch alles zusammensetzen und dann hat es auch ganz gut geklappt. Das reine Programmieren hat am allerwenigsten Zeit gekostet. (Wenn man mal von dem Versuch absieht, dass ich einen eigenen Klassifizierer trainieren wollte … der selbst geschriebene Klassifiziere hat es nicht in mein Programm geschafft). Da ich fast keinerlei Vorgaben hatte und mich wie gesagt auch nicht so gut auskannte, hatte ich keine Ahnung, wo ich ansetzen muss. Sollte ich eine eigene KI schreiben und trainieren oder soll ich etwas vortraniertes benutzen? Wie kann mein Programm etwas auf dem Bild erkennen? Überhaupt gibt es sooo viele verschiedene Ansätze ein Problem zu lösen… und da erst mal das Richtige zu finden, hat mich vermutlich am meisten Zeit gekostet.
Das Schwierigste war für mich immer am Ball zu bleiben und nicht aufzugeben. Es gab Wochen, da habe ich das Programm nicht ein Mal angeschaut – und dann gab es Tage bzw. eher Nächte, da habe ich stundenlang nur gelesen und programmiert. Ich hätte mir sehr viel Zeit ersparen können, wenn ich mich vorher genauer informiert hätte. Aber ich glaube, das gehört einfach dazu…

Für alle, die jetzt interessiert sind: Wie schafft man einen Einstieg in das Thema künstliche Intelligenz? Und was sollte man vorher schon können?
Das klingt jetzt vielleicht ein bisschen klischeehaft, aber man muss sich einfach für das Thema interessieren und dran bleiben. Mir persönlich hat es sehr geholfen, ein konkretes Ziel zu haben (also zum Beispiel ein Projekt). Anhand dieses Ziels hatte ich eine Richtung, in die ich gehen wollte. Und dann muss man sich da Stück für Stück durcharbeiten, bis man sein Ziel erreicht hat. Dieser Weg ist bestimmt nicht der allerbeste, schnellste und effizienteste, aber man macht echt eine Menge Erfahrungen. Auf jeden Fall sollte man programmieren können (zumindest wenn man ein richtiges lauffähiges Programm haben möchte) und einige grundlegende Programmierkonzepte verstanden haben. Die Programmiersprache Python bietet sich für KI und machine learning perfekt an, da sie sehr leicht zu lernen und einfach der Standard in der Branche ist. Wenn man sich mit der Theorie beschäftigen will, sollte man sich auf jeden Fall auf eine Menge Mathematik einstellen … Wenn man KI wirklich lernen will, ist es wahrscheinlich am besten und einfachsten, wenn man sich einen Lehrer bzw. eine Person sucht, die einem einen klaren Weg vorgibt und einem alles Wichtige beibringt. Ich glaube in der Uni/der Schule, in AGs oder Onlinekursen lernt man so ziemlich alles schneller, als wenn man versucht, sich ein völlig neues Thema selbst beizubringen.

Für den Wiedererkennungswert: Ein Logo gehört dazu

Irgendwelche weiteren Ideen für KI-Projekte, die Sie uns verraten würden?
Noch habe ich nichts konkretes geplant. Auf jeden Fall wird das nächte Projekt kleiner und ich möchte die ganzen Grundlagen nachholen, die ich mehr oder weniger in diesem Projekt übersprungen habe. Ich könnte mir vorstellen eine eigene ChatKi zu schreiben oder eine Schach-KI zu entwickeln. Mein absolutes Programmier-„Überziel“ ist eines Tages einen eigenen Sprachassistenen zu haben (so wie Jarvis von Iron Man). Da ist auf jeden Fall auch eine Menge KI mit im Spiel. Aber bis ich dieses Projekt angehe dauert es noch eine ganze Weile… es soll ja gut werden. Generell bin ich aber für wirklich alles offen. Natürlich kann ich mein FindTheDog! Programm auch noch verbessern. Da ist noch ganz viel Verbesserungspotential und Platz für neue Features. Auf jeden Fall freue ich mich auf die kommenden Projekte.

(sb)

Kontakt

it.schule stuttgart
Breitwiesenstraße 20-22
70565 Stuttgart

 

Tel.: (0711) 216-89222
Fax: (0711) 216-89279

Sekretariat

Montag – Donnerstag
7:30 – 13:30 Uhr
14:30 – 15:30 Uhr

 

Freitag
7:30 – 13:30 Uhr