Mahlzeit!

Ich spiele seit ein paar Tagen mit OpenCV unter Linux mit C/C++ rum. Das funktioniert recht gut muss ich sagen. Webcam zugriff, Gesichtserkennung, Gesichtsvergleich klappt alles schon recht gut.

Auf die Idee bin ich eigentlich gekommen um einer Eigenbaudrohne zu zeigen das ich ich bin. Für autonome Verfolgung. Jetzt stellt sich jedoch das Problem ein, die Software läuft schon so halbwegs, aber um weiter zu machen fehlt mir eben noch die Drohne. Deshalb habe ich mal bisschen weiter geschaut und gesehen, dass man mit OpenCV auch Entscheidungsbäume, neuronale Netze usw. aufbauen kann.

Jetzt käme an dieser Stelle meine Frage. Hat hier schon jemand Erfahrung mit solchen ANwendungen gemacht? Mir schwebt da nämlich etwas vor und ich denke da könnte mir etwas Hilfe nicht schaden.

Ich würde gerne ein Programm entwickeln, was prinzipiell nur ein paar gundsätzliche Dinge kann, versteht, beherrscht oder wie auch immer man das in dem Zusammenhang nennen mag. So eine Art minimales Unterbewusstsein. Dazu würde ich mit einem Raspi, ein kleines Autochen bauen. Das Programm soll prinzipiell nur die Möglichkeit haben die Pins anzusteuern, bzw. von dort Daten zu empfangen, sowie eben Gesichter und Gegenstände erkennen können. Ansonsten sollte es möglichst leer sein. Das Programm sollte also möglichst Alles erlernen müssen.

In etwa stelle ich mir das so vor. Ich gebe ihm ein Ziel vor. Sagen wir mal, auf einem Stick befindet sich ein Bild von einem Objekt, ein roter Würfel oder so und die Aufgabe, sich zu diesem Würfel zu bewegen. Den Rest sollte das Programm dann selbst erlernen. Es kann quasi instinktiv die Pins ansteuern und sehen was dann passiert. Das müsste dann natürlich als Erfahrung abgespeichert werden. So soll zum Beispiel dann bei Aktivierung von sagen wir Pin10 eine LED leuchten, um Nachts fahren zu können. Das soll dann eben als Erfahrung abgespeichert (wäre das dann eine Neurone?) werden. Eine Erfahrung die dem Programm sagt das es für die Fortbewegung nicht dienlich ist. Wird dann irgendwann der Pin aktiviert der einem anderen Microcontroler den Befehl gibt vorwärts zu fahren soll er das als die dienlich für das Problem anspeichern usw.

Das Ganze hat letztlich kein festes Ziel. Ich will damit also kein bestimmtes Gerät bauen sondern wirklich erleben wie das Programm lernt. Wie es mit wachsender Erfahrung auch kompliziertere Aufgaben lösen kann usw. So gesehen, anschalten und schauen wo hin es sich entwickeln kann, ob es sich entwickeln kann usw.

Dazu müsste ich aber wissen, wie baut man so ein "leeres" neurales Netz? Die Beispiele von OpenCV erklären es für mich nicht, zumindest kann ich nicht so wirklich den Zusammenhang erkennen von Kreisen, Linien und Quadrate verschieben zu so etwas. Auch werde ich aus dem Trainieren noch nicht ganz schlau.

Gibt es denn hier jemand der das Wissen hat und sich zutraut es mir näher zu bringen, bzw. die Lust hat mit da zu helfen?