Automatische Detektion von Meteor Scatter Spektrogrammen

Guten Tag,
hier ist ein schönes Beispiel, wie die KI-Methode zwei Meteor-Signale und zwei Störungen unterschiedlicher Art voneinander trennt:
Die obere Störung (1) ist ein Knackimpuls, den meine alte Software schon mühelos beseitigen konnte. Der Träger rechts im Bild (2) ist neu. Zum Glück ist er selten und liegt nicht auf der Graves Frequenz.
Geloggt werden nur die beiden Echos, wenn sie zwischen den blauen Linien liegen, sich also im 20 s Zeitfenster befinden.

Einen schönen Tag wünsche ich Euch,
viele Grüße
Wilhelm
 

Anhänge

  • GRAVES-XYmVV_230329055139.jpg
    GRAVES-XYmVV_230329055139.jpg
    192,5 KB · Aufrufe: 69
  • GRAVES-XYmVV_230329055159.jpg
    GRAVES-XYmVV_230329055159.jpg
    609,3 KB · Aufrufe: 29
  • output-GRAVES-XYmVV_230329055139.png
    output-GRAVES-XYmVV_230329055139.png
    1,2 MB · Aufrufe: 29
  • output-GRAVES-XYmVV_230329055159.png
    output-GRAVES-XYmVV_230329055159.png
    1,3 MB · Aufrufe: 31
Hallo Wilhelm,

sehr gut, ich bin gespannt, ob ich den In-line Effekt reproduztieren kann, sobald hier alles läuft.
Mit welchem Treshold filterst du die Stören?

Beste Grüße
Stefanie
 
Hallo Stefanie,
das wäre gut. Dann treffen wir uns im Juni bei den Arietiden um 11 h UT, s. erstes Bild.

Die Störungen habe ich genau so wie die Meteorechos gelabelt. Es gibt da auch keinen Threshold.

In der konventionellen Methode hat der rote Kreis am linken Rand (bei der 5) den Knackimpuls angezeigt.
Den Träger, die Störung (2), erkennt meine alte Software nicht. Ich musste Bildchen löschen oder den Träger übermalen.
Viele Grüße,
Wilhelm
 

Anhänge

  • ARI-June-9-1.png
    ARI-June-9-1.png
    113,7 KB · Aufrufe: 38
  • Stoerung&Signal.jpg
    Stoerung&Signal.jpg
    426 KB · Aufrufe: 32
Hallo Wilhelm,

ich hatte vergessen das du für die Artefakte eine eigen Klasse hast, sorry! So ist es am Genausten. Die < 5 % Falsch Positive in der Meteor Klasse könntest du noch mit der Klassen Probability vom Netztwerk rausfiltern, die stehen ja bei dir neben "Meteor:". Du kannst ja mal schauen, wie die Werte bei den Falsch Positiven sind, ich vermute deutlich unter 0.9. Deine Werte sind ja im Laufe des Trainings schön nach oben gegangen, zumindest in den Beipielen, die du hier gezeigt hast. Natürlich muss man einen Threhsold wählen, um nicht zu viele positive zu verlieren.

Ich mache jetzt mal Feierabend und genieße meinen Wein :)
Gemütlichen Abend
Stefanie
 
Hallo Stefanie,
danke für den Tipp. Die Probability (Wahrscheinlichkeit, Score) habe ich noch gar nicht ausgewertet. Ich denke noch über ein neues Datenformat nach. Da sollten die Werte auch mit rein.

Nochmal zu den Arietiden:
Im letzten Jahr hatte ich die Arietiden gar nicht auf dem Schirm und habe erst am 9. Juni gesehen, dass sie eine schöne Kerbe haben. Das Maximum am 7. Juni habe ich verpasst.
Sie beginnen aber schon ab Mitte Mai.
Einen schönen Abend noch und
viel Freude beim Genuss des Weines,
Wilhelm
 

Anhänge

  • Arietiden2022.png
    Arietiden2022.png
    43,7 KB · Aufrufe: 35
Hallo Wilhelm,

Das wird dann spannend die Daten zu vergleichen. Im Prinzip läuft es jetzt bei mir, ich mache aber noch viele Tests, da ich ab und an noch Ausfälle habe…

Die Genauigkeitswerte (also wie sicher ist das NN für diese Klasse) sind sehr praktisch um falsch Positive zu filtern. In meiner Software übergebe ich sie als Parameter, wenn es sehr präzise sein soll und man auf ein Event verzichten kann da es viele gibt- sehr strenger Threshold. Wenn ich wenig Events erwarte und wirklich hinter jedem her laufen muss - sehr lockerer Threshold. Im letzten Fall kann es dann sogar sein, dass ich kurz manuell drüber schaue. Manchmal haben wir nur sehr begrenztes Saatgut und dementsprechend wenig ROIs.

Da du so viele Meteore einfängst könntest du einen hohen Threshold wählen. Eventuell verlierst du dann 1-2% Meteore aber die restlichen sind dafür zu 100% korrekt. Bei den anderen Klassen macht es keinen Sinn einen Threshold zu nutzen, diese möchtest du ja sowieso aus der Analyse haben.

Je mehr Trainingsdaten du hast, desto besser werden auch die Genauigkeitswerte. Am Anfang lagen sie bei deinen Beispielen um 70-80%, die letzten bei >90!

Beste Grüße
Stefanie
 
Hallo Stefanie,
ich habe schnell eine Score-Statistik eingebaut.

Die Rechenzeit war nur noch 13 Minuten. Ein Pixellib-Aufruf war doppelt vorhanden.
Gute Nacht,
Wilhelm
 

Anhänge

  • Score-Histogramm.png
    Score-Histogramm.png
    288 KB · Aufrufe: 34
  • Score-im-Zeitfenster.png
    Score-im-Zeitfenster.png
    1,3 MB · Aufrufe: 33
Hallo Stefanie und Manfred und alle, die sich fürs Thema interessieren.

Hier ist ein kleines Update zur Score-Diskussion und zur Frage, die ich mich immer stelle: Wann ist ein Modell ok und wann ist es unter- oder überbestimmt?

In der Tabelle sieht man, dass die Epochen 1-6 nacheinander CNNs ausgeben. Das nächste CNN erscheint dann bei Epoche 12, dann wieder ein CNN bei Epoche 18. Normalerweise beende ich hier die Iteration und nehme z.B. Epoche 12.

Hier habe ich nun untersucht, welche Ergebnisse die verschiedenen CNNs ergeben.
Epoche 18 liefert die meisten Echos und auch die meisten kleinen Echos, wäre also die erste Wahl.

Eine zu hoher 100 % Score deutet vermutlich auch auf eine Überbestimmung hin, oder?

Stefanie, wie gehst du vor, um das beste CNN zu finden?

Nicht alle roten Punkte sind Störungen. Der letzte Plot zeigt, dass auch Untergrund detektiert wird, um ihn von langen Signalen (Rauchern) zu unterscheiden.
Der Datensatz ist von den Geminiden 2021.

Einen schönen Abend wünsche ich euch,
viele Grüße
Wilhelm
 

Anhänge

  • Background.png
    Background.png
    1,3 MB · Aufrufe: 29
  • Ergebnis-Epoche-18.png
    Ergebnis-Epoche-18.png
    320,2 KB · Aufrufe: 27
  • Tabelle.jpg
    Tabelle.jpg
    129,4 KB · Aufrufe: 28
  • Training.png
    Training.png
    326,2 KB · Aufrufe: 30
Hallo Wilhelm,

das sind berechtigte Fragen die schwierig zu beantworten sind und mit denen ich mich täglich rum quäle :) Die Antwort ist, es kommt darauf an (hilft nicht viel, ich weiß).

Ein paar Hinweise:

1) Kannst du den Verlauf des Traings plotten? Dann kannst du auch erkennen wieviele Epochen sinnvoll sind:

Dadurch kann man Under oder Overfitting recht gut erkennen und demenstprechen handeln:

2) Versuche mal ein separates Validierungsset zu erstellen. Es darf nicht in dem Trainingsset enthalten sein und sollte mindestens 500 Events beinhalten, am Besten aus diversen Meteorströmen. Dann bekommst ein Gefühl für deine Modelle und du kannst sie miteinander vergleichen.

3) Kannst du mal ein paar falsch positive Meteor Objekte raussuchen und gucken wie der Score ist?

4) Dann gibt es diverse Paramter zu tunen, learning rate, dropout, Anzahl der Layer, Anzahl der Neuronen. Das ist aber zeitintensiv und komplex, bringt normalerweise nicht so einen straken Effekt, vor allem da du schreibst, dass deine Erkennungsrate sehr hoch ist.

100% wirst du nicht erreichen, ich würde ein Model bevorzugen das ein paar Objeket verliert aber den Rest der Klassen mit über > 95 % erkennt. Dann ist es wirklich vernachlässigbar und per Hand zu kontrollieren unnnötig. Du bekommst ja auch sehr viele Events rein, 1 % Fehlerquote bei 500 Events pro Nacht ist was anderes als bei 50.

Ich hoffe das hilft ein bisschen,
ich finde es bemerkenswert was du in der letzen (kurzen) Zeit erreichst hast. Alle Modelle sind gut, beobachte einfach die tägliche Auswertung und sammle die falschen weiter. Trainiere dann erneut und weiter geht es (wenn du magst). Wie gesagt, du liegst schon im Top Bereich und den Aufwand für 1-2 % mehr Genauigkeit muss man abwegen (80-20 Regel). Ich würde einfach mal passiv beobachten, die Probleme des NN werden sich dann auf Dauer zeigen und du kannst enstprechend handeln.

Beste Grüße
Stefanie
 
Hallo Stefanie,
danke für die Tipps und die Links. Damit kann ich arbeiten.
Die 80 % - 20 % Regel ist mir auch sehr geläufig und vor allem im Haushalt sehr hilfreich.
Einen gemütlichen Abend wünsche ich Euch,
viele Grüße
Wilhelm
 
Guten Tag,
heute habe ich einen Benchtest zwischen meinem Gaming-PC mit der Nvidia 3060 GPU und meinem normalen i5-PC gemacht. Eine Stunde Daten (3. 4. 2023, 0 h) zu analysieren dauerten auf dem Gaming-PC 35 Sekunden und auf dem i5-PC 7 Minuten und 50 Sekunden (bereinigt um die Startup-Zeit). Beim Analysieren ist der GPU-Load im Bereich 30 %, während der GPU Load beim Trainieren ca. 80 % beträgt. Trainieren habe ich auf dem i5 nicht probiert.

Das Installieren von Pixellib auf dem i5 hat mich eine halbe Nacht gekostet, weil sich Tensorflow 2.5 eine ältere Numpy-Version installiert, mit der ein Modul
(scikit-image) in der aktuellen Version nicht kompatibel ist.

Folgende Reihenfolge und Versionen funktionieren:
(Python 3.9.7 ist meine benutzte Version)

pip3 install scikit-image==0.18.3
pip3 install numpy==1.19.5
pip3 install tensorflow==2.5.0
pip3 install imgaug
pip3 install pixellib --upgrade

Falls Ihr aktuellere Versionen mit pixellib zum Laufen bringt, würde mich das sehr interessieren.

Das Programm ist nun im Erprobungsmodus. Es kommen täglich etwa 1000 Echos rein und ich beobachte damit, ob irgendwo (kleine) Ströme auftauchen.
Einen sonnigen Tag wünsche ich Euch,
viele Grüße
Wilhelm
 
Zuletzt bearbeitet:
Hallo Wilhelm,

Glückwunsch das du schon im Production Modus bist ;) Pixellib läuft leider nur bis tf 2.4.1:

PixelLib supports tensorflow's version (2.0 - 2.4.1).

Beste Grüße
Stefanie
 
Hallo Stefanie.
Dankeschön! Ich schreibe demnächst noch was zu den Problemchen.

Tensorflow 2.5 läuft problemlos, seriell und parallel auf der Grafikkarte.

Wenn du runterscrollst: Ich bin WiSi-Testpilot... :)

Viele Grüße
Wilhelm
 
Zuletzt bearbeitet:
Hallo Stefanie,
vermutlich nicht. Es steht ja schon im Link. Ich hatte es nicht mehr auf dem Schirm.
Ich würde gerne ein aktuelles Softwarepaket nehmen, wenn es ähnlich einfach zu bedienen ist wie Pixellib. Hast du eine Idee, ob es so etwas gibt?
Viele Grüße,
Wilhelm
 
Hallo Wilhelm,

gibt es einen Grund warum du ein aktuelles Paket möchtest? So lange alles gut funktioniert würde ich nicht unbedingt umsteigen (never change running code :LOL: ) .

Ansonsten ist Pixellab ja nur ein bequemer Wrapper und du kannst jedem beliebige Tutorial folgen:


Du kannst auch bei kaggle in den Notebooks schauen, die Wettbewerber nutzen fast nur noch ausschlißelich Mask-C-RNNs:

Beste Grüße
Stefanie
 
Hallo Stefanie,
vielen Dank für die Infos. Damit werde ich mich beschäftigen.
Als Ingenieur mag ich prinzipiell nicht mit alten Geräten oder alter Software arbeiten. Aber es hat auch sinnvolle Gründe:
Irgend wann bekommt man nämlich Probleme mit alter Software. Zum Beispiel bekomme ich gerade das Training unter Win11 nicht zum Laufen. Später probiere ich es auf einem alten Win10 PC noch mal.
Mein Gaming Notebook habe ich seit einem Jahr nicht mehr upgedatet und es darf auch nicht ans Netz, weil ein Windows Update mir schon mal Pixellib mit CUDA und CNN zerschossen hat.
Spätestens wenn das Win10 Gaming Notebook crasht und alte Versionen nicht mehr verfügbar sind, würde so ein Projekt sterben. Daher prüfe ich gerade, ob man in aktueller Umgebung Pixellib noch zum Laufen bringt, schiele aber auch nach Alternativen.

Einen schönen Nachmittag wünsche ich dir.
Ich fahre nun in den Nachbarort zum Kaffee Trinken und muss dann noch den Rasen mähen.
Viele Grüße
Wilhelm
 
Hallo Wilhelm,

ich möchte auch immer das neuste und meistens gibt es ja auch interessante Features obendrauf :) Manchmal bin ich aus zeitgründen auch einfach froh, wenn es läuft und wenn ich dann wieder Zeit habe, investiere ich in ein Update. Ich kann dich also voll und ganz verstehen!

Ich experimentieren gerade mit zweitem SDR, bin aber nach dem Anstöpseln gleich wieder vom Boden, irgendwas raschelte da :oops: Darf der Held des Hauses begutachten :sneaky:

Ich wünsche dir viel Spaß beim Käffchen, bei uns gibt es jetzt Pizza und ein kühles Gerstengetränk. Es ist zwar sonnig aber bei 3 Grad ist man froh, wenn man wieder drin ist. Morgen fahre ich mit dem Fahrrad und Emil zum Nachbardorf Eier vom Hof kaufen. Dann endlich 2 Wochen Urlaub...

Beste Grüße
Stefanie
 
Guten Morgen.
Diesen Test muss ich noch zeigen: Um 17 h ist schön eine Starlink Gruppe zu erkennen. Der Peak um 8 h ist auch auf RMOB z.B. bei Jochen Richert um 9 h zu sehen.

Meine alte Software zeigt den Peak ebenfalls. Das Stundenhistogramm muss ich noch in die KI-Version übertragen.
-------
Das Win11 Problem ist auf Github gepostet.
-------
Auf einem älteren Win10 i3 PC habe ich mal 24 h trainiert, siehe den oberen Lauf im dritten Bild. Der Unterschied zum PC mit Nvidia 3060 Grafikkarte (unterer Lauf) ist ~Faktor 50. Man kann also durchaus auch ohne GPU trainieren, es dauert nur.
Gute Nacht wünscht
Wilhelm
 

Anhänge

  • April5-Peak-um-8h&Starlinks.png
    April5-Peak-um-8h&Starlinks.png
    412,9 KB · Aufrufe: 26
  • April5-Peak-um-8h-alte-Software.jpg
    April5-Peak-um-8h-alte-Software.jpg
    415,7 KB · Aufrufe: 27
  • Training-mit-ohne-GPU.jpg
    Training-mit-ohne-GPU.jpg
    510,1 KB · Aufrufe: 28
Zuletzt bearbeitet:
Fürs Archiv:
Das Trainieren unter Windows11 funktioniert nun. Das Problem ist wohl ein Bug im Programm labelme2coco.
Mit der allerersten Version klappt es nun.

Dies sind noch mal die Versionen und die Reihenfolge, mit denen Ihr Pixellib auf Win11 zum Laufen bringt:
pip3 install scikit-image==0.18.3
pip3 install numpy==1.19.5
pip3 install tensorflow==2.5.0
pip3 install imgaug ................................( ist 0.4.0)
pip3 install pixellib --upgrade
pip3 install labelme2coco==0.1.0

So kann man sich die Versionen anzeigen lassen:
C:\Users\wilsi>python
Python 3.9.7 (tags/v3.9.7:1016ef3, Aug 30 2021, 20:19:38) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

>>> import numpy
>>> print (numpy.__version__)
1.19.5
>>>
Eine Ausnahme ist scikit-image.
Das importiert man mit: import skimage

Viele Grüße
Wilhelm
 
Guten Tag.
Nach dem vielen Text kommen hier mal wieder Bilder.
Sehr schön ist ein Starlink-Batch um ~6 h zu sehen. Das zweite Bild ist ein schönes Beispiel für die Instanzen Segmentierung.
Ich hatte noch Starlinks nachgelabelt. Nun gibt es auch keine UFOs mehr.

Falls wir uns hier nicht mehr treffen wünsche ich allen Mitstreitern, Lesern und dem Foren Team schöne Osterfeiertage.
Ganz liebe Grüße
Wilhelm
 

Anhänge

  • 10Starlinks.png
    10Starlinks.png
    1.008,9 KB · Aufrufe: 30
  • April8-mit Starlink-Batch.png
    April8-mit Starlink-Batch.png
    213,1 KB · Aufrufe: 35
Wilhelm, kannst du bei Gelegenheit vom letzten Bild mit den Starlinks mal die Wahrscheinlichkeiten für die Meteor Klasse zeigen?
 
Hallo Stefanie,
in dem Bild sind ja keine Meteore. Daher habe ich ein Bild mit Starlinks und einem kleinen Meteor geplottet.
Kleine Echos bekommen einen schlechteren Score oder werden gar nicht erkannt, wenn große Echos in der Nähe sind. Das habe ich schon häufiger beobachtet.
Wolltest du darauf raus?
Das letzte Bild ist eins meiner Testbilder, um diesen Effekt zu prüfen.
Einen schönen Abend wünsche ich euch,
viele Grüße
Wilhelm
 

Anhänge

  • Meteor&Starlink.png
    Meteor&Starlink.png
    1,4 MB · Aufrufe: 25
  • Meteor&Starlink-Kopie.png
    Meteor&Starlink-Kopie.png
    997 KB · Aufrufe: 25
  • test-final.png
    test-final.png
    962,1 KB · Aufrufe: 27
Hallo Wilhelm,

Sorry, ich hatte mich aus Zeitgründen nicht ausreichend ausgedrückt. Wenn du in deinem Modell 3 Klassen trainierst, solltest du bei der Objektvorhersage die Wahrscheinlichkeiten der 3 Klassen bekommen. Ich weiß nicht genau ob und wie das Pixellib das zur Verfügung stellt, bei Keras geht das über model.predict():
Oder trainierst du 1 Modell pro Klasse? Mich würde im Fall von den vielen Starlink Signalen oder eigentlich für jede Klasse mal die Verteilung interessieren.

Also zum Beispiel:
Klasse 1 - Meteor
Klasse 2 - Artificial Star
Klasse 3 - Background

Wahrscheinlich Klasse:

1: 0.7
2: 0.2
3: 0.1

Ich schau mal wie Pixellib das macht…

CNN Feature Visualization ist übrigens auch cool:

Gemütlichen Abend, ich geh erstmal was verstecken…
Stefanie
 
Hallo Stefanie,
danke für die Anregungen.
Ich verstehe, weis aber nicht, wie ich an die Werte komme.

Ich trainiere ein Modell mit 3 Klassen:
segment_image.inferConfig(num_classes= 3, class_names= ["BG", "Artifical-Star", "Background", "Meteor"])

Das erste BG ist nicht von mir und gehört zu Pixellib.
Falls du es auch mal machst:
Die Klassen 1, 2, 3 müssen aufsteigend alphabetische Reihenfolge haben, sonst gibt es Durcheinander. Auch die Files im Test- und Train-Ordner beginnen bei mir mit A, B und der Rest ist für Meteore.

Viel Spaß beim Ostereier verstecken und suchen.
Viele Grüße
Wilhelm
 
Zuletzt bearbeitet:
Guten Morgen Wilhelm,

Danke für die Tipps, ich guck mal in den Ursprungscode.

So Emil sucht schon, seine Beine waren zu aufgeregt zum schlafen :LOL::LOL:
 
Guten Tag,
besonders viel habe ich über Ostern nicht gemacht, aber immerhin das Stundenhistogramm von der alten Software zur neuen übertragen. Die Skala ist hier eine andere.

Heute, am 11. April, zwischen 4 h und 5 h UT ist eine Lücke, weil ein Blitz den Vorverstärker gekillt hatte.

Gestern, am 10. April, waren es knapp 1100 Echos und ~50 Starlinks.
Ob es sich bei dem Maximum um 3 h und dem Einbruch (Kerbe) um 4-5 h um einen Strom handelt, beobachte ich noch. Es könnten die Virginiden sein.
Viele Grüße
Wilhelm
 

Anhänge

  • April10.png
    April10.png
    394,4 KB · Aufrufe: 26
  • April11.png
    April11.png
    252,1 KB · Aufrufe: 26
Zuletzt bearbeitet:
Oben