Meteor-Echo Detektion mit künstlicher Intelligenz (KI) / Machine Learning | Astronomie.de - Der Treffpunkt für Astronomie

Meteor-Echo Detektion mit künstlicher Intelligenz (KI) / Machine Learning

Wilm-52

Mitglied
Guten Tag.
In diesem Thread habe ich ein Programm entwickelt, das Meteor-Echos loggt.
Im Anfang war es eine Echtzeitversion, die auf einem Nvidia Jetson Computer lief. Vor einiger Zeit habe ich das Programm dann zu Windows-10 portiert und auf Postprozessing umgestellt.
Das Programm funktioniert prima, hat aber Schwachstellen. Konventionell programmierte Objekterkennung ist nie perfekt. Bild 1 zeigt, wie das Programm richtig zwischen einer Störung und einem Meteorsignal unterscheidet. Bild 2 ist ein Beispiel dafür, wo das Programm versagt. (Bild 2 wird weiter unten noch mal benötigt.) Es wäre also zusätzlicher Code nötig, der solche Fälle behandelt. Daher stand von Anfang an fest, dass das Programm mal auf KI / Maschine Learning umgestellt werden wird.

Kürzlich bin ich nun auf ein Tutorial und eine exzellente Software gestoßen; das PixelLib von Ayoola Olafenwa. Pixellib ist eine Programmbibliothek, die genau die Prozeduren zur Verfügung stellt, die für die Objekterkennung mit KI Methoden benötigt werden.
Es verwendet als zentrale KI-Programme Tensorflow und Pytorch. Die Programmiersprache ist Python3.

Zur Erkennung der Meteore möchte ich die Instanzen Segmentierung nutzen. Wie das funktioniert, sollen die Bilder Bild 3 bis Bild 6 (selbst gemacht) veranschaulichen. Die Software erkennt die Pferde und die Rinder als einzelne Instanzen, auch wenn sie unvollständig bzw verdeckt sind. Die farbigen Flächen und Ränder in den Bildern 4 und 6 wurden von mir programmiert. Damit habe ich also später Zugriff auf die Größen und Anzahl der einzelnen Echos.

Nun muss „nur“ noch ein neuronales Netzwerk mit Meteor-Spektrogrammen und Störungen trainiert werden. Dafür nimmt man üblicherweise ein vorhandenes Modell und trainiert es einfach um. Bild 1 zeigt den ersten Schritt aus diesem Prozess: Zunächst legt man eine Kontur um das Spektrogramm, welche dann als json-Datei zusammen mit dem jpg-Bild abgespeichert wird. Ob alles richtig gelaufen ist, lässt sich mit einem kleinen Tool überprüfen, s. Bild 7. Mit möglichst vielen Dateien wird dann das Trainingsprogramm gefüttert.
Ich verwende hier die Spektrum-Lab 3D Spektrogramme, aber es könnte im Prinzip auch mit anderen Darstellungsarten trainiert werden.

Fortsetzung folgt.
Viele Grüße,
Wilhelm
 

Anhänge

  • Bild_1_Beispiel_Signal&Stoerung.jpg
    Bild_1_Beispiel_Signal&Stoerung.jpg
    467,8 KB · Aufrufe: 22
  • Bild_2_Kontur_Erfassung.jpg
    Bild_2_Kontur_Erfassung.jpg
    740,4 KB · Aufrufe: 17
  • Bild_3_Cows.jpg
    Bild_3_Cows.jpg
    1,3 MB · Aufrufe: 18
  • Bild_4_Cows_instance_segmentation.jpg
    Bild_4_Cows_instance_segmentation.jpg
    578,5 KB · Aufrufe: 16
  • Bild_5_Horses.jpg
    Bild_5_Horses.jpg
    1,4 MB · Aufrufe: 13
  • Bild_6_Horses_instance_segmentation.jpg
    Bild_6_Horses_instance_segmentation.jpg
    631,4 KB · Aufrufe: 16
  • Bild_7_Trainingsdateien-erstellen.jpg
    Bild_7_Trainingsdateien-erstellen.jpg
    546,8 KB · Aufrufe: 17
Zuletzt bearbeitet:

Wilm-52

Mitglied
Ein kleines Update zur Technik:
KI / Machine Learning ist sehr rechenintensiv, so dass man zB beim Trainieren eines Modells einen Tag oder mehr benötigen würde. Aber auch das Auswerten von ein paar tausend Bildern pro Tag würde ewig lange dauern.
Nun gibt es aber zu den rechenintensiven KI-Programmen Pytorch und Tensorflow Bibliotheken zum Parallelrechnen, so dass man sie mit Nvidia Grafikkarten beschleunigen kann.
Für meine KI Experimente habe ich mir nun ein Gaming Notebook (NB) mit einer RTX3060 GPU (Grafik Prozessor Unit) gekauft. Es ist nicht das Top Modell, enthält aber 3840 Rechenkerne, die zB bei Computerspielen oder Raytracing für einen schnellen Bildaufbau sorgen.
Einen Vergleich mit meinem normalen Notebook kann ich schon zeigen: das Untersuchen des Bildes unten dauerte auf meinem normalen NB 10 Sekunden, während das Gaming NB 5 Bilder pro Sekunde schaffte.
Viele Grüße,
Wilhelm
 

Anhänge

  • Gaming-NB-RTX3060.jpg
    Gaming-NB-RTX3060.jpg
    285,5 KB · Aufrufe: 12
  • mein-PC.jpg
    mein-PC.jpg
    276,2 KB · Aufrufe: 16

Wilm-52

Mitglied
Guten Tag,
nun kann ich Euch schon erste Meteore zeigen, die von der KI-Software erkannt wurden. Zum testen habe ich nur 30 Bilder verwendet und nur wenige Epochen (= Zyklen) wurden gerechnet. Das erklärt, warum einige Meteore nicht erkannt werden und die Wahrscheinlichkeiten niedrig sind. Aber das Prinzip funktioniert und die Rechenzeiten werden dank Beschleunigung durch die Grafikkarte im Bereich von ein paar Stunden liegen.
Jetzt muss das neuronales Netzwerk noch mit vielen Daten trainiert werden. Es müssen Spektrogramme von allen mögliche Echos, von langen, kurzen, breiten, doppelten u.s.w. erfasst werden. Die zweite Klasse wird dann alle Formen von Störungen enthalten. Hier wurde die zweite Klasse durch Schmetterlinge simuliert, weil sie in großer Menge im Datensatz des Tutorials vorhanden waren.
Die abgebildeten Schmetterlinge habe ich fotografiert. Das Foto rechts ist eine UV Aufnahme, aufgenommen mit einer IR/UV offenen Kamera mit Baader Venus Filter und hat vermutlich zu wenig Kontrast fürs Machine Learning.
So richtig losgehen wird das Trainieren aber erst, wenn Ayoola Olafenwa die Bibliotheksroutinen für das Pytorch PointRend Modell veröffentlicht hat, s. zB hier:
Das Modell ist schneller und genauer als das hier benutzte Mask R-CNN Modell mit Tensorflow.
Das letzte Bild zeigt noch eine andere Anwendung. Dort ist auch der GPU Load festgehalten.
Viele Grüße,
Wilhelm

------------------------
Hier sind noch ein paar Begriffe für die Suchfunktion des Forums und für die Suchmaschinen:
Meteor Scattering, Artificial Intelligence (AI ), Machine Learning, Instance Segmentation, Tensorflow, Pytorch, Pixellib, Nvidia RTX3060-GPU, CUDA, cuDNN.
 

Anhänge

  • Instance-Segmentation-Input.jpg
    Instance-Segmentation-Input.jpg
    410,7 KB · Aufrufe: 11
  • Instance-Segmentation-Output.jpg
    Instance-Segmentation-Output.jpg
    573,9 KB · Aufrufe: 10
  • Instance-Segmentation-filled-polygons-Output.jpg
    Instance-Segmentation-filled-polygons-Output.jpg
    536,3 KB · Aufrufe: 12
  • Video-Instance-Segmentation-with-RTX3060-GPU.jpg
    Video-Instance-Segmentation-with-RTX3060-GPU.jpg
    387,5 KB · Aufrufe: 13
Zuletzt bearbeitet:

eberhard_ehret

Mitglied
...Wilhelm...das wird langsam unheimlich, was Du da an tollen Ergebnissen ablieferst...
Nachher wirst Du noch von einem Geheimdienst gekidnappt.... :cool:
LG Eberhard
 

Wilm-52

Mitglied
Eberhard, danke für deine Antwort. Was ich mache ist nichts, was einen Geheimdienst interessieren würde.
Aber es ist wohl so, dass Künstliche Intelligenz von einer gewissen Mystik umgeben ist.
Die Bezeichnung Künstliche Intelligenz ist jedoch irreführend, weil die Software natürlich nicht intelligent ist, sondern dumm wie alle andere Software auch. Besser ist der Begriff Machine Learning. Nur die Strukturen des Programms und wie man dem Programm beibringt, Objekte zu erkennen, hat man sich beim Gehirn abgeschaut, so wie man sich das Flugzeug bei den Vögeln abgeschaut hat.
Das selbstfahrende Auto zB ist auch in keiner Weise intelligent. Die so genannte KI-Software dient nur dazu, das Bild der Kamera (oder der Kameras) zu untersuchen und dann auszugeben, was sich dort mit einer gewissen Wahrscheinlichkeit vor der Linse befindet, so wie es oben in Bildern zu sehen ist. Das Ergebnis sind dann die verschiedenen Klassen, zB Mensch, Baum, Straße, Bürgersteig, Verkehrsschild usw. Dann muss eine ganz normale Software klitzeklein (if...then...else) programmiert werden, die alle möglichen Eventualitäten bis ins kleinste Detail behandelt.
Einen schönen Tag wünsche ich und
viele Grüße,
Wilhelm
 
Oben